WooCommerce Germanized - Version 3.3.0

Version Description

  • Feature: Deutsche Post Internetmarke integration
  • Feature: Packaging options for shipments
  • Feature: Recalculate unit price via AJAX in case price HTML changes
  • Improvement: Added gender neutral title option and empty option
  • Improvement: Net price voucher tax calculation
  • Improvement: Explicitly exclude admins from possible account cleanup
  • Improvement: Make last parameter optional for BCC headers to prevent third party problems
  • Improvement: Add to cart variation JS price detecting
  • Fix: Use order total - refund total for SEPA Export
Download this release

Release Info

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

Code changes from version 3.2.3 to 3.3.0

Files changed (155) hide show
  1. assets/css/admin-activation.css +3 -1
  2. assets/css/admin-activation.min.css +1 -1
  3. assets/css/admin-activation.scss +2 -0
  4. assets/images/create-dp-label.png +0 -0
  5. assets/js/add-to-cart-variation.js +9 -9
  6. assets/js/add-to-cart-variation.min.js +1 -1
  7. assets/js/single-product.js +136 -0
  8. assets/js/single-product.min.js +1 -0
  9. i18n/languages/woocommerce-germanized-de_DE.mo +0 -0
  10. i18n/languages/woocommerce-germanized-de_DE.po +1367 -585
  11. i18n/languages/woocommerce-germanized-de_DE_formal.mo +0 -0
  12. i18n/languages/woocommerce-germanized-de_DE_formal.po +1345 -583
  13. includes/admin/class-wc-gzd-admin-notices.php +7 -5
  14. includes/admin/class-wc-gzd-admin-setup-wizard.php +34 -4
  15. includes/admin/class-wc-gzd-admin-welcome.php +35 -9
  16. includes/admin/class-wc-gzd-admin.php +39 -5
  17. includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php +1 -1
  18. includes/admin/notes/class-wc-gzd-admin-note-internetmarke-importer.php +59 -0
  19. includes/admin/notes/class-wc-gzd-admin-note.php +5 -1
  20. includes/admin/settings/class-wc-gzd-settings-tab-dhl.php +33 -6
  21. includes/admin/settings/class-wc-gzd-settings-tab-general.php +1 -1
  22. includes/admin/views/setup/dhl.php +2 -2
  23. includes/admin/views/setup/internetmarke.php +22 -0
  24. includes/class-wc-gzd-ajax.php +30 -0
  25. includes/class-wc-gzd-checkout.php +108 -241
  26. includes/class-wc-gzd-coupon-helper.php +7 -3
  27. includes/class-wc-gzd-customer-helper.php +16 -3
  28. includes/class-wc-gzd-dependencies.php +1 -1
  29. includes/class-wc-gzd-emails.php +23 -1
  30. includes/class-wc-gzd-install.php +8 -1
  31. includes/class-wc-gzd-legal-checkbox.php +14 -2
  32. includes/class-wc-gzd-order-helper.php +375 -0
  33. includes/class-wc-gzd-shortcodes.php +12 -2
  34. includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php +1 -1
  35. includes/wc-gzd-cart-functions.php +2 -3
  36. includes/wc-gzd-core-functions.php +26 -10
  37. packages/woocommerce-germanized-dhl/assets/css/admin.css +41 -1
  38. packages/woocommerce-germanized-dhl/assets/css/admin.min.css +1 -1
  39. packages/woocommerce-germanized-dhl/assets/css/admin.scss +63 -0
  40. packages/woocommerce-germanized-dhl/assets/img/wp-int-eu-preview.png +0 -0
  41. packages/woocommerce-germanized-dhl/assets/img/wp-int-preview.png +0 -0
  42. packages/woocommerce-germanized-dhl/assets/js/admin-deutsche-post-label.js +119 -0
  43. packages/woocommerce-germanized-dhl/assets/js/admin-deutsche-post-label.min.js +1 -0
  44. packages/woocommerce-germanized-dhl/assets/js/admin-internetmarke.js +266 -0
  45. packages/woocommerce-germanized-dhl/assets/js/admin-internetmarke.min.js +1 -0
  46. packages/woocommerce-germanized-dhl/includes/admin/views/html-deutsche-post-additional-services.php +28 -0
  47. packages/woocommerce-germanized-dhl/includes/admin/views/html-shipment-deutsche-post-label-backbone-form.php +78 -0
  48. packages/woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php +251 -251
  49. packages/woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php +42 -1
  50. packages/woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php +395 -20
  51. packages/woocommerce-germanized-dhl/src/Admin/Admin.php +85 -4
  52. packages/woocommerce-germanized-dhl/src/Admin/{Importer.php → Importer/DHL.php} +2 -2
  53. packages/woocommerce-germanized-dhl/src/Admin/Importer/Internetmarke.php +39 -0
  54. packages/woocommerce-germanized-dhl/src/Admin/Settings.php +318 -16
  55. packages/woocommerce-germanized-dhl/src/Ajax.php +87 -0
  56. packages/woocommerce-germanized-dhl/src/Api/ImProductList.php +486 -0
  57. packages/woocommerce-germanized-dhl/src/Api/ImProductsSoap.php +40 -0
  58. packages/woocommerce-germanized-dhl/src/Api/ImRefundSoap.php +93 -0
  59. packages/woocommerce-germanized-dhl/src/Api/ImWarenpostIntRest.php +333 -0
  60. packages/woocommerce-germanized-dhl/src/Api/Internetmarke.php +785 -0
  61. packages/woocommerce-germanized-dhl/src/Api/LabelSoap.php +28 -49
  62. packages/woocommerce-germanized-dhl/src/Api/Paket.php +9 -1
  63. packages/woocommerce-germanized-dhl/src/Api/ParcelRest.php +1 -1
  64. packages/woocommerce-germanized-dhl/src/Api/Rest.php +58 -42
  65. packages/woocommerce-germanized-dhl/src/Api/ReturnRest.php +1 -1
  66. packages/woocommerce-germanized-dhl/src/Api/Soap.php +5 -0
  67. packages/woocommerce-germanized-dhl/src/Automation.php +11 -1
  68. packages/woocommerce-germanized-dhl/src/DataStores/Label.php +13 -4
  69. packages/woocommerce-germanized-dhl/src/DeutschePostLabel.php +138 -0
  70. packages/woocommerce-germanized-dhl/src/DeutschePostReturnLabel.php +20 -0
  71. packages/woocommerce-germanized-dhl/src/DownloadHandler.php +1 -2
  72. packages/woocommerce-germanized-dhl/src/Install.php +41 -0
  73. packages/woocommerce-germanized-dhl/src/Label.php +1 -3
  74. packages/woocommerce-germanized-dhl/src/LabelWatcher.php +38 -1
  75. packages/woocommerce-germanized-dhl/src/Package.php +166 -22
  76. packages/woocommerce-germanized-dhl/src/ParcelLocator.php +7 -5
  77. packages/woocommerce-germanized-dhl/src/ReturnLabel.php +7 -8
  78. packages/woocommerce-germanized-dhl/src/ShipmentLabelWatcher.php +61 -1
  79. packages/woocommerce-germanized-dhl/src/{ShippingProviderDHL.php → ShippingProvider/DHL.php} +8 -3
  80. packages/woocommerce-germanized-dhl/src/ShippingProvider/DeutschePost.php +89 -0
  81. packages/woocommerce-germanized-dhl/src/{ShippingProviderMethodDHL.php → ShippingProvider/MethodDHL.php} +9 -9
  82. packages/woocommerce-germanized-dhl/src/ShippingProvider/MethodDeutschePost.php +127 -0
  83. packages/woocommerce-germanized-dhl/woocommerce-germanized-dhl.php +1 -1
  84. packages/woocommerce-germanized-shipments/assets/css/admin.css +5 -1
  85. packages/woocommerce-germanized-shipments/assets/css/admin.min.css +1 -1
  86. packages/woocommerce-germanized-shipments/assets/css/admin.scss +6 -0
  87. packages/woocommerce-germanized-shipments/assets/js/admin-shipment.js +35 -0
  88. packages/woocommerce-germanized-shipments/assets/js/admin-shipment.min.js +1 -1
  89. packages/woocommerce-germanized-shipments/assets/js/admin-shipments.js +1 -0
  90. packages/woocommerce-germanized-shipments/assets/js/admin-shipments.min.js +1 -1
  91. packages/woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php +22 -11
  92. packages/woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-packaging-select.php +29 -0
  93. packages/woocommerce-germanized-shipments/includes/wc-gzd-packaging-functions.php +60 -0
  94. packages/woocommerce-germanized-shipments/src/Admin/Admin.php +189 -4
  95. packages/woocommerce-germanized-shipments/src/Admin/MetaBox.php +4 -0
  96. packages/woocommerce-germanized-shipments/src/Admin/Settings.php +27 -0
  97. packages/woocommerce-germanized-shipments/src/Ajax.php +76 -6
  98. packages/woocommerce-germanized-shipments/src/DataStores/Packaging.php +582 -0
  99. packages/woocommerce-germanized-shipments/src/DataStores/Shipment.php +4 -1
  100. packages/woocommerce-germanized-shipments/src/Install.php +93 -0
  101. packages/woocommerce-germanized-shipments/src/Interfaces/ShipmentLabel.php +0 -3
  102. packages/woocommerce-germanized-shipments/src/Interfaces/{ShipmenReturnLabel.php → ShipmentReturnLabel.php} +4 -3
  103. packages/woocommerce-germanized-shipments/src/Order.php +14 -0
  104. packages/woocommerce-germanized-shipments/src/Package.php +24 -1
  105. packages/woocommerce-germanized-shipments/src/Packaging.php +335 -0
  106. packages/woocommerce-germanized-shipments/src/PackagingFactory.php +65 -0
  107. packages/woocommerce-germanized-shipments/src/ReturnShipment.php +1 -2
  108. packages/woocommerce-germanized-shipments/src/Shipment.php +73 -5
  109. packages/woocommerce-germanized-shipments/src/ShippingProvider.php +7 -3
  110. packages/woocommerce-germanized-shipments/src/SimpleShipment.php +13 -1
  111. packages/woocommerce-germanized-shipments/woocommerce-germanized-shipments.php +1 -1
  112. packages/woocommerce-trusted-shops/src/Package.php +1 -1
  113. packages/woocommerce-trusted-shops/woocommerce-trusted-shops.php +1 -1
  114. readme.txt +17 -10
  115. templates/global/complaints.php +3 -1
  116. vendor/autoload.php +1 -1
  117. vendor/autoload_packages.php +6 -121
  118. vendor/automattic/jetpack-autoloader/src/AutoloadGenerator.php +300 -128
  119. vendor/automattic/jetpack-autoloader/src/AutoloadProcessor.php +180 -0
  120. vendor/automattic/jetpack-autoloader/src/CustomAutoloaderPlugin.php +84 -13
  121. vendor/automattic/jetpack-autoloader/src/ManifestGenerator.php +121 -0
  122. vendor/automattic/jetpack-autoloader/src/autoload.php +3 -116
  123. vendor/automattic/jetpack-autoloader/src/class-autoloader-handler.php +190 -0
  124. vendor/automattic/jetpack-autoloader/src/class-autoloader-locator.php +82 -0
  125. vendor/automattic/jetpack-autoloader/src/class-manifest-handler.php +99 -0
  126. vendor/automattic/jetpack-autoloader/src/class-plugins-handler.php +129 -0
  127. vendor/automattic/jetpack-autoloader/src/class-version-loader.php +156 -0
  128. vendor/automattic/jetpack-autoloader/src/class-version-selector.php +61 -0
  129. vendor/automattic/jetpack-autoloader/src/functions.php +66 -0
  130. vendor/{setasign/fpdi-fpdf/LICENSE.txt → baltpeter/internetmarke-php/LICENSE} +1 -1
  131. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/Address.php +133 -0
  132. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/AddressBinding.php +55 -0
  133. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/ApiResult.php +34 -0
  134. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/CompanyName.php +55 -0
  135. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/LabelCount.php +53 -0
  136. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/LabelSpacing.php +53 -0
  137. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/Margin.php +93 -0
  138. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/Name.php +57 -0
  139. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/NamedAddress.php +55 -0
  140. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/OrderItem.php +115 -0
  141. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/PageFormat.php +155 -0
  142. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/PageLayout.php +115 -0
  143. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/PartnerInformation.php +93 -0
  144. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/PersonName.php +93 -0
  145. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/PortokasseCharge.php +107 -0
  146. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/Position.php +73 -0
  147. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/PublicGalleryItem.php +93 -0
  148. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/Service.php +178 -0
  149. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/Size.php +53 -0
  150. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/StampPngResult.php +75 -0
  151. vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/User.php +93 -0
  152. vendor/composer/ClassLoader.php +3 -3
  153. vendor/composer/InstalledVersions.php +317 -0
  154. vendor/composer/autoload_classmap.php +2 -0
  155. vendor/composer/autoload_classmap_package.php +0 -502
assets/css/admin-activation.css CHANGED
@@ -77,10 +77,12 @@
77
  .wc-gzd-actions a.button-primary, .wc-gzd-actions .woocommerce-gzd-message .button-primary {
78
  background-color: #262626 !important;
79
  border: 1px solid #000 !important;
80
- text-shadow: none !important; }
 
81
  .wc-gzd-actions a.button-primary:hover, .wc-gzd-actions .woocommerce-gzd-message .button-primary:hover {
82
  background-color: #363636 !important;
83
  border: 1px solid #000 !important;
 
84
  text-shadow: none !important; }
85
 
86
  .woocommerce-gzd-message .form-table tr td, .woocommerce-gzd-message .form-table tr th {
77
  .wc-gzd-actions a.button-primary, .wc-gzd-actions .woocommerce-gzd-message .button-primary {
78
  background-color: #262626 !important;
79
  border: 1px solid #000 !important;
80
+ text-shadow: none !important;
81
+ background-image: none !important; }
82
  .wc-gzd-actions a.button-primary:hover, .wc-gzd-actions .woocommerce-gzd-message .button-primary:hover {
83
  background-color: #363636 !important;
84
  border: 1px solid #000 !important;
85
+ background-image: none !important;
86
  text-shadow: none !important; }
87
 
88
  .woocommerce-gzd-message .form-table tr td, .woocommerce-gzd-message .form-table tr th {
assets/css/admin-activation.min.css CHANGED
@@ -1 +1 @@
1
- .wc-gzd-news p{line-height:1.8;font-size:15px}.wc-gzd-news .about-logo-wrapper{display:flex;flex-wrap:wrap;justify-content:flex-start}.wc-gzd-news .about-logo-wrapper .wc-gzd-logo{display:inline-block!important;text-indent:-9999px;width:298px;vertical-align:top;margin-top:2rem;height:89px;background:url(../images/germanized.svg) no-repeat;background-size:298px auto}.wc-gzd-news .about-logo-wrapper .about-text{display:inline-block;padding:0;max-width:50%;width:50%;margin:0;margin-top:1rem;margin-left:3%}.wc-gzd-news .new-feature img{align-self:center}.wc-gzd-news p.price{font-size:.8em}.wc-gzd-news .columns{display:flex;flex-wrap:wrap;margin-left:-1em;margin-right:-1em}.wc-gzd-news .columns *{box-sizing:border-box}.wc-gzd-news .columns .col{margin-right:0;padding:0 1em;width:33.3333%;align-items:center;display:inline-flex;flex-wrap:wrap}.wc-gzd-news .columns .col h4 .dashicons{margin-right:5px}.wc-gzd-news .columns .col.align-center{display:inline-flex;align-self:center}.wc-gzd-news .columns.two-col .col{width:50%}.dashboard_page_wc-gzd-about h1{width:100%;margin-right:0}.dashboard_page_wc-gzd-about h3 .wc-gzd-pro{font-size:.7em;margin-left:5px;background:0 0;border:1px solid #000;color:#000}.dashboard_page_wc-gzd-about .changelog{margin-top:3em;border-top:1px solid #ccc;padding-top:0}.dashboard_page_wc-gzd-about .feature-section{border:none}.wc-gzd-actions a.button{margin-right:.5em}.wc-gzd-actions .woocommerce-gzd-message .button-primary,.wc-gzd-actions a.button-primary{background-color:#262626!important;border:1px solid #000!important;text-shadow:none!important}.wc-gzd-actions .woocommerce-gzd-message .button-primary:hover,.wc-gzd-actions a.button-primary:hover{background-color:#363636!important;border:1px solid #000!important;text-shadow:none!important}.woocommerce-gzd-message .form-table tr td,.woocommerce-gzd-message .form-table tr th{padding:.7rem 0;margin:0}.woocommerce-gzd-message a.wc-gzd-skip{opacity:.7}div.woocommerce-gzd-message{border-left:4px solid #bb2525!important}div.woocommerce-gzd-message p{max-width:100%!important}
1
+ .wc-gzd-news p{line-height:1.8;font-size:15px}.wc-gzd-news .about-logo-wrapper{display:flex;flex-wrap:wrap;justify-content:flex-start}.wc-gzd-news .about-logo-wrapper .wc-gzd-logo{display:inline-block!important;text-indent:-9999px;width:298px;vertical-align:top;margin-top:2rem;height:89px;background:url(../images/germanized.svg) no-repeat;background-size:298px auto}.wc-gzd-news .about-logo-wrapper .about-text{display:inline-block;padding:0;max-width:50%;width:50%;margin:0;margin-top:1rem;margin-left:3%}.wc-gzd-news .new-feature img{align-self:center}.wc-gzd-news p.price{font-size:.8em}.wc-gzd-news .columns{display:flex;flex-wrap:wrap;margin-left:-1em;margin-right:-1em}.wc-gzd-news .columns *{box-sizing:border-box}.wc-gzd-news .columns .col{margin-right:0;padding:0 1em;width:33.3333%;align-items:center;display:inline-flex;flex-wrap:wrap}.wc-gzd-news .columns .col h4 .dashicons{margin-right:5px}.wc-gzd-news .columns .col.align-center{display:inline-flex;align-self:center}.wc-gzd-news .columns.two-col .col{width:50%}.dashboard_page_wc-gzd-about h1{width:100%;margin-right:0}.dashboard_page_wc-gzd-about h3 .wc-gzd-pro{font-size:.7em;margin-left:5px;background:0 0;border:1px solid #000;color:#000}.dashboard_page_wc-gzd-about .changelog{margin-top:3em;border-top:1px solid #ccc;padding-top:0}.dashboard_page_wc-gzd-about .feature-section{border:none}.wc-gzd-actions a.button{margin-right:.5em}.wc-gzd-actions .woocommerce-gzd-message .button-primary,.wc-gzd-actions a.button-primary{background-color:#262626!important;border:1px solid #000!important;text-shadow:none!important;background-image:none!important}.wc-gzd-actions .woocommerce-gzd-message .button-primary:hover,.wc-gzd-actions a.button-primary:hover{background-color:#363636!important;border:1px solid #000!important;background-image:none!important;text-shadow:none!important}.woocommerce-gzd-message .form-table tr td,.woocommerce-gzd-message .form-table tr th{padding:.7rem 0;margin:0}.woocommerce-gzd-message a.wc-gzd-skip{opacity:.7}div.woocommerce-gzd-message{border-left:4px solid #bb2525!important}div.woocommerce-gzd-message p{max-width:100%!important}
assets/css/admin-activation.scss CHANGED
@@ -107,10 +107,12 @@
107
  background-color: #262626 !important;
108
  border: 1px solid #000 !important;
109
  text-shadow: none !important;
 
110
 
111
  &:hover {
112
  background-color: #363636 !important;
113
  border: 1px solid #000 !important;
 
114
  text-shadow: none !important;
115
  }
116
  }
107
  background-color: #262626 !important;
108
  border: 1px solid #000 !important;
109
  text-shadow: none !important;
110
+ background-image: none !important;
111
 
112
  &:hover {
113
  background-color: #363636 !important;
114
  border: 1px solid #000 !important;
115
+ background-image: none !important;
116
  text-shadow: none !important;
117
  }
118
  }
assets/images/create-dp-label.png ADDED
Binary file
assets/js/add-to-cart-variation.js CHANGED
@@ -80,9 +80,9 @@
80
  var form = event.data.GermanizedvariationForm,
81
  $wrapper = form.$wrapper;
82
 
83
- if ( ! $wrapper.find( wc_gzd_add_to_cart_variation_params.price_selector + ':first' ).hasClass( 'variation_modified' ) ) {
84
 
85
- $wrapper.append( '<div class="org_price org_product_info">' + $wrapper.find( wc_gzd_add_to_cart_variation_params.price_selector + ':not(.price-unit):first' ).html() + '</div>' );
86
 
87
  if ( $wrapper.find( '.delivery-time-info:first' ).length > 0 ) {
88
  $wrapper.append( '<div class="org_delivery_time org_product_info">' + $wrapper.find( '.delivery-time-info:first' ).html() + '</div>' );
@@ -110,8 +110,8 @@
110
  if ( variation.price_html !== '' ) {
111
  form.$singleVariation.find( '.price' ).hide();
112
 
113
- $wrapper.find( wc_gzd_add_to_cart_variation_params.price_selector + ':not(.price-unit):first' ).html( variation.price_html ).addClass( 'variation_modified' );
114
- $wrapper.find( wc_gzd_add_to_cart_variation_params.price_selector + ':not(.price-unit):first' ).find( '.price' ).contents().unwrap();
115
  }
116
 
117
  $wrapper.find( '.delivery-time-info:first' ).hide();
@@ -121,7 +121,7 @@
121
  $wrapper.find( '.product-units:first' ).hide();
122
 
123
  if ( variation.delivery_time !== '' ) {
124
- $wrapper.find( 'p.delivery-time-info:first' ).html( variation.delivery_time ).addClass('variation_modified').show();
125
  }
126
 
127
  if ( variation.tax_info !== '' ) {
@@ -136,20 +136,20 @@
136
 
137
  // Check if unit price for variable product exists and replace instead of insert
138
  if ( $wrapper.find( '.price-unit:first' ).length ) {
139
- $wrapper.find( '.price-unit:first' ).html( variation.unit_price ).addClass('variation-modified').show();
140
  } else {
141
  $wrapper.find( '.price-unit:first' ).remove();
142
- $wrapper.find( 'p.price:first' ).after('<p class="price price-unit smaller variation_modified">' + variation.unit_price + '</p>').show();
143
  }
144
  }
145
 
146
  if ( variation.product_units !== '' ) {
147
  // Check if product units for variable product exist and replace instead of insert
148
  if ( $wrapper.find( '.product-units:first' ).length ) {
149
- $wrapper.find( '.product-units:first' ).html( variation.product_units ).addClass('variation-modified').show();
150
  } else {
151
  $wrapper.find( '.product-units:first' ).remove();
152
- $wrapper.find( '.product_meta:first' ).prepend('<p class="wc-gzd-additional-info product-units-wrapper product-units variation_modified">' + variation.product_units + '</p>').show();
153
  }
154
  }
155
 
80
  var form = event.data.GermanizedvariationForm,
81
  $wrapper = form.$wrapper;
82
 
83
+ if ( ! $wrapper.find( wc_gzd_add_to_cart_variation_params.price_selector + ':visible:first' ).hasClass( 'variation_modified' ) ) {
84
 
85
+ $wrapper.append( '<div class="org_price org_product_info">' + $wrapper.find( wc_gzd_add_to_cart_variation_params.price_selector + ':not(.price-unit):visible:first' ).html() + '</div>' );
86
 
87
  if ( $wrapper.find( '.delivery-time-info:first' ).length > 0 ) {
88
  $wrapper.append( '<div class="org_delivery_time org_product_info">' + $wrapper.find( '.delivery-time-info:first' ).html() + '</div>' );
110
  if ( variation.price_html !== '' ) {
111
  form.$singleVariation.find( '.price' ).hide();
112
 
113
+ $wrapper.find( wc_gzd_add_to_cart_variation_params.price_selector + ':not(.price-unit):visible:first' ).html( variation.price_html ).addClass( 'variation_modified' );
114
+ $wrapper.find( wc_gzd_add_to_cart_variation_params.price_selector + ':not(.price-unit):visible:first' ).find( '.price' ).contents().unwrap();
115
  }
116
 
117
  $wrapper.find( '.delivery-time-info:first' ).hide();
121
  $wrapper.find( '.product-units:first' ).hide();
122
 
123
  if ( variation.delivery_time !== '' ) {
124
+ $wrapper.find( 'p.delivery-time-info:first' ).html( variation.delivery_time ).addClass( 'variation_modified' ).show();
125
  }
126
 
127
  if ( variation.tax_info !== '' ) {
136
 
137
  // Check if unit price for variable product exists and replace instead of insert
138
  if ( $wrapper.find( '.price-unit:first' ).length ) {
139
+ $wrapper.find( '.price-unit:first' ).html( variation.unit_price ).addClass( 'variation-modified' ).show();
140
  } else {
141
  $wrapper.find( '.price-unit:first' ).remove();
142
+ $wrapper.find( 'p.price:first' ).after( '<p class="price price-unit smaller variation_modified">' + variation.unit_price + '</p>' ).show();
143
  }
144
  }
145
 
146
  if ( variation.product_units !== '' ) {
147
  // Check if product units for variable product exist and replace instead of insert
148
  if ( $wrapper.find( '.product-units:first' ).length ) {
149
+ $wrapper.find( '.product-units:first' ).html( variation.product_units ).addClass( 'variation-modified' ).show();
150
  } else {
151
  $wrapper.find( '.product-units:first' ).remove();
152
+ $wrapper.find( '.product_meta:first' ).prepend( '<p class="wc-gzd-additional-info product-units-wrapper product-units variation_modified">' + variation.product_units + '</p>' ).show();
153
  }
154
  }
155
 
assets/js/add-to-cart-variation.min.js CHANGED
@@ -1 +1 @@
1
- !function(i){function t(i){var t=this;t.$form=i,t.$wrapper=i.parents(wc_gzd_add_to_cart_variation_params.wrapper),t.$product=i.closest(".product"),t.variationData=i.data("product_variations"),t.$singleVariation=i.find(".single_variation"),t.$singleVariationWrap=i.find(".single_variation_wrap"),t.$resetVariations=i.find(".reset_variations"),t.$button=i.find(".single_add_to_cart_button"),t.$wrapper.length<=0&&(t.$wrapper=t.$product),i.on("click",".reset_variations",{GermanizedvariationForm:t},t.onReset),i.on("reset_data",{GermanizedvariationForm:t},t.onReset),i.on("show_variation",{GermanizedvariationForm:t},t.onShowVariation)}t.prototype.onReset=function(i){var t=i.data.GermanizedvariationForm.$wrapper;0<t.find(".org_price").length&&t.find(wc_gzd_add_to_cart_variation_params.price_selector+".variation_modified:not(.price-unit)").html(t.find(".org_price").html()).removeClass("variation_modified").show(),0<t.find(".org_delivery_time").length&&t.find(".delivery-time-info:first").html(t.find(".org_delivery_time").html()).removeClass("variation_modified").show(),0<t.find(".org_unit_price").length&&t.find(".price-unit:first").html(t.find(".org_unit_price").html()).removeClass("variation_modified").show(),0<t.find(".org_tax_info").length&&t.find(".tax-info:first").html(t.find(".org_tax_info").html()).removeClass("variation_modified").show(),0<t.find(".org_shipping_costs_info").length&&t.find(".shipping-costs-info:first").html(t.find(".org_shipping_costs_info").html()).removeClass("variation_modified").show(),0<t.find(".org_product_units").length&&t.find(".product-units:first").html(t.find(".org_product_units").html()).removeClass("variation_modified").show(),t.find(".org_product_info").remove(),t.find(".variation_modified").remove(),i.data.GermanizedvariationForm.$form.trigger("germanized_reset_data")},t.prototype.onUpdate=function(i){setTimeout(function(){void 0!==i.data&&i.data.hasOwnProperty("GermanizedvariationForm")&&void 0!==i.data.GermanizedvariationForm&&(i.data.GermanizedvariationForm.$button.is("[disabled]")||i.data.GermanizedvariationForm.$button.hasClass("disabled"))&&i.data.GermanizedvariationForm.onReset(i)},250)},t.prototype.onShowVariation=function(i,t,r){var n=i.data.GermanizedvariationForm,i=n.$wrapper;i.find(wc_gzd_add_to_cart_variation_params.price_selector+":first").hasClass("variation_modified")||(i.append('<div class="org_price org_product_info">'+i.find(wc_gzd_add_to_cart_variation_params.price_selector+":not(.price-unit):first").html()+"</div>"),0<i.find(".delivery-time-info:first").length&&i.append('<div class="org_delivery_time org_product_info">'+i.find(".delivery-time-info:first").html()+"</div>"),0<i.find(".tax-info:first").length&&i.append('<div class="org_tax_info org_product_info">'+i.find(".tax-info:first").html()+"</div>"),0<i.find(".shipping-costs-info:first").length&&i.append('<div class="org_shipping_costs_info org_product_info">'+i.find(".shipping-costs-info:first").html()+"</div>"),0<i.find(".price-unit:first").length&&i.append('<div class="org_unit_price org_product_info">'+i.find(".price-unit:first").html()+"</div>"),0<i.find(".product-units:first").length&&i.append('<div class="org_product_units org_product_info">'+i.find(".product-units:first").html()+"</div>"),i.find(".org_product_info").hide()),""!==t.price_html&&(n.$singleVariation.find(".price").hide(),i.find(wc_gzd_add_to_cart_variation_params.price_selector+":not(.price-unit):first").html(t.price_html).addClass("variation_modified"),i.find(wc_gzd_add_to_cart_variation_params.price_selector+":not(.price-unit):first").find(".price").contents().unwrap()),i.find(".delivery-time-info:first").hide(),i.find(".price-unit:first").hide(),i.find(".tax-info:first").hide(),i.find(".shipping-costs-info:first").hide(),i.find(".product-units:first").hide(),""!==t.delivery_time&&i.find("p.delivery-time-info:first").html(t.delivery_time).addClass("variation_modified").show(),""!==t.tax_info&&i.find(".tax-info:first").html(t.tax_info).addClass("variation_modified").show(),""!==t.shipping_costs_info&&i.find(".shipping-costs-info:first").html(t.shipping_costs_info).addClass("variation_modified").show(),""!==t.unit_price&&(i.find(".price-unit:first").length?i.find(".price-unit:first").html(t.unit_price).addClass("variation-modified").show():(i.find(".price-unit:first").remove(),i.find("p.price:first").after('<p class="price price-unit smaller variation_modified">'+t.unit_price+"</p>").show())),""!==t.product_units&&(i.find(".product-units:first").length?i.find(".product-units:first").html(t.product_units).addClass("variation-modified").show():(i.find(".product-units:first").remove(),i.find(".product_meta:first").prepend('<p class="wc-gzd-additional-info product-units-wrapper product-units variation_modified">'+t.product_units+"</p>").show())),n.$form.trigger("germanized_variation_data")},i.fn.wc_germanized_variation_form=function(){return new t(this),this},i(function(){"undefined"!=typeof wc_gzd_add_to_cart_variation_params&&i(".variations_form").each(function(){i(this).wc_germanized_variation_form()})})}(jQuery,(window,document));
1
+ !function(i){function t(i){var t=this;t.$form=i,t.$wrapper=i.parents(wc_gzd_add_to_cart_variation_params.wrapper),t.$product=i.closest(".product"),t.variationData=i.data("product_variations"),t.$singleVariation=i.find(".single_variation"),t.$singleVariationWrap=i.find(".single_variation_wrap"),t.$resetVariations=i.find(".reset_variations"),t.$button=i.find(".single_add_to_cart_button"),t.$wrapper.length<=0&&(t.$wrapper=t.$product),i.on("click",".reset_variations",{GermanizedvariationForm:t},t.onReset),i.on("reset_data",{GermanizedvariationForm:t},t.onReset),i.on("show_variation",{GermanizedvariationForm:t},t.onShowVariation)}t.prototype.onReset=function(i){var t=i.data.GermanizedvariationForm.$wrapper;0<t.find(".org_price").length&&t.find(wc_gzd_add_to_cart_variation_params.price_selector+".variation_modified:not(.price-unit)").html(t.find(".org_price").html()).removeClass("variation_modified").show(),0<t.find(".org_delivery_time").length&&t.find(".delivery-time-info:first").html(t.find(".org_delivery_time").html()).removeClass("variation_modified").show(),0<t.find(".org_unit_price").length&&t.find(".price-unit:first").html(t.find(".org_unit_price").html()).removeClass("variation_modified").show(),0<t.find(".org_tax_info").length&&t.find(".tax-info:first").html(t.find(".org_tax_info").html()).removeClass("variation_modified").show(),0<t.find(".org_shipping_costs_info").length&&t.find(".shipping-costs-info:first").html(t.find(".org_shipping_costs_info").html()).removeClass("variation_modified").show(),0<t.find(".org_product_units").length&&t.find(".product-units:first").html(t.find(".org_product_units").html()).removeClass("variation_modified").show(),t.find(".org_product_info").remove(),t.find(".variation_modified").remove(),i.data.GermanizedvariationForm.$form.trigger("germanized_reset_data")},t.prototype.onUpdate=function(i){setTimeout(function(){void 0!==i.data&&i.data.hasOwnProperty("GermanizedvariationForm")&&void 0!==i.data.GermanizedvariationForm&&(i.data.GermanizedvariationForm.$button.is("[disabled]")||i.data.GermanizedvariationForm.$button.hasClass("disabled"))&&i.data.GermanizedvariationForm.onReset(i)},250)},t.prototype.onShowVariation=function(i,t,r){var n=i.data.GermanizedvariationForm,i=n.$wrapper;i.find(wc_gzd_add_to_cart_variation_params.price_selector+":visible:first").hasClass("variation_modified")||(i.append('<div class="org_price org_product_info">'+i.find(wc_gzd_add_to_cart_variation_params.price_selector+":not(.price-unit):visible:first").html()+"</div>"),0<i.find(".delivery-time-info:first").length&&i.append('<div class="org_delivery_time org_product_info">'+i.find(".delivery-time-info:first").html()+"</div>"),0<i.find(".tax-info:first").length&&i.append('<div class="org_tax_info org_product_info">'+i.find(".tax-info:first").html()+"</div>"),0<i.find(".shipping-costs-info:first").length&&i.append('<div class="org_shipping_costs_info org_product_info">'+i.find(".shipping-costs-info:first").html()+"</div>"),0<i.find(".price-unit:first").length&&i.append('<div class="org_unit_price org_product_info">'+i.find(".price-unit:first").html()+"</div>"),0<i.find(".product-units:first").length&&i.append('<div class="org_product_units org_product_info">'+i.find(".product-units:first").html()+"</div>"),i.find(".org_product_info").hide()),""!==t.price_html&&(n.$singleVariation.find(".price").hide(),i.find(wc_gzd_add_to_cart_variation_params.price_selector+":not(.price-unit):visible:first").html(t.price_html).addClass("variation_modified"),i.find(wc_gzd_add_to_cart_variation_params.price_selector+":not(.price-unit):visible:first").find(".price").contents().unwrap()),i.find(".delivery-time-info:first").hide(),i.find(".price-unit:first").hide(),i.find(".tax-info:first").hide(),i.find(".shipping-costs-info:first").hide(),i.find(".product-units:first").hide(),""!==t.delivery_time&&i.find("p.delivery-time-info:first").html(t.delivery_time).addClass("variation_modified").show(),""!==t.tax_info&&i.find(".tax-info:first").html(t.tax_info).addClass("variation_modified").show(),""!==t.shipping_costs_info&&i.find(".shipping-costs-info:first").html(t.shipping_costs_info).addClass("variation_modified").show(),""!==t.unit_price&&(i.find(".price-unit:first").length?i.find(".price-unit:first").html(t.unit_price).addClass("variation-modified").show():(i.find(".price-unit:first").remove(),i.find("p.price:first").after('<p class="price price-unit smaller variation_modified">'+t.unit_price+"</p>").show())),""!==t.product_units&&(i.find(".product-units:first").length?i.find(".product-units:first").html(t.product_units).addClass("variation-modified").show():(i.find(".product-units:first").remove(),i.find(".product_meta:first").prepend('<p class="wc-gzd-additional-info product-units-wrapper product-units variation_modified">'+t.product_units+"</p>").show())),n.$form.trigger("germanized_variation_data")},i.fn.wc_germanized_variation_form=function(){return new t(this),this},i(function(){"undefined"!=typeof wc_gzd_add_to_cart_variation_params&&i(".variations_form").each(function(){i(this).wc_germanized_variation_form()})})}(jQuery,(window,document));
assets/js/single-product.js ADDED
@@ -0,0 +1,136 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.germanized = window.germanized || {};
2
+
3
+ ( function( $, germanized ) {
4
+
5
+ germanized.single_product = {
6
+
7
+ params: {},
8
+ requests: [],
9
+ productId: 0,
10
+ variationId: 0,
11
+
12
+ init: function() {
13
+ var self = germanized.single_product;
14
+
15
+ self.params = wc_gzd_single_product_params;
16
+ self.productId = self.params.product_id;
17
+
18
+ /**
19
+ * Setup accounting jQuery script
20
+ */
21
+ accounting.settings = {
22
+ currency: {
23
+ decimal : self.params.price_decimal_sep,
24
+ thousand: self.params.price_thousand_sep,
25
+ },
26
+ number: {
27
+ decimal : self.params.price_decimal_sep,
28
+ thousand: self.params.price_thousand_sep,
29
+ }
30
+ }
31
+
32
+ $( self.params.wrapper + ' ' + self.params.price_selector + ':not(.price-unit):visible' ).bind( 'DOMSubtreeModified', self.onChangePrice );
33
+
34
+ /**
35
+ * Maybe update variationId to make sure we are transmitting the
36
+ * right product id to the AJAX call.
37
+ */
38
+ if ( $( '.variations_form' ).length > 0 ) {
39
+ $( '.variations_form' ).each( function() {
40
+ var $form = $( this );
41
+
42
+ $form.on( 'reset_data', self.onResetVariation );
43
+ $form.on( 'found_variation.wc-variation-form', self.onFoundVariation );
44
+ });
45
+ }
46
+ },
47
+
48
+ onFoundVariation: function( event, variation ) {
49
+ var self = germanized.single_product;
50
+
51
+ if ( variation.hasOwnProperty( 'variation_id' ) ) {
52
+ self.variationId = variation.variation_id;
53
+ }
54
+ },
55
+
56
+ onResetVariation: function() {
57
+ var self = germanized.single_product;
58
+
59
+ self.variationId = 0;
60
+ },
61
+
62
+ onChangePrice: function( event ) {
63
+ /**
64
+ * Need to use a tweak here to make sure our variation listener
65
+ * has already adjusted the variationId (in case necessary).
66
+ */
67
+ setTimeout(function() {
68
+ var self = germanized.single_product,
69
+ $price = $( self.params.wrapper + ' ' + self.params.price_selector + ':not(.price-unit):visible' );
70
+
71
+ event.preventDefault();
72
+
73
+ /**
74
+ * Unbind the event because using :first selectors will trigger DOMSubtreeModified again (infinite loop)
75
+ */
76
+ $( self.params.wrapper + ' ' + self.params.price_selector + ':not(.price-unit):visible' ).unbind( 'DOMSubtreeModified', self.onChangePrice );
77
+
78
+ var $unit_price = $price.parents( self.params.wrapper ).find( '.price-unit:first' ),
79
+ price = accounting.unformat( $price.find( '.amount:first' ).text() ),
80
+ sale_price = '';
81
+
82
+ /**
83
+ * Is sale?
84
+ */
85
+ if ( $price.find( '.amount' ).length > 1 ) {
86
+ sale_price = accounting.unformat( $price.find( '.amount:last' ).text() );
87
+ }
88
+
89
+ if ( $unit_price.length > 0 && price ) {
90
+ self.refreshUnitPrice( price, $unit_price, sale_price );
91
+ }
92
+
93
+ /**
94
+ * Rebind the event
95
+ */
96
+ $( self.params.wrapper + ' ' + self.params.price_selector + ':not(.price-unit):visible' ).bind( 'DOMSubtreeModified', self.onChangePrice );
97
+ }, 500 );
98
+ },
99
+
100
+ refreshUnitPrice: function( price, $unit_price, sale_price ) {
101
+ var self = germanized.single_product;
102
+
103
+ /**
104
+ * Cancel requests
105
+ */
106
+ if ( self.requests.length > 0 ) {
107
+ for ( var i = 0; i < self.requests.length; i++ ) {
108
+ self.requests[i].abort();
109
+ }
110
+ }
111
+
112
+ self.requests.push( $.ajax({
113
+ type: "POST",
114
+ url: self.params.wc_ajax_url.toString().replace( '%%endpoint%%', 'gzd_refresh_unit_price' ),
115
+ data: {
116
+ 'security': self.params.refresh_unit_price_nonce,
117
+ 'product_id': self.variationId > 0 ? self.variationId : self.productId,
118
+ 'price': price,
119
+ 'price_sale': sale_price
120
+ },
121
+ success: function( data ) {
122
+ if ( data.hasOwnProperty( 'unit_price_html' ) ) {
123
+ $unit_price.html( data.unit_price_html );
124
+ }
125
+ },
126
+ error: function( data ) {},
127
+ dataType: 'json'
128
+ } ) );
129
+ }
130
+ }
131
+
132
+ $( document ).ready( function() {
133
+ germanized.single_product.init();
134
+ });
135
+
136
+ })( jQuery, window.germanized );
assets/js/single-product.min.js ADDED
@@ -0,0 +1 @@
 
1
+ window.germanized=window.germanized||{},function(o,s){s.single_product={params:{},requests:[],productId:0,variationId:0,init:function(){var i=s.single_product;i.params=wc_gzd_single_product_params,i.productId=i.params.product_id,accounting.settings={currency:{decimal:i.params.price_decimal_sep,thousand:i.params.price_thousand_sep},number:{decimal:i.params.price_decimal_sep,thousand:i.params.price_thousand_sep}},o(i.params.wrapper+" "+i.params.price_selector+":not(.price-unit):visible").bind("DOMSubtreeModified",i.onChangePrice),0<o(".variations_form").length&&o(".variations_form").each(function(){var r=o(this);r.on("reset_data",i.onResetVariation),r.on("found_variation.wc-variation-form",i.onFoundVariation)})},onFoundVariation:function(r,i){var e=s.single_product;i.hasOwnProperty("variation_id")&&(e.variationId=i.variation_id)},onResetVariation:function(){s.single_product.variationId=0},onChangePrice:function(t){setTimeout(function(){var r=s.single_product,i=o(r.params.wrapper+" "+r.params.price_selector+":not(.price-unit):visible");t.preventDefault(),o(r.params.wrapper+" "+r.params.price_selector+":not(.price-unit):visible").unbind("DOMSubtreeModified",r.onChangePrice);var e=i.parents(r.params.wrapper).find(".price-unit:first"),n=accounting.unformat(i.find(".amount:first").text()),a="";1<i.find(".amount").length&&(a=accounting.unformat(i.find(".amount:last").text())),0<e.length&&n&&r.refreshUnitPrice(n,e,a),o(r.params.wrapper+" "+r.params.price_selector+":not(.price-unit):visible").bind("DOMSubtreeModified",r.onChangePrice)},500)},refreshUnitPrice:function(r,i,e){var n=s.single_product;if(0<n.requests.length)for(var a=0;a<n.requests.length;a++)n.requests[a].abort();n.requests.push(o.ajax({type:"POST",url:n.params.wc_ajax_url.toString().replace("%%endpoint%%","gzd_refresh_unit_price"),data:{security:n.params.refresh_unit_price_nonce,product_id:0<n.variationId?n.variationId:n.productId,price:r,price_sale:e},success:function(r){r.hasOwnProperty("unit_price_html")&&i.html(r.unit_price_html)},error:function(r){},dataType:"json"}))}},o(document).ready(function(){s.single_product.init()})}(jQuery,window.germanized);
i18n/languages/woocommerce-germanized-de_DE.mo CHANGED
Binary file
i18n/languages/woocommerce-germanized-de_DE.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: WooCommerce Germanized\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2020-10-23 11:54+0200\n"
6
- "PO-Revision-Date: 2020-10-23 11:58+0200\n"
7
  "Last-Translator: holzhannes <holzhannes@posteo.de>\n"
8
  "Language-Team: \n"
9
  "Language: de_DE\n"
@@ -11,7 +11,7 @@ msgstr ""
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
- "X-Generator: Poedit 2.4.1\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
  "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
17
  "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
@@ -39,6 +39,36 @@ msgstr ""
39
  "X-Poedit-SearchPathExcluded-12: woocommerce-trusted-shops/build\n"
40
  "X-Poedit-SearchPathExcluded-13: woocommerce-germanized/assets\n"
41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  # @ woocommerce-germanized
43
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:18
44
  msgctxt "dhl"
@@ -56,8 +86,8 @@ msgid "Duties"
56
  msgstr "Zollabgabe"
57
 
58
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:65
59
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:137
60
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:953
61
  #: woocommerce-germanized-dhl/src/ParcelServices.php:29
62
  msgctxt "dhl"
63
  msgid "Preferred Day"
@@ -71,15 +101,15 @@ msgstr "Wunschzeit"
71
 
72
  # @ woocommerce-germanized
73
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:87
74
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:165
75
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:973
76
  #: woocommerce-germanized-dhl/src/ParcelServices.php:43
77
  msgctxt "dhl"
78
  msgid "Preferred Location"
79
  msgstr "Wunschort"
80
 
81
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:98
82
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:981
83
  #: woocommerce-germanized-dhl/src/ParcelServices.php:48
84
  msgctxt "dhl"
85
  msgid "Preferred Neighbor"
@@ -92,24 +122,24 @@ msgstr "Beilage-Retourenlabel erstellen"
92
 
93
  # @ woocommerce-germanized
94
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:121
95
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:740
96
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:809
97
  msgctxt "dhl"
98
  msgid "Name"
99
  msgstr "Name"
100
 
101
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:130
102
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:747
103
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:816
104
  msgctxt "dhl"
105
  msgid "Company"
106
  msgstr "Firma"
107
 
108
  # @ woocommerce-germanized
109
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:139
110
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:379
111
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:754
112
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:823
113
  msgctxt "dhl"
114
  msgid "Street"
115
  msgstr "Straße"
@@ -122,9 +152,9 @@ msgstr "Hausnummer"
122
 
123
  # @ woocommerce-germanized
124
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:159
125
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:380
126
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:775
127
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:844
128
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder.php:27
129
  msgctxt "dhl"
130
  msgid "Postcode"
@@ -132,24 +162,24 @@ msgstr "Postleitzahl"
132
 
133
  # @ woocommerce-germanized
134
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:168
135
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:381
136
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:768
137
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:837
138
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder.php:30
139
  msgctxt "dhl"
140
  msgid "City"
141
  msgstr "Stadt"
142
 
143
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:179
144
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:791
145
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:860
146
  msgctxt "dhl"
147
  msgid "Phone"
148
  msgstr "Telefon"
149
 
150
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:188
151
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:798
152
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:867
153
  msgctxt "dhl"
154
  msgid "Email"
155
  msgstr "E-Mail"
@@ -177,7 +207,7 @@ msgstr "Alterssichtprüfung"
177
 
178
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:228
179
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:331
180
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:538
181
  msgctxt "dhl"
182
  msgid "GoGreen"
183
  msgstr "GoGreen"
@@ -199,7 +229,7 @@ msgid "No neighbor"
199
  msgstr "Keine Nachbarschaftszustellung"
200
 
201
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:272
202
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:566
203
  msgctxt "dhl"
204
  msgid "Named person only"
205
  msgstr "Persönliche Übergabe"
@@ -226,7 +256,7 @@ msgid "Minimum age"
226
  msgstr "Mindestalter"
227
 
228
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:322
229
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:587
230
  msgctxt "dhl"
231
  msgid "Premium"
232
  msgstr "Premium"
@@ -238,6 +268,7 @@ msgid "Receiver"
238
  msgstr "Empfänger"
239
 
240
  #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:15
 
241
  msgctxt "dhl"
242
  msgid "DHL Labels"
243
  msgstr "DHL Labels"
@@ -270,11 +301,13 @@ msgstr ""
270
 
271
  # @ woocommerce-germanized
272
  #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:41
 
273
  msgctxt "dhl"
274
- msgid "DHL Label Automation"
275
- msgstr "DHL Label Automatisierung"
276
 
277
  #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:44
 
278
  #, php-format
279
  msgctxt "dhl"
280
  msgid ""
@@ -314,138 +347,182 @@ msgstr ""
314
  "überschreiben die <a href=\"%s\">globalen Einstellungen</a>."
315
 
316
  # @ woocommerce-germanized
317
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
318
  msgctxt "dhl time context"
319
  msgid "None"
320
  msgstr "Keine"
321
 
322
  # @ woocommerce-germanized
323
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:45
324
- #: woocommerce-germanized-dhl/src/Api/Paket.php:272
325
  msgctxt "dhl day context"
326
  msgid "None"
327
  msgstr "Keiner"
328
 
329
  # @ woocommerce-germanized
330
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:70
331
  msgctxt "dhl"
332
  msgid "Delivery Duty Unpaid"
333
  msgstr "Delivery Duty Unpaid"
334
 
335
  # @ woocommerce-germanized
336
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:71
337
  msgctxt "dhl"
338
  msgid "Delivery Duty Paid"
339
  msgstr "Delivery Duty Paid"
340
 
341
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:72
342
  msgctxt "dhl"
343
  msgid "Delivery Duty Paid (excl. VAT )"
344
  msgstr "Delivered Duty Paid (exkl. MwSt.)"
345
 
346
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:73
347
  msgctxt "dhl"
348
  msgid "Delivery Duty Paid (excl. Duties, taxes and VAT)"
349
  msgstr "Delivery Duty Paid (exkl. Zölle, Steuern und MwSt.)"
350
 
351
  # @ woocommerce-germanized
352
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:91
353
  msgctxt "age context"
354
  msgid "None"
355
  msgstr "Keine"
356
 
357
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:92
358
  msgctxt "dhl"
359
  msgid "Minimum age of 16"
360
  msgstr "Mindestens 16 Jahre"
361
 
362
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:93
363
  msgctxt "dhl"
364
  msgid "Minimum age of 18"
365
  msgstr "Mindestens 18 Jahre"
366
 
367
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:118
368
  msgctxt "dhl"
369
  msgid "Shipment #{shipment_id} to order {order_id}"
370
  msgstr "Sendung #{shipment_id} zur Bestellung {order_id}"
371
 
372
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:134
373
  msgctxt "dhl"
374
  msgid "Return #{shipment_id} to order {order_id}"
375
  msgstr "Retoure #{shipment_id} zur Bestellung {order_id}"
376
 
377
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:150
378
  msgctxt "dhl"
379
  msgid "Return shipment #{shipment_id} to order #{order_id}"
380
  msgstr "Retourensendung #{shipment_id} zur Bestellung #{order_id}"
381
 
382
  # @ woocommerce-germanized
383
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:224
384
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:184
385
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:492
386
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:835
387
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder.php:38
388
  msgctxt "dhl"
389
  msgid "Packstation"
390
  msgstr "Packstation"
391
 
392
  # @ woocommerce-germanized
393
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:225
394
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:226
395
  msgctxt "dhl"
396
  msgid "Postfiliale"
397
  msgstr "Postfiliale"
398
 
399
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:310
400
  msgctxt "dhl"
401
  msgid "Receiver is missing or does not exist."
402
  msgstr "Empfänger fehlt oder existiert nicht."
403
 
404
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:344
 
405
  #, php-format
406
  msgctxt "dhl"
407
  msgid "Shipment order #%s does not exist"
408
  msgstr "Bestellung zur Sendung #%s existiert nicht"
409
 
410
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:386
 
 
 
 
 
 
 
 
 
 
 
411
  #, php-format
412
  msgctxt "dhl"
413
  msgid "%s of the return address is a mandatory field."
414
  msgstr "%s der Rücksendeadresse ist ein Pflichtfeld."
415
 
416
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:391
417
  msgctxt "dhl"
418
  msgid "Please either add a return company or name."
419
  msgstr ""
420
  "Bitte gib entweder einen Firmennamen oder Namen für die Rücksendeadresse an."
421
 
422
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:410
423
  msgctxt "dhl"
424
  msgid "Error while parsing preferred day."
425
  msgstr "Fehler beim Einlesen des Wunschtags."
426
 
427
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:421
428
  msgctxt "dhl"
429
  msgid "Error while parsing preferred time."
430
  msgstr "Fehler beim Einlesen der Wunschzeit."
431
 
432
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:446
433
  msgctxt "dhl"
434
  msgid "The visual min age check is invalid."
435
  msgstr "Das Alter der Alterssichtprüfung ist ungültig."
436
 
437
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:465
438
  msgctxt "dhl"
439
  msgid "The ident min age check is invalid."
440
  msgstr "Das Alter des Ident-Checks ist ungültig."
441
 
442
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:472
443
  msgctxt "dhl"
444
  msgid "There was an error parsing the date of birth for the identity check."
445
  msgstr ""
446
  "Beim Einlesen des Geburtsdatums für den Ident-Check trat ein Problem auf."
447
 
448
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:477
449
  msgctxt "dhl"
450
  msgid ""
451
  "Either a minimum age or a date of birth must be added to the ident check."
@@ -454,156 +531,174 @@ msgstr ""
454
  "hinzugefügt werden."
455
 
456
  # @ woocommerce-germanized
457
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:490
458
  #, php-format
459
  msgctxt "dhl"
460
  msgid "%s duties element does not exist."
461
  msgstr "%s Zollabgabe existiert nicht."
462
 
463
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:954
464
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1029
465
  msgctxt "dhl"
466
  msgid "Invalid shipment"
467
  msgstr "Ungültige Sendung"
468
 
469
  # @ woocommerce-germanized
470
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:958
471
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1033
472
  msgctxt "dhl"
473
  msgid "Order does not exist"
474
  msgstr "Bestellung existiert nicht"
475
 
476
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:981
477
  msgctxt "dhl"
478
  msgid "Error while creating the label instance"
479
  msgstr "Fehler beim Erstellen der Label-Instanz"
480
 
481
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1101
482
  msgctxt "dhl"
483
  msgid "Invalid label"
484
  msgstr "Ungültiges Label"
485
 
486
  # @ woocommerce-germanized
487
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1189
488
  msgctxt "dhl"
489
  msgid "DHL Retoure International A"
490
  msgstr "DHL Retoure International A"
491
 
492
  # @ woocommerce-germanized
493
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1190
494
  msgctxt "dhl"
495
  msgid "DHL Retoure International B"
496
  msgstr "DHL Retoure International B"
497
 
498
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1199
499
  msgctxt "dhl"
500
  msgid "DHL Retoure Online"
501
  msgstr "DHL Retoure Online"
502
 
503
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1210
504
  msgctxt "dhl"
505
  msgid "DHL Paket Connect"
506
  msgstr "DHL Paket Connect"
507
 
508
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1211
509
  msgctxt "dhl"
510
  msgid "DHL Europaket (B2B)"
511
  msgstr "DHL Europaket (B2B)"
512
 
513
  # @ woocommerce-germanized
514
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1212
515
  msgctxt "dhl"
516
  msgid "DHL Paket International"
517
  msgstr "DHL Paket International"
518
 
519
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1278
520
  msgctxt "dhl"
521
  msgid "DHL Paket"
522
  msgstr "DHL Paket"
523
 
524
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1279
525
  msgctxt "dhl"
526
  msgid "DHL Paket PRIO"
527
  msgstr "DHL Paket PRIO"
528
 
529
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1280
530
  msgctxt "dhl"
531
  msgid "DHL Paket Taggleich"
532
  msgstr "DHL Paket Taggleich"
533
 
534
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1281
535
  msgctxt "dhl"
536
- msgid "Warenpost"
537
- msgstr "Warenpost"
538
 
539
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1368
540
  msgctxt "dhl"
541
  msgid "Error while uploading label."
542
  msgstr "Fehler beim Hochladen des Labels."
543
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
544
  # @ woocommerce-germanized
545
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:109
546
  msgctxt "dhl"
547
  msgid "Receiver Ids"
548
  msgstr "Empfänger IDs"
549
 
550
  # @ woocommerce-germanized
551
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:116
552
  msgctxt "dhl"
553
  msgid "Receiver Id"
554
  msgstr "Empfänger ID"
555
 
556
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:116
557
  msgctxt "dhl"
558
  msgid "Find your Receiver Ids within your DHL contract data."
559
  msgstr "Die Empfänger IDs findest du im DHL Geschäftskundenportal."
560
 
561
  # @ woocommerce-germanized
562
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:117
563
  msgctxt "dhl"
564
  msgid "Country Code"
565
  msgstr "Ländercode"
566
 
567
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:117
568
  msgctxt "dhl"
569
  msgid "Leave empty to use the Receiver Id as fallback."
570
  msgstr "Leer lassen, um diese Empfänger ID als Fallback zu verwenden."
571
 
572
  # @ woocommerce-germanized
573
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:137
574
  msgctxt "dhl"
575
  msgid "+ Add receiver"
576
  msgstr "+ Empfänger hinzufügen"
577
 
578
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:137
579
  msgctxt "dhl"
580
  msgid "Remove selected receiver(s)"
581
  msgstr "Ausgewählte Empfänger löschen"
582
 
583
  # @ woocommerce-germanized
584
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:173
585
  msgctxt "dhl"
586
  msgid "Select a country"
587
  msgstr "Land auswählen"
588
 
589
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:175
590
  msgctxt "dhl"
591
- msgid "Harmonized Tariff Schedule (DHL)"
592
- msgstr "Harmonized Tariff Schedule (DHL)"
593
 
594
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:175
595
  msgctxt "dhl"
596
- msgid "This code is needed for customs of international shipping."
 
 
597
  msgstr ""
598
- "Dieser Code wird für die Zollabwicklung bei internationalen Sendungen "
599
- "benötigt."
 
600
 
601
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:176
602
  msgctxt "dhl"
603
  msgid "Country of manufacture (DHL)"
604
  msgstr "Herstellungsland (DHL)"
605
 
606
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:176
607
  msgctxt "dhl"
608
  msgid ""
609
  "The country of manufacture is needed for customs of international shipping."
@@ -611,7 +706,7 @@ msgstr ""
611
  "Das Herstellungsland wird für die Zollabwicklung bei internationalen "
612
  "Sendungen benötigt."
613
 
614
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:197
615
  #, php-format
616
  msgctxt "dhl"
617
  msgid ""
@@ -621,18 +716,19 @@ msgstr ""
621
  "Das Verzeichnis zum Speichern von DHL Labels fehlt. Bitte erstelle den "
622
  "Ordner %s manuell und stelle sicher, dass der Ordner beschreibbar ist."
623
 
624
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:204
625
- #: woocommerce-germanized-dhl/src/ShippingProviderDHL.php:34
 
626
  msgctxt "dhl"
627
  msgid "DHL"
628
  msgstr "DHL"
629
 
630
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:219
631
  msgctxt "dhl"
632
  msgid "DHL Label"
633
  msgstr "DHL Label"
634
 
635
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:231
636
  msgctxt "dhl"
637
  msgid ""
638
  "This label has been generated by the DHL for WooCommerce Plugin and is shown "
@@ -642,17 +738,17 @@ msgstr ""
642
  "Kompatibilitäts-Gründen angezeigt."
643
 
644
  # @ woocommerce-germanized
645
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:232
646
  msgctxt "dhl"
647
  msgid "Download label"
648
  msgstr "Label downloaden"
649
 
650
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:29
651
  msgctxt "dhl"
652
  msgid "Enable DHL"
653
  msgstr "DHL aktivieren"
654
 
655
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:30
656
  msgctxt "dhl"
657
  msgid ""
658
  "If you want to ship your shipments via DHL and create labels to your "
@@ -661,12 +757,12 @@ msgstr ""
661
  "Wenn du deine Sendungen mit DHL verschicken und Labels zu deinen Sendungen "
662
  "erzeugen möchtest, aktiviere die DHL Integration."
663
 
664
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:43
665
  msgctxt "dhl"
666
  msgid "Customer Number"
667
  msgstr "Kundennummer"
668
 
669
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:44
670
  msgctxt "dhl"
671
  msgid ""
672
  "Insert your DHL business customer number (EKP) here. If you are not yet a "
@@ -675,12 +771,12 @@ msgstr ""
675
  "Füge hier deine DHL Kundennummer (EKP) ein. Wenn du noch kein Geschäftskunde "
676
  "bist, solltest du dich zuerst als Geschäftskunde bei DHL registrieren."
677
 
678
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:57
679
  msgctxt "dhl"
680
  msgid "API Access"
681
  msgstr "API Zugriff"
682
 
683
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:58
684
  msgctxt "dhl"
685
  msgid ""
686
  "To create labels and embed DHL services, our software needs access to the "
@@ -690,14 +786,14 @@ msgstr ""
690
  "Software Zugang zur API. Du solltest hier deine Zugangsdaten zum DHL "
691
  "Geschäftskundenportal eingeben."
692
 
693
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:76
694
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:324
695
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:473
696
  msgctxt "dhl"
697
  msgid "Inlay Returns"
698
  msgstr "Beilageretouren"
699
 
700
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:77
701
  msgctxt "dhl"
702
  msgid ""
703
  "If you want to provide your customers with inlay return labels for your "
@@ -706,14 +802,14 @@ msgstr ""
706
  "Wenn du Beilageretouren-Labels zu deinen Sendungen hinzufügen möchtest, "
707
  "solltest du diese Funktion standardmäßig aktivieren."
708
 
709
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:90
710
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:702
711
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:932
712
  msgctxt "dhl"
713
  msgid "Retoure"
714
  msgstr "Retoure"
715
 
716
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:91
717
  msgctxt "dhl"
718
  msgid ""
719
  "If you want to create DHL labels to returns you should activate this "
@@ -724,12 +820,12 @@ msgstr ""
724
  "aktivieren. Stelle sicher, dass DHL Online Retoure in deinem Vertrag "
725
  "freigeschaltet ist."
726
 
727
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:104
728
  msgctxt "dhl"
729
  msgid "Age verification"
730
  msgstr "Altersverifikation"
731
 
732
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:105
733
  msgctxt "dhl"
734
  msgid ""
735
  "Use this feature to sync the Germanized age verification checkbox with the "
@@ -742,13 +838,14 @@ msgstr ""
742
  "„Alterssichtprüfung“ von DHL automatisch aktiviert."
743
 
744
  # @ woocommerce-germanized
745
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:118
746
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:726
 
747
  msgctxt "dhl"
748
  msgid "Automation"
749
  msgstr "Automatisierung"
750
 
751
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:119
752
  msgctxt "dhl"
753
  msgid ""
754
  "You might want to save some time and let Germanized generate labels "
@@ -758,7 +855,7 @@ msgstr ""
758
  "automatisch erzeugen lassen, sobald eine Sendung in einen bestimmten Status "
759
  "wechselt."
760
 
761
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:138
762
  msgctxt "dhl"
763
  msgid ""
764
  "Let your customers choose a preferred day (if the service is available at "
@@ -768,13 +865,13 @@ msgstr ""
768
  "zur Verfügung steht) für die Lieferung in der Kasse auswählen."
769
 
770
  # @ woocommerce-germanized
771
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:151
772
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:961
773
  msgctxt "dhl"
774
  msgid "Fee"
775
  msgstr "Gebühr"
776
 
777
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:152
778
  msgctxt "dhl"
779
  msgid ""
780
  "Optionally charge your customers an additional fee for preferred services "
@@ -783,7 +880,7 @@ msgstr ""
783
  "Optional kannst du die Gebühr für die Auswahl des Wunschtags oder anderer "
784
  "Wunschpaket-Services an deine Kunden weiterreichen."
785
 
786
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:166
787
  msgctxt "dhl"
788
  msgid ""
789
  "Allow your customers to send their parcels to a preferred location e.g. a "
@@ -792,7 +889,7 @@ msgstr ""
792
  "Lasse deine Kunden einen Wunschort für die Abgabe ihres Pakets in der Kasse "
793
  "auswählen. Dieser Service wird von DHL nicht zusätzlich berechnet."
794
 
795
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:185
796
  msgctxt "dhl"
797
  msgid ""
798
  "Allow your customers to choose packstation (and/or other DHL location types "
@@ -801,13 +898,13 @@ msgstr ""
801
  "Lasse deine Kunden eine Packstation (und/oder andere DHL Standorte, wie im "
802
  "Folgenden konfiguriert) als Lieferadresse auswählen."
803
 
804
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:198
805
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1109
806
  msgctxt "dhl"
807
  msgid "Map"
808
  msgstr "Karte"
809
 
810
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:199
811
  msgctxt "dhl"
812
  msgid ""
813
  "This option adds a map overlay view to let your customers choose a DHL "
@@ -818,24 +915,25 @@ msgstr ""
818
  "DHL Standortes in der Nähe noch einfacher zu machen. Du benötigst für die "
819
  "Kartenansicht einen gültigen Google Maps API Schlüssel."
820
 
821
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:219
 
822
  msgctxt "dhl"
823
  msgid "Enable"
824
  msgstr "Aktivieren"
825
 
826
  # @ woocommerce-germanized
827
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:220
828
  msgctxt "dhl"
829
  msgid "Enable DHL integration."
830
  msgstr "DHL Integration aktivieren."
831
 
832
  # @ woocommerce-germanized
833
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:227
834
  msgctxt "dhl"
835
  msgid "Customer Number (EKP)"
836
  msgstr "Kundennummer (EKP)"
837
 
838
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:229
839
  #, php-format
840
  msgctxt "dhl"
841
  msgid ""
@@ -845,33 +943,33 @@ msgstr ""
845
  "Deine 10-stellige DHL Kundennummer (EKP). Finde deine %s im DHL "
846
  "Geschäftskundenportal."
847
 
848
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:229
849
  msgctxt "dhl"
850
  msgid "customer number"
851
  msgstr "Kundennummer"
852
 
853
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:238
854
  msgctxt "dhl"
855
  msgid "API"
856
  msgstr "API"
857
 
858
  # @ woocommerce-germanized
859
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:241
860
  msgctxt "dhl"
861
  msgid "Enable Sandbox"
862
  msgstr "Sandbox aktivieren"
863
 
864
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:242
865
  msgctxt "dhl"
866
  msgid "Activate Sandbox mode for testing purposes."
867
  msgstr "Aktiviere den Sandbox Modus."
868
 
869
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:249
870
  msgctxt "dhl"
871
  msgid "Live Username"
872
  msgstr "Benutzer"
873
 
874
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:251
875
  #, php-format
876
  msgctxt "dhl"
877
  msgid ""
@@ -881,22 +979,22 @@ msgstr ""
881
  "Dein Benutzername zum DHL Geschäftskundenportal. Bitte beachte die "
882
  "Kleinschreibung und teste deine Zugangsdaten vorab %s."
883
 
884
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:251
885
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:260
886
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:269
887
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:278
888
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:295
889
  msgctxt "dhl"
890
  msgid "here"
891
  msgstr "hier"
892
 
893
  # @ woocommerce-germanized
894
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:258
895
  msgctxt "dhl"
896
  msgid "Live Password"
897
  msgstr "Passwort"
898
 
899
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:260
900
  #, php-format
901
  msgctxt "dhl"
902
  msgid ""
@@ -908,12 +1006,12 @@ msgstr ""
908
  "Gültigkeit des Passworts nach 3 (Standard-Benutzer) bzw. 12 (System-"
909
  "Benutzer) Monaten und teste deine Zugangsdaten vorab %s."
910
 
911
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:267
912
  msgctxt "dhl"
913
  msgid "Sandbox Username"
914
  msgstr "Sandbox Benutzername"
915
 
916
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:269
917
  #, php-format
918
  msgctxt "dhl"
919
  msgid ""
@@ -923,12 +1021,12 @@ msgstr ""
923
  "Dein Benutzername zum DHL Entwicklerportal. Bitte beachte die "
924
  "Kleinschreibung und teste deine Zugangsdaten vorab %s."
925
 
926
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:276
927
  msgctxt "dhl"
928
  msgid "Sandbox Password"
929
  msgstr "Sandbox Passwort"
930
 
931
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:278
932
  #, php-format
933
  msgctxt "dhl"
934
  msgid ""
@@ -938,13 +1036,13 @@ msgstr ""
938
  "Dein Passwort zum DHL Entwicklerportal. Bitte teste deine Zugangsdaten vorab "
939
  "%s."
940
 
941
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:291
942
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:334
943
  msgctxt "dhl"
944
  msgid "Products and Participation Numbers"
945
  msgstr "Produkte und Teilnahmenummern"
946
 
947
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:295
948
  #, php-format
949
  msgctxt "dhl"
950
  msgid ""
@@ -954,7 +1052,7 @@ msgstr ""
954
  "Bitte füge deine Teilnahmenummer für das dazugehörige Produkt ein. Du kannst "
955
  "die anderen Teilnahmenummern später %s anpassen."
956
 
957
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:334
958
  #, php-format
959
  msgctxt "dhl"
960
  msgid ""
@@ -968,17 +1066,18 @@ msgstr ""
968
  "Zeichen der dazugehörigen Abrechnungsnummer, die du in deinem %s findest (z."
969
  "B.: 01)."
970
 
971
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:334
972
  msgctxt "dhl"
973
  msgid "contract data"
974
  msgstr "Vertragsdaten"
975
 
976
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:388
 
977
  msgctxt "dhl"
978
  msgid "Domestic Default Service"
979
- msgstr "Nationaler Standard Service"
980
 
981
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:392
982
  msgctxt "dhl"
983
  msgid ""
984
  "Please select your default DHL shipping service for domestic shipments that "
@@ -989,12 +1088,13 @@ msgstr ""
989
  "deine Kunden anbietest (du kannst das Produkt für jede einzelne Sendung "
990
  "nachträglich ändern)."
991
 
992
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:398
 
993
  msgctxt "dhl"
994
  msgid "Int. Default Service"
995
- msgstr "Internationaler Standard Service"
996
 
997
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:402
998
  msgctxt "dhl"
999
  msgid ""
1000
  "Please select your default DHL shipping service for cross-border shipments "
@@ -1006,27 +1106,27 @@ msgstr ""
1006
  "nachträglich ändern)."
1007
 
1008
  # @ woocommerce-germanized
1009
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:408
1010
  msgctxt "dhl"
1011
  msgid "Default Duty"
1012
  msgstr "Standard Zoll"
1013
 
1014
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:412
1015
  msgctxt "dhl"
1016
  msgid "Please select a default duty type."
1017
  msgstr "Bitte wähle eine Standard-Zollabrechnung aus."
1018
 
1019
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:419
1020
  msgctxt "dhl"
1021
  msgid "Codeable"
1022
  msgstr "Leitcodierbar"
1023
 
1024
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:420
1025
  msgctxt "dhl"
1026
  msgid "Generate label only if address can be automatically retrieved DHL."
1027
  msgstr "Erzeuge Labels nur dann, wenn die Adresse von DHL erkannt wird."
1028
 
1029
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:424
1030
  msgctxt "dhl"
1031
  msgid ""
1032
  "Choose this option if you want to make sure that by default labels are only "
@@ -1037,12 +1137,12 @@ msgstr ""
1037
  "ist."
1038
 
1039
  # @ woocommerce-germanized
1040
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:428
1041
  msgctxt "dhl"
1042
  msgid "Default weight (kg)"
1043
  msgstr "Standardgewicht (kg)"
1044
 
1045
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:430
1046
  msgctxt "dhl"
1047
  msgid ""
1048
  "Choose a default shipment weight to be used for labels if no weight has been "
@@ -1051,12 +1151,12 @@ msgstr ""
1051
  "Wähle ein Standard Sendungsgewicht aus, das für Labels verwendet wird, für "
1052
  "die das Gewicht nicht automatisch bestimmt werden kann."
1053
 
1054
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:439
1055
  msgctxt "dhl"
1056
  msgid "Minimum weight (kg)"
1057
  msgstr "Mindestgewicht (kg)"
1058
 
1059
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:441
1060
  msgctxt "dhl"
1061
  msgid ""
1062
  "Choose a minimum weight to be used for labels e.g. to prevent low shipment "
@@ -1066,17 +1166,17 @@ msgstr ""
1066
  "eines zu geringen Gewichts Fehler zurückgibt."
1067
 
1068
  # @ woocommerce-germanized
1069
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:453
1070
  msgctxt "dhl"
1071
  msgid "Force email"
1072
  msgstr "E-Mail übertragen"
1073
 
1074
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:454
1075
  msgctxt "dhl"
1076
  msgid "Force transferring customer email to DHL."
1077
  msgstr "E-Mail-Adresse des Kunden immer an DHL übertragen."
1078
 
1079
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:454
1080
  msgctxt "dhl"
1081
  msgid ""
1082
  "By default the customer email address is only transferred in case explicit "
@@ -1093,12 +1193,12 @@ msgstr ""
1093
  "diese Option aktivierst."
1094
 
1095
  # @ woocommerce-germanized
1096
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:460
1097
  msgctxt "dhl"
1098
  msgid "Street number"
1099
  msgstr "Hausnummer"
1100
 
1101
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:461
1102
  msgctxt "dhl"
1103
  msgid ""
1104
  "Force existence of a street number within the first address field during "
@@ -1107,7 +1207,7 @@ msgstr ""
1107
  "Hausnummer im ersten Adressfeld verpflichtend abfragen, falls es sich um ein "
1108
  "EU-Land handelt."
1109
 
1110
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:462
1111
  msgctxt "dhl"
1112
  msgid ""
1113
  "Enabling this option will force a street number to be provided during "
@@ -1118,7 +1218,7 @@ msgstr ""
1118
  "Adressfeld in der Kasse abgefragt wird. Damit verhinderst du fehlende oder "
1119
  "falsche Datensätze."
1120
 
1121
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:474
1122
  msgctxt "dhl"
1123
  msgid ""
1124
  "Additionally create inlay return labels for shipments that support returns."
@@ -1126,81 +1226,70 @@ msgstr ""
1126
  "Erzeuge zusätzlich Beilage-Retourenlabels für Sendungen die Retouren "
1127
  "unterstützen."
1128
 
1129
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:493
1130
  msgctxt "dhl"
1131
  msgid "Enable delivery to Packstation."
1132
  msgstr "Aktiviere den Versand an Packstationen."
1133
 
1134
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:494
1135
  msgctxt "dhl"
1136
  msgid "Let customers choose a Packstation as delivery address."
1137
  msgstr "Kunden eine Packstation als Lieferadresse auswählen lassen."
1138
 
1139
  # @ woocommerce-germanized
1140
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:501
1141
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder.php:50
1142
  msgctxt "dhl"
1143
  msgid "Postoffice"
1144
  msgstr "Postfiliale"
1145
 
1146
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:502
1147
  msgctxt "dhl"
1148
  msgid "Enable delivery to Post Offices."
1149
  msgstr "Aktiviere den Versand an Postfilialen."
1150
 
1151
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:503
1152
  msgctxt "dhl"
1153
  msgid "Let customers choose a Post Office as delivery address."
1154
  msgstr "Kunden eine Postfiliale als Lieferadresse auswählen lassen."
1155
 
1156
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:510
1157
  msgctxt "dhl"
1158
  msgid "Parcel Shop"
1159
  msgstr "Paketshop"
1160
 
1161
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:511
1162
  msgctxt "dhl"
1163
  msgid "Enable delivery to Parcel Shops."
1164
  msgstr "Lieferung an Paketshops aktivieren."
1165
 
1166
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:512
1167
  msgctxt "dhl"
1168
  msgid "Let customers choose a Parcel Shop as delivery address."
1169
  msgstr "Kunden einen Paketshop als Lieferadresse auswählen lassen."
1170
 
1171
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:530
1172
- msgctxt "dhl"
1173
- msgid "Visual minimum age"
1174
- msgstr "Alterssichtprüfung"
1175
-
1176
  #: woocommerce-germanized-dhl/src/Admin/Settings.php:535
1177
  msgctxt "dhl"
1178
- msgid "Choose this option if you want to let DHL check your customer's age."
1179
- msgstr ""
1180
- "Wähle diese Option aus, wenn du das Alter durch DHL prüfen lassen möchtest."
1181
-
1182
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:539
1183
- msgctxt "dhl"
1184
  msgid "Enable the GoGreen Service by default."
1185
  msgstr "Buche den GoGreen Service hinzu."
1186
 
1187
  # @ woocommerce-germanized
1188
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:545
1189
  msgctxt "dhl"
1190
  msgid "Additional Insurance"
1191
  msgstr "Transportversicherung"
1192
 
1193
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:546
1194
  msgctxt "dhl"
1195
  msgid "Add an additional insurance to labels."
1196
  msgstr "Füge eine Transportversicherung zur Sendung hinzu."
1197
 
1198
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:552
1199
  msgctxt "dhl"
1200
  msgid "Retail Outlet Routing"
1201
  msgstr "Filialrouting"
1202
 
1203
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:553
1204
  msgctxt "dhl"
1205
  msgid ""
1206
  "Send undeliverable items to nearest retail outlet instead of immediate "
@@ -1209,46 +1298,57 @@ msgstr ""
1209
  "Sende unzustellbare Sendungen in die nächstgelegene Filiale zur Abholung "
1210
  "anstelle diese direkt zurückzusenden."
1211
 
1212
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:559
1213
  msgctxt "dhl"
1214
  msgid "No Neighbor"
1215
  msgstr "Keine Nachbarschaftszustellung"
1216
 
1217
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:560
1218
  msgctxt "dhl"
1219
  msgid "Do not deliver to neighbors."
1220
  msgstr "Schließe eine Ersatzzustellung beim Nachbarn aus."
1221
 
1222
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:567
1223
  msgctxt "dhl"
1224
  msgid "Do only delivery to named person."
1225
  msgstr ""
1226
  "Lasse Pakete nur an den Empfänger persönlich oder an eine bevollmächtigte "
1227
  "Person übergeben."
1228
 
1229
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:573
1230
  msgctxt "dhl"
1231
  msgid "Bulky Goods"
1232
  msgstr "Sperrgut"
1233
 
1234
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:574
1235
  msgctxt "dhl"
1236
  msgid "Deliver as bulky goods."
1237
  msgstr "Sende Pakete als Sperrgut."
1238
 
1239
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:580
1240
  msgctxt "dhl"
1241
- msgid "Age Verification"
1242
- msgstr "Alterssichtprüfung"
1243
 
1244
  #: woocommerce-germanized-dhl/src/Admin/Settings.php:581
1245
  msgctxt "dhl"
1246
- msgid "Verify ages if shipment contains applicable items."
 
 
 
 
 
 
 
 
 
 
 
1247
  msgstr ""
1248
  "Aktiviere die Alterssichtprüfung, falls die Sendung zu prüfende Positionen "
1249
  "beinhaltet."
1250
 
1251
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:581
1252
  #, php-format
1253
  msgctxt "dhl"
1254
  msgid ""
@@ -1261,65 +1361,111 @@ msgstr ""
1261
  "Alterssichtprüfung automatisch aktiviert, falls eine Sendung zu prüfenden "
1262
  "Produkte beinhaltet."
1263
 
1264
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:581
 
1265
  msgctxt "dhl"
1266
  msgid "age verification checkbox"
1267
  msgstr "Checkbox zur Altersprüfung"
1268
 
1269
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:588
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1270
  msgctxt "dhl"
1271
  msgid "Premium delivery for international shipments."
1272
  msgstr "Premium Lieferung für internationale Sendungen."
1273
 
1274
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:607
1275
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1160
1276
  msgctxt "dhl"
1277
  msgid "Labels"
1278
  msgstr "Labels"
1279
 
1280
  # @ woocommerce-germanized
1281
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:608
 
1282
  msgctxt "dhl"
1283
  msgid "Automatically create labels for shipments."
1284
  msgstr "Automatisch Labels zu Sendungen erstellen."
1285
 
1286
  # @ woocommerce-germanized
1287
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:615
1288
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:642
 
1289
  msgctxt "dhl"
1290
  msgid "Status"
1291
  msgstr "Status"
1292
 
1293
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:619
 
1294
  msgctxt "dhl"
1295
  msgid "Choose a shipment status which should trigger generation of a label."
1296
  msgstr ""
1297
  "Wähle einen Sendungsstatus aus, der die Erzeugung eines Labels auslösen soll."
1298
 
1299
  # @ woocommerce-germanized
1300
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:626
 
1301
  msgctxt "dhl"
1302
  msgid "Shipment Status"
1303
  msgstr "Sendungsstatus"
1304
 
1305
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:627
 
1306
  msgctxt "dhl"
1307
  msgid "Mark shipment as shipped after label has been created successfully."
1308
  msgstr ""
1309
  "Sendung als versandt markieren, sobald ein Label erfolgreich erstellt wurde."
1310
 
1311
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:634
1312
  msgctxt "dhl"
1313
  msgid "Returns"
1314
  msgstr "Retouren"
1315
 
1316
  # @ woocommerce-germanized
1317
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:635
1318
  msgctxt "dhl"
1319
  msgid "Automatically create labels for returns."
1320
  msgstr "Automatisch Retourenlabels zu Retourensendungen erstellen."
1321
 
1322
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:646
1323
  msgctxt "dhl"
1324
  msgid ""
1325
  "Choose a shipment status which should trigger generation of a return label."
@@ -1327,7 +1473,7 @@ msgstr ""
1327
  "Wähle einen Sendungsstatus aus, der die Erzeugung eines Retourenlabels "
1328
  "auslösen soll."
1329
 
1330
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:692
1331
  #, php-format
1332
  msgctxt "dhl"
1333
  msgid ""
@@ -1338,12 +1484,12 @@ msgstr ""
1338
  "können von abweichenden Einstellungen der %s überschrieben werden."
1339
 
1340
  # @ woocommerce-germanized
1341
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:692
1342
  msgctxt "dhl"
1343
  msgid "shipping method"
1344
  msgstr "Versandmethode"
1345
 
1346
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:702
1347
  #, php-format
1348
  msgctxt "dhl"
1349
  msgid ""
@@ -1354,18 +1500,18 @@ msgstr ""
1354
  "an. Stelle sicher, dass dein %s DHL Retoure Online enthält."
1355
 
1356
  # @ woocommerce-germanized
1357
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:702
1358
  msgctxt "dhl"
1359
  msgid "contract"
1360
  msgstr "Vertrag"
1361
 
1362
  # @ woocommerce-germanized
1363
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:714
1364
  msgctxt "dhl"
1365
  msgid "Default Services"
1366
  msgstr "Standard-Services"
1367
 
1368
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:714
1369
  #, php-format
1370
  msgctxt "dhl"
1371
  msgid ""
@@ -1375,12 +1521,12 @@ msgstr ""
1375
  "Passe hier an, welche der Services als Standard für deine Labels gebucht "
1376
  "werden sollen. Finde mehr über diese %s heraus."
1377
 
1378
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:714
1379
  msgctxt "dhl"
1380
  msgid "nationwide services"
1381
  msgstr "nationalen Services"
1382
 
1383
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:726
1384
  msgctxt "dhl"
1385
  msgid ""
1386
  "Choose whether and under which conditions labels for your shipments shall be "
@@ -1390,38 +1536,38 @@ msgstr ""
1390
  "erzeugt werden sollen."
1391
 
1392
  # @ woocommerce-germanized
1393
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:737
1394
  msgctxt "dhl"
1395
  msgid "Shipper Address"
1396
  msgstr "Absenderadresse"
1397
 
1398
  # @ woocommerce-germanized
1399
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:761
1400
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:830
1401
  msgctxt "dhl"
1402
  msgid "Street Number"
1403
  msgstr "Hausnummer"
1404
 
1405
  # @ woocommerce-germanized
1406
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:782
1407
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:851
1408
  msgctxt "dhl"
1409
  msgid "Country"
1410
  msgstr "Land"
1411
 
1412
  # @ woocommerce-germanized
1413
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:806
1414
  msgctxt "dhl"
1415
  msgid "Inlay Return Address"
1416
  msgstr "Beilageretouren Adresse"
1417
 
1418
  # @ woocommerce-germanized
1419
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:875
1420
  msgctxt "dhl"
1421
  msgid "Bank Account"
1422
  msgstr "Bankkonto"
1423
 
1424
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:875
1425
  msgctxt "dhl"
1426
  msgid "Enter your bank details needed for services that use COD."
1427
  msgstr ""
@@ -1429,36 +1575,36 @@ msgstr ""
1429
  "werden sollen."
1430
 
1431
  # @ woocommerce-germanized
1432
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:878
1433
  msgctxt "dhl"
1434
  msgid "Holder"
1435
  msgstr "Kontoinhaber"
1436
 
1437
  # @ woocommerce-germanized
1438
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:885
1439
  msgctxt "dhl"
1440
  msgid "Bank Name"
1441
  msgstr "Name der Bank"
1442
 
1443
  # @ woocommerce-germanized
1444
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:892
1445
  msgctxt "dhl"
1446
  msgid "IBAN"
1447
  msgstr "IBAN"
1448
 
1449
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:899
1450
  msgctxt "dhl"
1451
  msgid "BIC"
1452
  msgstr "BIC"
1453
 
1454
  # @ woocommerce-germanized
1455
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:906
1456
  msgctxt "dhl"
1457
  msgid "Payment Reference"
1458
  msgstr "Zahlungsreferenz"
1459
 
1460
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:910
1461
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:919
1462
  #, php-format
1463
  msgctxt "dhl"
1464
  msgid ""
@@ -1469,18 +1615,18 @@ msgstr ""
1469
  "%s. Der Text ist auf 35 Zeichen begrenzt."
1470
 
1471
  # @ woocommerce-germanized
1472
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:915
1473
  msgctxt "dhl"
1474
  msgid "Payment Reference 2"
1475
  msgstr "Zahlungsreferenz 2"
1476
 
1477
  # @ woocommerce-germanized
1478
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:933
1479
  msgctxt "dhl"
1480
  msgid "Enable creating labels for return shipments."
1481
  msgstr "Automatisch Retourenlabels zu Retourensendungen erstellen."
1482
 
1483
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:933
1484
  msgctxt "dhl"
1485
  msgid ""
1486
  "By enabling this option you might generate retoure labels for return "
@@ -1489,12 +1635,12 @@ msgstr ""
1489
  "Mit der Aktivierung dieser Option kannst du Retourenlabels zu "
1490
  "Retourensendungen erstellen und diese per E-Mail an den Kunden weiterleiten."
1491
 
1492
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:954
1493
  msgctxt "dhl"
1494
  msgid "Enable preferred day delivery."
1495
  msgstr "Aktiviere die Lieferung am Wunschtag."
1496
 
1497
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:954
1498
  msgctxt "dhl"
1499
  msgid ""
1500
  "Enabling this option will display options for the user to select their "
@@ -1503,7 +1649,7 @@ msgstr ""
1503
  "Diese Option aktiviert die Auswahl eines Wunschtags durch den Kunden in der "
1504
  "Kasse."
1505
 
1506
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:963
1507
  msgctxt "dhl"
1508
  msgid ""
1509
  "Insert gross value as surcharge for preferred day delivery. Insert 0 to "
@@ -1513,12 +1659,12 @@ msgstr ""
1513
  "Setze den Wert auf 0 um den Service kostenlos anzubieten."
1514
 
1515
  # @ woocommerce-germanized
1516
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:974
1517
  msgctxt "dhl"
1518
  msgid "Enable preferred location delivery."
1519
  msgstr "Lieferung an einen Wunschort aktivieren."
1520
 
1521
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:974
1522
  msgctxt "dhl"
1523
  msgid ""
1524
  "Enabling this option will display options for the user to select their "
@@ -1527,12 +1673,12 @@ msgstr ""
1527
  "Diese Option aktiviert die Auswahl eines Wunschorts durch den Kunden in der "
1528
  "Kasse ."
1529
 
1530
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:982
1531
  msgctxt "dhl"
1532
  msgid "Enable preferred neighbor delivery."
1533
  msgstr "Aktiviere die Lieferung an einen Wunschnachbarn."
1534
 
1535
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:982
1536
  msgctxt "dhl"
1537
  msgid ""
1538
  "Enabling this option will display options for the user to deliver to their "
@@ -1541,12 +1687,12 @@ msgstr ""
1541
  "Diese Option aktiviert die Auswahl eines Wunschnachbarn durch den Kunden in "
1542
  "der Kasse."
1543
 
1544
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1008
1545
  msgctxt "dhl"
1546
  msgid "Cut-off time"
1547
  msgstr "Cut-off-Zeit"
1548
 
1549
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1011
1550
  msgctxt "dhl"
1551
  msgid ""
1552
  "The cut-off time is the latest possible order time up to which the minimum "
@@ -1559,12 +1705,12 @@ msgstr ""
1559
  "Nach Überschreitung dieses Zeitpunktes, wird der früheste verfügbare "
1560
  "Wunschtag in der Kasse um einen Tag erhöht (Tag der Bestellung + 3 Werktage)."
1561
 
1562
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1017
1563
  msgctxt "dhl"
1564
  msgid "Preparation days"
1565
  msgstr "Bearbeitungstage"
1566
 
1567
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1020
1568
  msgctxt "dhl"
1569
  msgid ""
1570
  "If you need more time to prepare your shipments you might want to add a "
@@ -1575,71 +1721,71 @@ msgstr ""
1575
  "hier eine statische Anzahl an Tagen hinterlegen, die zum frühesten "
1576
  "auswählbaren Wunschtag hinzugefügt werden."
1577
 
1578
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1027
1579
  msgctxt "dhl"
1580
  msgid "Exclude days of transfer"
1581
  msgstr "Übergabetage ausschließen"
1582
 
1583
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1028
1584
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:31
1585
  msgctxt "dhl"
1586
  msgid "Monday"
1587
  msgstr "Montag"
1588
 
1589
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1029
1590
  msgctxt "dhl"
1591
  msgid "Exclude days from transferring shipments to DHL."
1592
  msgstr "Schließe bestimmte Wochentage für die Übergabe an DHL aus."
1593
 
1594
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1038
1595
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:32
1596
  msgctxt "dhl"
1597
  msgid "Tuesday"
1598
  msgstr "Dienstag"
1599
 
1600
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1047
1601
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:33
1602
  msgctxt "dhl"
1603
  msgid "Wednesday"
1604
  msgstr "Mittwoch"
1605
 
1606
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1056
1607
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:34
1608
  msgctxt "dhl"
1609
  msgid "Thursday"
1610
  msgstr "Donnerstag"
1611
 
1612
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1065
1613
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:35
1614
  msgctxt "dhl"
1615
  msgid "Friday"
1616
  msgstr "Freitag"
1617
 
1618
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1074
1619
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:36
1620
  msgctxt "dhl"
1621
  msgid "Saturday"
1622
  msgstr "Samstag"
1623
 
1624
  # @ woocommerce-germanized
1625
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1083
1626
  msgctxt "dhl"
1627
  msgid "Exclude gateways"
1628
  msgstr "Zahlungsarten ausschließen"
1629
 
1630
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1085
1631
  msgctxt "dhl"
1632
  msgid "Select payment gateways to be excluded from showing preferred services."
1633
  msgstr ""
1634
  "Wähle Zahlungsarten aus, für die die Wunschpaket-Services nicht zur "
1635
  "Verfügung stehen sollen."
1636
 
1637
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1110
1638
  msgctxt "dhl"
1639
  msgid "Let customers find a DHL location on a map."
1640
  msgstr "Lasse Kunden einen DHL Standort auf der Karte auswählen."
1641
 
1642
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1110
1643
  msgctxt "dhl"
1644
  msgid ""
1645
  "Enable this option to let your customers choose a pickup option from a map "
@@ -1650,12 +1796,12 @@ msgstr ""
1650
  "einer Karten in der Kasse zu ermöglichen. Wenn diese Option deaktiviert ist, "
1651
  "wird stattdessen auf die DHL Website verwiesen."
1652
 
1653
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1117
1654
  msgctxt "dhl"
1655
  msgid "Google Maps Key"
1656
  msgstr "Google Maps Schlüssel"
1657
 
1658
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1121
1659
  #, php-format
1660
  msgctxt "dhl"
1661
  msgid ""
@@ -1665,33 +1811,172 @@ msgstr ""
1665
  "Um eine Karte integrieren zu können, benötigst du einen gültigen API-"
1666
  "Schlüssel für Google Maps. Du kannst %s."
1667
 
1668
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1121
1669
  msgctxt "dhl"
1670
  msgid "retrieve a new one"
1671
  msgstr "hier einen neuen erstellen"
1672
 
1673
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1126
1674
  msgctxt "dhl"
1675
  msgid "Limit results"
1676
  msgstr "Suchergebnisse begrenzen"
1677
 
1678
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1130
1679
  msgctxt "dhl"
1680
  msgid "Limit the number of DHL locations shown on the map"
1681
  msgstr "Begrenzt die Anzahl der angezeigten DHL Standorte auf der Karte"
1682
 
1683
  # @ woocommerce-germanized
1684
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1159
1685
  msgctxt "dhl"
1686
- msgid "General"
1687
- msgstr "Allgemein"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1688
 
1689
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1161
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1690
  msgctxt "dhl"
1691
  msgid "Preferred Services"
1692
  msgstr "Wunschpaket"
1693
 
1694
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1162
1695
  msgctxt "dhl"
1696
  msgid "Parcel Pickup"
1697
  msgstr "Standorte"
@@ -1713,6 +1998,198 @@ msgctxt "dhl location name"
1713
  msgid "%s %s"
1714
  msgstr "%s %s"
1715
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1716
  #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:99
1717
  msgctxt "dhl"
1718
  msgid ""
@@ -1721,13 +2198,24 @@ msgstr ""
1721
  "Deine DHL API Zugangsdaten scheinen fehlerhaft zu sein. Bitte prüfe deine "
1722
  "DHL Einstellungen."
1723
 
1724
- #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:109
 
 
 
 
 
 
 
 
 
 
 
1725
  #, php-format
1726
  msgctxt "dhl"
1727
  msgid "There was an error contacting the DHL API: %s."
1728
  msgstr "Beim Aufruf der DHL API gab es einen Fehler: %s."
1729
 
1730
- #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:112
1731
  msgctxt "dhl"
1732
  msgid ""
1733
  "An error ocurred while contacting the DHL API. Please consider enabling the "
@@ -1736,7 +2224,7 @@ msgstr ""
1736
  "Beim Aufruf der DHL API ist ein Fehler aufgetreten. Bitte erwäge den Wechsel "
1737
  "in den Sandbox-Modus."
1738
 
1739
- #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:134
1740
  msgctxt "dhl"
1741
  msgid ""
1742
  "There was an error generating the label. Please try again or consider "
@@ -1745,32 +2233,25 @@ msgstr ""
1745
  "Beim Erzeugen des Labels gab es einen Fehler. Bitte versuche es erneut oder "
1746
  "erwäge den Wechsel in den Sandbox-Modus."
1747
 
1748
- #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:237
1749
- #: woocommerce-germanized-dhl/src/Api/ReturnRest.php:150
1750
  msgctxt "dhl"
1751
  msgid "Error while creating and uploading the label"
1752
  msgstr "Fehler beim Erstellen und hochladen des Labels"
1753
 
1754
- #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:323
1755
  #, php-format
1756
  msgctxt "dhl"
1757
  msgid "Could not delete label - %s"
1758
  msgstr "Das Label konnte nicht gelöscht werden - %s"
1759
 
1760
- #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:354
1761
  msgctxt "dhl"
1762
  msgid "Could not create account number - no product number."
1763
  msgstr ""
1764
  "Die Abrechnungsnummer konnte nicht erzeugt werden. Die Teilnahmenummer fehlt."
1765
 
1766
- #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:375
1767
- #: woocommerce-germanized-dhl/src/Api/ReturnRest.php:34
1768
- #, php-format
1769
- msgctxt "dhl"
1770
- msgid "Could not fetch shipment %d."
1771
- msgstr "Sendung %d konnte nicht gefunden werden."
1772
-
1773
- #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:644
1774
  #, php-format
1775
  msgctxt "dhl"
1776
  msgid "Only %s shipment items can be processed, your shipment has %s items."
@@ -1779,60 +2260,67 @@ msgstr ""
1779
  "Sendung beinhaltet %s Positionen."
1780
 
1781
  # @ woocommerce-germanized
1782
- #: woocommerce-germanized-dhl/src/Api/Paket.php:56
 
 
 
 
 
 
 
1783
  msgctxt "dhl"
1784
  msgid "Label API not available"
1785
  msgstr "Label API ist nicht erreichbar"
1786
 
1787
- #: woocommerce-germanized-dhl/src/Api/Paket.php:72
1788
  msgctxt "dhl"
1789
  msgid "Parcel Finder API not available"
1790
  msgstr "API der Standortsuche ist nicht verfügbar"
1791
 
1792
  # @ woocommerce-germanized
1793
- #: woocommerce-germanized-dhl/src/Api/Paket.php:88
1794
  msgctxt "dhl"
1795
  msgid "Return API not available"
1796
  msgstr "Retoure API ist nicht erreichbar"
1797
 
1798
  # @ woocommerce-germanized
1799
- #: woocommerce-germanized-dhl/src/Api/Paket.php:104
1800
  msgctxt "dhl"
1801
  msgid "Parcel API not available"
1802
  msgstr "Paket API ist nicht erreichbar"
1803
 
1804
- #: woocommerce-germanized-dhl/src/Api/Paket.php:250
1805
  msgctxt "dhl"
1806
  msgid "Mon"
1807
  msgstr "Mo"
1808
 
1809
- #: woocommerce-germanized-dhl/src/Api/Paket.php:251
1810
  msgctxt "dhl"
1811
  msgid "Tue"
1812
  msgstr "Di"
1813
 
1814
- #: woocommerce-germanized-dhl/src/Api/Paket.php:252
1815
  msgctxt "dhl"
1816
  msgid "Wed"
1817
  msgstr "Mi"
1818
 
1819
- #: woocommerce-germanized-dhl/src/Api/Paket.php:253
1820
  msgctxt "dhl"
1821
  msgid "Thu"
1822
  msgstr "Do"
1823
 
1824
- #: woocommerce-germanized-dhl/src/Api/Paket.php:254
1825
  msgctxt "dhl"
1826
  msgid "Fri"
1827
  msgstr "Fr"
1828
 
1829
  # @ woocommerce-germanized
1830
- #: woocommerce-germanized-dhl/src/Api/Paket.php:255
1831
  msgctxt "dhl"
1832
  msgid "Sat"
1833
  msgstr "Sa"
1834
 
1835
- #: woocommerce-germanized-dhl/src/Api/Paket.php:256
1836
  msgctxt "dhl"
1837
  msgid "Sun"
1838
  msgstr "So"
@@ -1853,44 +2341,44 @@ msgctxt "dhl"
1853
  msgid "Please provide the shipment start date."
1854
  msgstr "Bitte gib das Startdatum der Sendung an."
1855
 
1856
- #: woocommerce-germanized-dhl/src/Api/Rest.php:91
1857
  msgctxt "dhl"
1858
  msgid "400 - "
1859
  msgstr "400 - "
1860
 
1861
- #: woocommerce-germanized-dhl/src/Api/Rest.php:94
1862
  msgctxt "dhl"
1863
  msgid ""
1864
  "401 - Unauthorized Access - Invalid token or Authentication Header parameter"
1865
  msgstr ""
1866
  "401 - Unauthorized Access - Invalid token or Authentication Header parameter"
1867
 
1868
- #: woocommerce-germanized-dhl/src/Api/Rest.php:97
1869
  msgctxt "dhl"
1870
  msgid "408 - Request Timeout"
1871
  msgstr "408 - Request Timeout"
1872
 
1873
- #: woocommerce-germanized-dhl/src/Api/Rest.php:100
1874
  msgctxt "dhl"
1875
  msgid "429 - Too many requests in given amount of time"
1876
  msgstr "429 - Too many requests in given amount of time"
1877
 
1878
- #: woocommerce-germanized-dhl/src/Api/Rest.php:103
1879
  msgctxt "dhl"
1880
  msgid "503 - Service Unavailable"
1881
  msgstr "503 - Service Unavailable"
1882
 
1883
- #: woocommerce-germanized-dhl/src/Api/Rest.php:107
1884
  msgctxt "dhl"
1885
  msgid "GET error or timeout occured. Please try again later."
1886
  msgstr "GET Fehler oder Zeitüberschreitung. Bitte später erneut versuchen."
1887
 
1888
- #: woocommerce-germanized-dhl/src/Api/Rest.php:152
1889
  msgctxt "dhl"
1890
  msgid "POST error or timeout occured. Please try again later."
1891
  msgstr "POST Fehler oder Zeitüberschreitung. Bitte später erneut versuchen."
1892
 
1893
- #: woocommerce-germanized-dhl/src/DataStores/Label.php:307
1894
  msgctxt "dhl"
1895
  msgid "Invalid label."
1896
  msgstr "Ungültiges Label."
@@ -1902,7 +2390,7 @@ msgctxt "dhl time-span"
1902
  msgid "%s-%s"
1903
  msgstr "%s-%s"
1904
 
1905
- #: woocommerce-germanized-dhl/src/Package.php:252
1906
  msgctxt "dhl"
1907
  msgid ""
1908
  "Please check the street field and make sure to provide a valid street number."
@@ -1911,30 +2399,30 @@ msgstr ""
1911
  "angibst."
1912
 
1913
  # @ woocommerce-germanized
1914
- #: woocommerce-germanized-dhl/src/Package.php:832
1915
  msgctxt "dhl"
1916
  msgid "Germany"
1917
  msgstr "Deutschland"
1918
 
1919
  # @ woocommerce-germanized
1920
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:89
1921
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:848
1922
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:877
1923
  msgctxt "dhl"
1924
  msgid "Address Type"
1925
  msgstr "Adresstyp"
1926
 
1927
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:92
1928
  msgctxt "dhl"
1929
  msgid "Select whether delivery to DHL locations should be enabled."
1930
  msgstr "Wähle aus, ob die Lieferung an DHL Standorte aktiviert werden soll."
1931
 
1932
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:97
1933
  msgctxt "dhl"
1934
  msgid "Postnumber"
1935
  msgstr "Postnummer"
1936
 
1937
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:99
1938
  msgctxt "dhl"
1939
  msgid ""
1940
  "In case delivery to packstation is selected please fill in the corresponding "
@@ -1943,31 +2431,31 @@ msgstr ""
1943
  "Insofern die Lieferung an eine Packstation erfolgt, bitte die Postnummer "
1944
  "eintragen."
1945
 
1946
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:185
1947
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:564
1948
  msgctxt "dhl"
1949
  msgid "Invalid address type."
1950
  msgstr "Ungültiger Adresstyp."
1951
 
1952
  # @ woocommerce-germanized
1953
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:636
1954
  msgctxt "dhl"
1955
  msgid "Sorry, but delivery to packstation is not available."
1956
  msgstr ""
1957
  "Entschuldigung, die Lieferung an eine Packstation steht nicht zur Verfügung."
1958
 
1959
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:641
1960
  msgctxt "dhl"
1961
  msgid "Sorry, but delivery to parcel shops is not available."
1962
  msgstr ""
1963
  "Entschuldigung, die Lieferung an einen Paketshop steht nicht zur Verfügung."
1964
 
1965
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:645
1966
  msgctxt "dhl"
1967
  msgid "Sorry, but delivery to post offices is not available."
1968
  msgstr "Entschuldigung, die Lieferung an Postfilialen ist nicht verfügbar."
1969
 
1970
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:652
1971
  #, php-format
1972
  msgctxt "dhl"
1973
  msgid "Please indicate shipment to %s by one of the following values: %s."
@@ -1975,7 +2463,7 @@ msgstr ""
1975
  "Bitte identifiziere die Lieferung an %s durch die Eingabe einer der "
1976
  "folgenden Werte: %s."
1977
 
1978
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:660
1979
  msgctxt "dhl"
1980
  msgid ""
1981
  "Your DHL customer number (Post number) is not valid. Please check your "
@@ -1984,7 +2472,7 @@ msgstr ""
1984
  "Deine DHL Kundennummer (Postnummer) ist nicht gültig. Bitte überprüfe deine "
1985
  "Eingabe."
1986
 
1987
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:663
1988
  msgctxt "dhl"
1989
  msgid ""
1990
  "Your DHL customer number (Post number) is needed to ship to a packstation."
@@ -1992,64 +2480,64 @@ msgstr ""
1992
  "Deine DHL Kundennummer (Postnummer) wird für den Versand an eine Packstation "
1993
  "benötigt."
1994
 
1995
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:712
1996
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:839
1997
  msgctxt "dhl"
1998
  msgid "Branch"
1999
  msgstr "Filiale"
2000
 
2001
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:713
2002
  msgctxt "dhl"
2003
  msgid "Postnumber "
2004
  msgstr "Postnummer "
2005
 
2006
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:814
2007
  #, php-format
2008
  msgctxt "dhl"
2009
  msgid "e.g. %s 456"
2010
  msgstr "z.B. %s 456"
2011
 
2012
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:839
2013
  msgctxt "dhl"
2014
  msgid "Branches"
2015
  msgstr "Filialen"
2016
 
2017
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:855
2018
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:887
2019
  msgctxt "dhl"
2020
  msgid "DHL customer number (Post number)"
2021
  msgstr "DHL Kundennummer (Postnummer)"
2022
 
2023
  # @ woocommerce-germanized
2024
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:865
2025
  msgctxt "dhl"
2026
  msgid "Regular Address"
2027
  msgstr "Normale Adresse"
2028
 
2029
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:891
2030
  msgctxt "dhl"
2031
  msgid "Not yet a DHL customer?"
2032
  msgstr "Noch kein DHL Kunde?"
2033
 
2034
  # @ woocommerce-germanized
2035
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:891
2036
  msgctxt "dhl"
2037
  msgid "Register now"
2038
  msgstr "Jetzt registrieren"
2039
 
2040
  # @ woocommerce-germanized
2041
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:940
2042
  #, php-format
2043
  msgctxt "dhl"
2044
  msgid "Search %s"
2045
  msgstr "%s suchen"
2046
 
2047
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:1045
2048
  msgctxt "dhl"
2049
  msgid "No DHL locations found"
2050
  msgstr "Keine DHL Standorte gefunden"
2051
 
2052
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:1060
2053
  #, php-format
2054
  msgctxt "dhl"
2055
  msgid ""
@@ -2060,12 +2548,12 @@ msgstr ""
2060
  "%s oder %s."
2061
 
2062
  # @ woocommerce-germanized
2063
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:1060
2064
  msgctxt "dhl"
2065
  msgid "DHL location"
2066
  msgstr "DHL Standort"
2067
 
2068
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:1060
2069
  msgctxt "dhl"
2070
  msgid "retry"
2071
  msgstr "Erneut versuchen"
@@ -2093,14 +2581,14 @@ msgctxt "dhl"
2093
  msgid "Please choose name and address of your preferred neighbor."
2094
  msgstr "Bitte wähle einen Namen und die Adresse deines Wunschnachbars."
2095
 
2096
- #: woocommerce-germanized-dhl/src/ReturnLabel.php:125
2097
  #: woocommerce-germanized-dhl/src/SimpleLabel.php:86
2098
  #, php-format
2099
  msgctxt "dhl full name"
2100
  msgid "%1$s"
2101
  msgstr "%1$s"
2102
 
2103
- #: woocommerce-germanized-dhl/src/ShippingProviderDHL.php:42
2104
  msgctxt "dhl"
2105
  msgid ""
2106
  "Complete DHL integration supporting labels, preferred services and "
@@ -2109,6 +2597,16 @@ msgstr ""
2109
  "DHL Integration die das Erzeugen von Labels, Wunsch-Services und Lieferung "
2110
  "an Packstationen unterstützt."
2111
 
 
 
 
 
 
 
 
 
 
 
2112
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder-result.php:31
2113
  msgctxt "dhl"
2114
  msgid "Opening Times"
@@ -2280,25 +2778,32 @@ msgstr ""
2280
  "Deine Installation des Germanized DHL Plugins ist unvollständig. Bitte führe "
2281
  "%1$s im %2$s Verzeichnis aus."
2282
 
2283
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:30
2284
  #, php-format
2285
  msgctxt "shipments"
2286
- msgid "Weight (%s)"
2287
- msgstr "Gewicht (%s)"
2288
 
2289
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:35
2290
  #, php-format
2291
  msgctxt "shipments"
2292
  msgid "Dimensions (%s)"
2293
  msgstr "Abmessungen (%s)"
2294
 
2295
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:35
2296
  msgctxt "shipments"
2297
  msgid "LxWxH in decimal form."
2298
  msgstr "LxBxH in dezimaler Form."
2299
 
2300
  # @ woocommerce-germanized
2301
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:47
 
 
 
 
 
 
 
2302
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:1027
2303
  #: woocommerce-germanized-shipments/src/Admin/ReturnTable.php:24
2304
  #: woocommerce-germanized-shipments/src/Admin/Table.php:688
@@ -2307,52 +2812,52 @@ msgid "Status"
2307
  msgstr "Status"
2308
 
2309
  # @ woocommerce-germanized
2310
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:57
2311
  msgctxt "shipments"
2312
  msgid "Shipping method"
2313
  msgstr "Versandmethode"
2314
 
2315
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:67
2316
  msgctxt "shipments"
2317
  msgid "Shipping provider"
2318
  msgstr "Versanddienstleister"
2319
 
2320
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:78
2321
  msgctxt "shipments"
2322
  msgid "Tracking Number"
2323
  msgstr "Sendungsnummer"
2324
 
2325
  # @ woocommerce-germanized
2326
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:144
2327
  msgctxt "shipments"
2328
  msgid "Add item"
2329
  msgstr "Position hinzufügen"
2330
 
2331
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:148
2332
  msgctxt "shipments"
2333
  msgid "Automatically adjust items and quantities based on order item data."
2334
  msgstr "Bestimmt Positionen und Anzahlen automatisch anhand der Bestelldaten."
2335
 
2336
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:148
2337
  msgctxt "shipments"
2338
  msgid "Sync items"
2339
  msgstr "Positionen synchronisieren"
2340
 
2341
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:168
2342
  msgctxt "shipments"
2343
  msgid "Add Item"
2344
  msgstr "Position hinzufügen"
2345
 
2346
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:178
2347
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipments.php:45
2348
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:84
2349
  msgctxt "shipments"
2350
  msgid "Item"
2351
  msgstr "Position"
2352
 
2353
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:179
2354
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipments.php:46
2355
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:89
2356
  #: woocommerce-germanized-shipments/templates/emails/email-shipment-details.php:55
2357
  #: woocommerce-germanized-shipments/templates/myaccount/add-return-shipment.php:37
2358
  #: woocommerce-germanized-shipments/templates/shipment/shipment-details.php:60
@@ -2360,13 +2865,13 @@ msgctxt "shipments"
2360
  msgid "Quantity"
2361
  msgstr "Anzahl"
2362
 
2363
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:197
2364
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipments.php:55
2365
  msgctxt "shipments"
2366
  msgid "Add"
2367
  msgstr "Hinzufügen"
2368
 
2369
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:221
2370
  msgctxt "shipments"
2371
  msgid ""
2372
  "Send return instructions to your customer via email including return label "
@@ -2375,17 +2880,17 @@ msgstr ""
2375
  "Sende Informationen zur Rücksendung inkl. Label, falls verfügbar an deinen "
2376
  "Kunden via E-Mail."
2377
 
2378
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:221
2379
  msgctxt "shipments"
2380
  msgid "Resend notification"
2381
  msgstr "Benachrichtigung erneut versenden"
2382
 
2383
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:221
2384
  msgctxt "shipments"
2385
  msgid "Notify customer"
2386
  msgstr "Kunde benachrichtigen"
2387
 
2388
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:223
2389
  msgctxt "shipments"
2390
  msgid ""
2391
  "Confirm the return request to the customer. The customer receives an email "
@@ -2395,13 +2900,13 @@ msgstr ""
2395
  "Benachrichtigung, die möglicherweise Anweisungen zur Rücksendung enthält."
2396
 
2397
  # @ woocommerce-germanized
2398
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:223
2399
  #: woocommerce-germanized-shipments/src/Admin/ReturnTable.php:66
2400
  msgctxt "shipments"
2401
  msgid "Confirm return request"
2402
  msgstr "Rücksendeantrag bestätigen"
2403
 
2404
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:227
2405
  #, php-format
2406
  msgctxt "shipments"
2407
  msgid "Delete %s"
@@ -2432,9 +2937,9 @@ msgstr "Löschen"
2432
 
2433
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-list.php:22
2434
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:76
2435
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:71
2436
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:325
2437
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:446
2438
  #: woocommerce-germanized-shipments/src/Admin/Settings.php:80
2439
  #: woocommerce-germanized-shipments/src/Admin/Settings.php:177
2440
  #: woocommerce-germanized-shipments/templates/myaccount/order-shipments.php:36
@@ -2442,6 +2947,19 @@ msgctxt "shipments"
2442
  msgid "Returns"
2443
  msgstr "Retouren"
2444
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2445
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment.php:16
2446
  #, php-format
2447
  msgctxt "shipment admin title"
@@ -2451,10 +2969,10 @@ msgstr "%s #%s"
2451
  # @ woocommerce-germanized
2452
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipments.php:19
2453
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:69
2454
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:255
2455
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:324
2456
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:412
2457
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:479
2458
  #: woocommerce-germanized-shipments/templates/myaccount/order-shipments.php:20
2459
  msgctxt "shipments"
2460
  msgid "Shipments"
@@ -2485,14 +3003,15 @@ msgstr "Speichern"
2485
  #: woocommerce-germanized-shipments/includes/admin/views/html-settings-provider-list.php:11
2486
  #: woocommerce-germanized-shipments/src/Admin/ReturnTable.php:22
2487
  #: woocommerce-germanized-shipments/src/Admin/Table.php:686
2488
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:551
2489
  msgctxt "shipments"
2490
  msgid "Title"
2491
  msgstr "Titel"
2492
 
2493
  # @ woocommerce-germanized
2494
  #: woocommerce-germanized-shipments/includes/admin/views/html-settings-provider-list.php:12
2495
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:560
 
2496
  msgctxt "shipments"
2497
  msgid "Description"
2498
  msgstr "Beschreibung"
@@ -2548,7 +3067,7 @@ msgid "Download"
2548
  msgstr "Download"
2549
 
2550
  #: woocommerce-germanized-shipments/includes/admin/views/label/html-shipment-label.php:39
2551
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:537
2552
  msgctxt "shipments"
2553
  msgid "Create new label"
2554
  msgstr "Neues Label erstellen"
@@ -2768,6 +3287,16 @@ msgctxt "shipments"
2768
  msgid "Enter recipients (comma separated) for this email. Defaults to %s."
2769
  msgstr "Füge Empfänger (kommasepariert) für diese E-Mail ein. Standard: %s."
2770
 
 
 
 
 
 
 
 
 
 
 
2771
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:68
2772
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:1025
2773
  msgctxt "shipments"
@@ -2857,9 +3386,9 @@ msgstr "Fehler beim Erstellen der Sendungsinstanz"
2857
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:413
2858
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:417
2859
  #: woocommerce-germanized-shipments/src/ReturnShipment.php:420
2860
- #: woocommerce-germanized-shipments/src/ReturnShipment.php:480
2861
  #: woocommerce-germanized-shipments/src/SimpleShipment.php:118
2862
- #: woocommerce-germanized-shipments/src/SimpleShipment.php:202
2863
  msgctxt "shipments"
2864
  msgid "Invalid shipment order"
2865
  msgstr "Ungültige Bestellung zur Sendung"
@@ -2901,7 +3430,7 @@ msgstr "Sendungsverfolgung"
2901
 
2902
  # @ woocommerce-germanized
2903
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:1029
2904
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:94
2905
  #: woocommerce-germanized-shipments/src/Admin/ReturnTable.php:30
2906
  #: woocommerce-germanized-shipments/src/Admin/Table.php:694
2907
  msgctxt "shipments"
@@ -2916,7 +3445,7 @@ msgstr "Anzeigen"
2916
  # @ woocommerce-germanized
2917
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:1272
2918
  #: woocommerce-germanized-shipments/src/Admin/Table.php:865
2919
- #: woocommerce-germanized-shipments/src/Ajax.php:336
2920
  msgctxt "shipments"
2921
  msgid "Download label"
2922
  msgstr "Label downloaden"
@@ -2930,7 +3459,7 @@ msgid "My account"
2930
  msgstr "Mein Konto"
2931
 
2932
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipments-template-functions.php:115
2933
- #: woocommerce-germanized-shipments/src/DataStores/Shipment.php:351
2934
  msgctxt "shipments"
2935
  msgid "Invalid shipment."
2936
  msgstr "Ungültige Sendung."
@@ -2953,25 +3482,25 @@ msgid "View order"
2953
  msgstr "Bestellung ansehen"
2954
 
2955
  # @ woocommerce-germanized
2956
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:102
2957
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:176
2958
  #: woocommerce-germanized-shipments/templates/myaccount/add-return-shipment.php:36
2959
  msgctxt "shipments"
2960
  msgid "Reason"
2961
  msgstr "Rücksendegrund"
2962
 
2963
  # @ woocommerce-germanized
2964
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:168
2965
  msgctxt "shipments"
2966
  msgid "Return reasons"
2967
  msgstr "Rücksendegründe"
2968
 
2969
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:175
2970
  msgctxt "shipments"
2971
  msgid "Reason code"
2972
  msgstr "Rücksendegrund (Code)"
2973
 
2974
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:175
2975
  msgctxt "shipments"
2976
  msgid "The reason code is used to identify the reason."
2977
  msgstr ""
@@ -2979,56 +3508,131 @@ msgstr ""
2979
  "identifizieren zu können."
2980
 
2981
  # @ woocommerce-germanized
2982
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:176
2983
  msgctxt "shipments"
2984
  msgid "Choose a reason text."
2985
  msgstr "Beschreibung für den Grund."
2986
 
2987
  # @ woocommerce-germanized
2988
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:195
2989
  msgctxt "shipments"
2990
  msgid "+ Add reason"
2991
  msgstr "+ Grund hinzufügen"
2992
 
2993
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:195
2994
  msgctxt "shipments"
2995
  msgid "Remove selected reason(s)"
2996
  msgstr "Ausgewählte Gründe löschen"
2997
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2998
  # @ woocommerce-germanized
2999
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:309
3000
  msgctxt "shipments"
3001
  msgid "Create shipments"
3002
  msgstr "Sendungen erstellen"
3003
 
3004
  # @ woocommerce-germanized
3005
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:424
3006
  msgctxt "shipments"
3007
  msgid "Search shipments"
3008
  msgstr "Sendungen suchen"
3009
 
3010
  # @ woocommerce-germanized
3011
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:458
3012
  msgctxt "shipments"
3013
  msgid "Search returns"
3014
  msgstr "Retouren suchen"
3015
 
3016
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:531
3017
  msgctxt "shipments"
3018
  msgid "Do you really want to delete the shipment?"
3019
  msgstr "Möchtest du die Sendung wirklich löschen?"
3020
 
3021
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:536
3022
  msgctxt "shipments"
3023
  msgid "Do you really want to delete the label?"
3024
  msgstr "Möchtest du das Label wirklich löschen?"
3025
 
3026
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:538
3027
  msgctxt "shipments"
3028
  msgid "Please save the shipment before creating a new label"
3029
  msgstr "Bitte speichere die Sendung bevor du ein neues Label erzeugst"
3030
 
3031
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:588
3032
  msgctxt "shipments"
3033
  msgid ""
3034
  "Do you really want to delete the shipping provider? Some of your existing "
@@ -3434,29 +4038,44 @@ msgctxt "shipments"
3434
  msgid "List shipments on customer account order screen."
3435
  msgstr "Liste Sendungen im Kundenkonto in den Bestelldetails auf."
3436
 
3437
- #: woocommerce-germanized-shipments/src/Admin/Settings.php:353
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3438
  msgctxt "shipments"
3439
  msgid "New provider"
3440
  msgstr "Neuer Dienstleister"
3441
 
3442
  # @ woocommerce-germanized
3443
- #: woocommerce-germanized-shipments/src/Admin/Settings.php:363
3444
  msgctxt "shipments"
3445
  msgid "Additional settings"
3446
  msgstr "Weiterführende Einstellungen"
3447
 
3448
- #: woocommerce-germanized-shipments/src/Admin/Settings.php:389
3449
  msgctxt "shipments"
3450
  msgid "Add provider"
3451
  msgstr "Dienstleister hinzufügen"
3452
 
3453
  # @ woocommerce-germanized
3454
- #: woocommerce-germanized-shipments/src/Admin/Settings.php:397
3455
  msgctxt "shipments"
3456
  msgid "General"
3457
  msgstr "Allgemein"
3458
 
3459
- #: woocommerce-germanized-shipments/src/Admin/Settings.php:398
3460
  #: woocommerce-germanized-shipments/src/ShippingProviderMethod.php:56
3461
  msgctxt "shipments"
3462
  msgid "Shipping Provider"
@@ -3527,7 +4146,7 @@ msgstr "Filtern"
3527
 
3528
  # @ woocommerce-germanized
3529
  #: woocommerce-germanized-shipments/src/Admin/Table.php:664
3530
- #: woocommerce-germanized-shipments/src/Ajax.php:815
3531
  #, php-format
3532
  msgctxt "shipments"
3533
  msgid "Order #%s"
@@ -3612,85 +4231,86 @@ msgctxt "shipments"
3612
  msgid "Generate and download labels"
3613
  msgstr "Labels erstellen und downloaden"
3614
 
3615
- #: woocommerce-germanized-shipments/src/Ajax.php:94
3616
  msgctxt "shipments"
3617
  msgid "Notification successfully sent to customer."
3618
  msgstr "Kunde erfolgreich benachrichtigt."
3619
 
3620
- #: woocommerce-germanized-shipments/src/Ajax.php:101
3621
  msgctxt "shipments"
3622
  msgid "There was an error while sending the notification."
3623
  msgstr "Beim Versendes der Benachrichtigung ist ein Fehler aufgetreten."
3624
 
3625
- #: woocommerce-germanized-shipments/src/Ajax.php:141
3626
  msgctxt "shipments"
3627
  msgid "Return request confirmed successfully."
3628
  msgstr "Rücksendeantrag erfolgreich bestätigt."
3629
 
3630
- #: woocommerce-germanized-shipments/src/Ajax.php:153
3631
  msgctxt "shipments"
3632
  msgid "There was an error while confirming the request."
3633
  msgstr "Bei der Bestätigung des Antrags ist ein Fehler aufgetreten."
3634
 
3635
- #: woocommerce-germanized-shipments/src/Ajax.php:173
3636
  msgctxt "shipments"
3637
  msgid "There was an error creating the label."
3638
  msgstr "Beim Erstellen des Labels ist ein Fehler aufgetreten."
3639
 
3640
- #: woocommerce-germanized-shipments/src/Ajax.php:209
3641
  msgctxt "shipments"
3642
  msgid "There was an error deleting the label."
3643
  msgstr "Beim Löschen des Labels ist ein Fehler aufgetreten."
3644
 
3645
- #: woocommerce-germanized-shipments/src/Ajax.php:250
3646
  msgctxt "shipments"
3647
  msgid "There was an error processing the label."
3648
  msgstr "Bei der Verarbeitung des Labels ist ein Fehler aufgetreten."
3649
 
3650
- #: woocommerce-germanized-shipments/src/Ajax.php:348
3651
  msgctxt "shipments"
3652
  msgid "There was an error while trying to save the shipping provider status."
3653
  msgstr ""
3654
  "Beim Speichern des Status des Versanddienstleisters trat ein Fehler auf."
3655
 
3656
- #: woocommerce-germanized-shipments/src/Ajax.php:386
3657
  msgctxt "shipments"
3658
  msgid "There was an error while trying to delete the shipping provider."
3659
  msgstr "Beim Löschen des Versanddienstleisters trat ein Fehler auf."
3660
 
3661
- #: woocommerce-germanized-shipments/src/Ajax.php:419
3662
  msgctxt "shipments"
3663
  msgid "There was an error while bulk processing shipments."
3664
  msgstr ""
3665
  "Bei der Verarbeitung der Mehrfachaktionen von Sendungen trat ein Fehler auf."
3666
 
3667
- #: woocommerce-germanized-shipments/src/Ajax.php:531
3668
- #: woocommerce-germanized-shipments/src/Ajax.php:632
3669
- #: woocommerce-germanized-shipments/src/Ajax.php:689
3670
- #: woocommerce-germanized-shipments/src/Ajax.php:726
3671
- #: woocommerce-germanized-shipments/src/Ajax.php:853
3672
- #: woocommerce-germanized-shipments/src/Ajax.php:920
3673
- #: woocommerce-germanized-shipments/src/Ajax.php:953
3674
- #: woocommerce-germanized-shipments/src/Ajax.php:1002
3675
- #: woocommerce-germanized-shipments/src/Ajax.php:1070
3676
- #: woocommerce-germanized-shipments/src/Ajax.php:1111
3677
- #: woocommerce-germanized-shipments/src/Ajax.php:1166
3678
- #: woocommerce-germanized-shipments/src/Ajax.php:1210
 
3679
  msgctxt "shipments"
3680
  msgid "There was an error processing the shipment"
3681
  msgstr "Fehler bei der Verarbeitung der Sendung"
3682
 
3683
- #: woocommerce-germanized-shipments/src/Ajax.php:573
3684
  msgctxt "shipments"
3685
  msgid "There was an error while adding the shipment"
3686
  msgstr "Beim Hinzufügen der Sendung ist ein Fehler aufgetreten"
3687
 
3688
- #: woocommerce-germanized-shipments/src/Ajax.php:594
3689
  msgctxt "shipments"
3690
  msgid "This order contains enough shipments already."
3691
  msgstr "Diese Bestellung beinhaltet bereits genug Sendungen."
3692
 
3693
- #: woocommerce-germanized-shipments/src/Ajax.php:651
3694
  msgctxt "shipments"
3695
  msgid "This order contains enough returns already."
3696
  msgstr "Diese Bestellung beinhaltet bereits genügend Retouren."
@@ -3887,11 +4507,16 @@ msgid "Quantity."
3887
  msgstr "Anzahl."
3888
 
3889
  # @ woocommerce-germanized
3890
- #: woocommerce-germanized-shipments/src/Automation.php:106
3891
  msgctxt "shipments"
3892
  msgid "Order is fully shipped."
3893
  msgstr "Bestellung ist vollständig versandt."
3894
 
 
 
 
 
 
3895
  #: woocommerce-germanized-shipments/src/DataStores/ShipmentItem.php:195
3896
  msgctxt "shipments"
3897
  msgid "Invalid shipment item."
@@ -3995,35 +4620,66 @@ msgstr ""
3995
  "Es gab ein Problem beim Erstellen der Rücksendung. Bitte kontaktiere uns für "
3996
  "weitere Informationen."
3997
 
3998
- #: woocommerce-germanized-shipments/src/Install.php:28
3999
  msgctxt "shipments"
4000
  msgid "Wrong product or size ordered"
4001
  msgstr "Falsches Produkt oder Größe bestellt"
4002
 
4003
- #: woocommerce-germanized-shipments/src/Install.php:33
4004
  msgctxt "shipments"
4005
  msgid "Product no longer needed"
4006
  msgstr "Produkt wird nicht länger benötigt"
4007
 
4008
- #: woocommerce-germanized-shipments/src/Install.php:38
4009
  msgctxt "shipments"
4010
  msgid "Don't like the look"
4011
  msgstr "Optik nicht wie erwartet"
4012
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4013
  # @ woocommerce-germanized
4014
- #: woocommerce-germanized-shipments/src/Package.php:78
4015
  msgctxt "shipments"
4016
  msgid "Sorry, this order is invalid and cannot be returned."
4017
  msgstr "Sorry, diese Bestellung existiert nicht."
4018
 
 
 
 
 
 
 
4019
  #: woocommerce-germanized-shipments/src/ReturnShipment.php:356
4020
- #: woocommerce-germanized-shipments/src/Shipment.php:864
4021
  #, php-format
4022
  msgctxt "full name"
4023
  msgid "%1$s %2$s"
4024
  msgstr "%1$s %2$s"
4025
 
4026
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:266
4027
  msgctxt "shipments"
4028
  msgid ""
4029
  "Your shipment is being processed by {shipping_provider}. If you want to "
@@ -4037,34 +4693,34 @@ msgstr ""
4037
  "die Paketverfolgungsdaten zum Zeitpunkt des Erhalts dieser E-Mail noch nicht "
4038
  "den neuesten Stand wiedergeben."
4039
 
4040
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:539
4041
  #, php-format
4042
  msgctxt "shipments"
4043
  msgid "%s supports many more options. Explore %s."
4044
  msgstr "%s unterstützt viele weitere Einstellungen. Schau dir %s an."
4045
 
4046
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:539
4047
  #, php-format
4048
  msgctxt "shipments"
4049
  msgid "%s specific settings"
4050
  msgstr "%s spezifische Einstellungen"
4051
 
4052
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:552
4053
  msgctxt "shipments"
4054
  msgid "Choose a title for the shipping provider."
4055
  msgstr "Wähle einen Titel für den Versanddienstleister."
4056
 
4057
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:561
4058
  msgctxt "shipments"
4059
  msgid "Choose a description for the shipping provider."
4060
  msgstr "Wähle eine Beschreibung für den Versanddienstleister."
4061
 
4062
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:575
4063
  msgctxt "shipments"
4064
  msgid "Tracking URL"
4065
  msgstr "Sendungsverfolgung URL"
4066
 
4067
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:576
4068
  #, php-format
4069
  msgctxt "shipments"
4070
  msgid ""
@@ -4078,12 +4734,12 @@ msgstr ""
4078
  "einzufügen: %s"
4079
 
4080
  # @ woocommerce-germanized
4081
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:586
4082
  msgctxt "shipments"
4083
  msgid "Tracking description"
4084
  msgstr "Sendungsverfolgung Hinweis"
4085
 
4086
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:587
4087
  #, php-format
4088
  msgctxt "shipments"
4089
  msgid ""
@@ -4098,17 +4754,17 @@ msgstr ""
4098
  "einzufügen: %s"
4099
 
4100
  # @ woocommerce-germanized
4101
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:600
4102
  msgctxt "shipments"
4103
  msgid "Customer returns"
4104
  msgstr "Rücksendungen"
4105
 
4106
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:601
4107
  msgctxt "shipments"
4108
  msgid "Allow customers to submit return requests to shipments."
4109
  msgstr "Erlaube Kunden eine Rücksendung zu einer Sendung zu beantragen."
4110
 
4111
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:601
4112
  #, php-format
4113
  msgctxt "shipments"
4114
  msgid ""
@@ -4122,27 +4778,27 @@ msgstr ""
4122
  "Gästen zu erfahren, lese bitte die %s."
4123
 
4124
  # @ woocommerce-germanized
4125
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:601
4126
  msgctxt "shipments"
4127
  msgid "Return Dashboard"
4128
  msgstr "Retouren-Dashboard"
4129
 
4130
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:601
4131
  msgctxt "shipments"
4132
  msgid "docs"
4133
  msgstr "Dokumentation"
4134
 
4135
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:610
4136
  msgctxt "shipments"
4137
  msgid "Guest returns"
4138
  msgstr "Retouren für Gäste"
4139
 
4140
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:611
4141
  msgctxt "shipments"
4142
  msgid "Allow guests to submit return requests to shipments."
4143
  msgstr "Erlaube Gästen Rücksendeanträge zu Bestellungen zu beantragen."
4144
 
4145
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:611
4146
  #, php-format
4147
  msgctxt "shipments"
4148
  msgid ""
@@ -4156,18 +4812,18 @@ msgstr ""
4156
  "Rücksende-Formular für Gäste auf deiner Seite zu platzieren."
4157
 
4158
  # @ woocommerce-germanized
4159
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:622
4160
  msgctxt "shipments"
4161
  msgid "Manual confirmation"
4162
  msgstr "Manuelle Bestätigung"
4163
 
4164
  # @ woocommerce-germanized
4165
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:623
4166
  msgctxt "shipments"
4167
  msgid "Return requests need manual confirmation."
4168
  msgstr "Rücksendeanträge benötigen eine manuelle Bestätigung."
4169
 
4170
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:623
4171
  msgctxt "shipments"
4172
  msgid ""
4173
  "By default return request need manual confirmation e.g. a shop manager needs "
@@ -4184,12 +4840,12 @@ msgstr ""
4184
  "Mail-Bestätigung samt Retouren-Label."
4185
 
4186
  # @ woocommerce-germanized
4187
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:635
4188
  msgctxt "shipments"
4189
  msgid "Return instructions"
4190
  msgstr "Rücksende-Anweisungen"
4191
 
4192
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:636
4193
  msgctxt "shipments"
4194
  msgid ""
4195
  "Provide your customer with instructions on how to return the shipment after "
@@ -4569,7 +5225,7 @@ msgstr "l"
4569
  # @ woocommerce-germanized
4570
  #: woocommerce-germanized/includes/abstracts/abstract-wc-gzd-product.php:549
4571
  #: woocommerce-germanized/includes/abstracts/abstract-wc-gzd-product.php:559
4572
- #: woocommerce-germanized/includes/wc-gzd-core-functions.php:448
4573
  #: woocommerce-germanized/includes/wc-gzd-template-functions.php:546
4574
  #: woocommerce-germanized/includes/wc-gzd-template-functions.php:554
4575
  msgid "incl. VAT"
@@ -4582,7 +5238,7 @@ msgstr "exkl. MwSt."
4582
 
4583
  # @ woocommerce-germanized
4584
  #: woocommerce-germanized/includes/abstracts/abstract-wc-gzd-product.php:551
4585
- #: woocommerce-germanized/includes/wc-gzd-core-functions.php:448
4586
  #, php-format
4587
  msgid "incl. %s%% VAT"
4588
  msgstr "inkl. %s %% MwSt."
@@ -4824,9 +5480,9 @@ msgstr "Germanize"
4824
  # @ woocommerce-germanized
4825
  # @ woocommerce
4826
  #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:73
4827
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:141
4828
  #: woocommerce-germanized/includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:79
4829
- #: woocommerce-germanized/woocommerce-germanized.php:859
4830
  msgid "Settings"
4831
  msgstr "Einstellungen"
4832
 
@@ -4843,66 +5499,71 @@ msgid "Start tutorial"
4843
  msgstr "Tutorial starten"
4844
 
4845
  #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:92
4846
- #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-dhl.php:33
4847
  #: woocommerce-germanized/includes/admin/views/setup/dhl.php:10
4848
  msgid "DHL"
4849
  msgstr "DHL"
4850
 
4851
  # @ woocommerce-germanized
4852
  #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:100
 
4853
  msgid "Import settings"
4854
  msgstr "Einstellungen importieren"
4855
 
 
 
 
 
 
4856
  # @ woocommerce-germanized
4857
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:131
4858
  msgid "Pages"
4859
  msgstr "Rechtlich relevante Seiten"
4860
 
4861
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:132
4862
  msgid "Create legal pages placeholders e.g. terms & conditions."
4863
  msgstr "Lege rechtlich relevante Seiten an, z.B. AGB."
4864
 
4865
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:142
4866
  msgid "Germanize WooCommerce settings (e.g. currency, tax display)."
4867
  msgstr "WooCommerce Einstellungen eindeutschen (z.B. Währung)"
4868
 
4869
  # @ woocommerce-germanized
4870
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:149
4871
  msgctxt "install"
4872
  msgid "VAT"
4873
  msgstr "USt."
4874
 
4875
  # @ woocommerce-germanized
4876
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:150
4877
  msgid "Let Germanized insert EU VAT rates."
4878
  msgstr "Lasse Germanized EU-Steuersätze importieren."
4879
 
4880
  # @ woocommerce-germanized
4881
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:156
4882
  msgctxt "install"
4883
  msgid "Virtual VAT"
4884
  msgstr "Virtuelle USt."
4885
 
4886
  # @ woocommerce-germanized
4887
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:157
4888
  msgid "Let Germanized insert virtual EU VAT rates."
4889
  msgstr "Lasse Germanized virtuelle EU-Steuersätze importieren."
4890
 
4891
  # @ woocommerce-germanized
4892
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:168
4893
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-general.php:202
4894
  #: woocommerce-germanized/includes/admin/views/html-page-status-germanized.php:43
4895
  msgid "Small-Enterprise-Regulation"
4896
  msgstr "Kleinunternehmerregelung"
4897
 
4898
  # @ woocommerce-germanized
4899
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:169
4900
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-general.php:203
4901
  msgid "VAT based on &#167;19 UStG"
4902
  msgstr "Umsatzsteuerbefreit nach &#167;19 UStG"
4903
 
4904
  # @ woocommerce-germanized
4905
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:169
4906
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-general.php:203
4907
  #, php-format
4908
  msgid ""
@@ -4914,18 +5575,18 @@ msgstr ""
4914
  "Gebrauch machen willst."
4915
 
4916
  # @ woocommerce-germanized
4917
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:175
4918
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-doi.php:21
4919
  msgid "Double Opt In"
4920
  msgstr "Double-Opt-In"
4921
 
4922
  # @ woocommerce-germanized
4923
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:176
4924
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-doi.php:38
4925
  msgid "Enable customer double opt in during registration."
4926
  msgstr "Double-Opt-In Verfahren für Kundenkonten aktivieren."
4927
 
4928
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:176
4929
  #, php-format
4930
  msgid ""
4931
  "Sends an email to the customer after registration to verify his account. "
@@ -4939,25 +5600,25 @@ msgstr ""
4939
  "\">Einstellungen</a> können nachträglich angepasst werden."
4940
 
4941
  # @ woocommerce-germanized
4942
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:194
4943
  msgid "Setup"
4944
  msgstr "Setup"
4945
 
4946
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:292
4947
  msgid "Germanized &rsaquo; Setup Wizard"
4948
  msgstr "Germanized &rsaquo; Setup"
4949
 
4950
  # @ woocommerce-germanized
4951
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:361
4952
  msgid "Skip Step"
4953
  msgstr "Schritt überspringen"
4954
 
4955
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:365
4956
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:367
4957
  msgid "Continue"
4958
  msgstr "Weiter"
4959
 
4960
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:373
4961
  msgid "Return to WP Admin"
4962
  msgstr "Zurück zu WP Admin"
4963
 
@@ -5006,7 +5667,7 @@ msgid "Welcome to Germanized"
5006
  msgstr "Willkommen bei Germanized"
5007
 
5008
  # @ woocommerce-germanized
5009
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-welcome.php:264
5010
  msgid "Go to Germanized Settings"
5011
  msgstr "Germanized Einstellungen"
5012
 
@@ -5024,6 +5685,8 @@ msgstr "Germanized Einstellungen"
5024
  #: woocommerce-germanized/includes/class-wc-gzd-dependencies.php:65
5025
  #: woocommerce-germanized/includes/class-wc-gzd-hook-priorities.php:35
5026
  #: woocommerce-germanized/includes/class-wc-gzd-hook-priorities.php:44
 
 
5027
  #: woocommerce-germanized/includes/class-wc-gzd-product-attribute-helper.php:21
5028
  #: woocommerce-germanized/includes/class-wc-gzd-product-attribute-helper.php:30
5029
  #: woocommerce-germanized/includes/export/class-wc-gzd-product-export.php:23
@@ -5035,54 +5698,56 @@ msgstr "Germanized Einstellungen"
5035
  msgid "Cheatin&#8217; huh?"
5036
  msgstr "So geht das leider nicht.."
5037
 
5038
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:113
 
5039
  msgctxt "dhl"
5040
  msgid "Action failed. Please refresh the page and retry."
5041
  msgstr ""
5042
  "Aktion fehlgeschlagen. Bitte aktualisiere die Seite und versuchen es erneut."
5043
 
5044
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:117
 
5045
  msgctxt "dhl"
5046
  msgid "You don't have permission to do this."
5047
  msgstr "Du bist leider nicht berechtigt, diese Aktion durchzuführen."
5048
 
5049
  # @ woocommerce-germanized
5050
  #. Plugin Name of the plugin/theme
5051
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:194
5052
  msgid "Germanized for WooCommerce"
5053
  msgstr "Germanized für WooCommerce"
5054
 
5055
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:304
5056
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:45
5057
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:58
5058
  msgid "Yes"
5059
  msgstr "Ja"
5060
 
5061
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:304
5062
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:58
5063
  msgid "No"
5064
  msgstr "Nein"
5065
 
5066
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:376
5067
  msgid "Paid for order notification manually sent to customer."
5068
  msgstr "Bestellung bezahlt manuell an den Kunden versendet."
5069
 
5070
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:396
5071
  msgid "Order confirmation manually sent to customer."
5072
  msgstr "Bestellbestätigung manuell an den Kunden versendet."
5073
 
5074
  # @ woocommerce-germanized
5075
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:416
5076
  msgid "Resend order confirmation"
5077
  msgstr "Bestellbestätigung erneut versenden"
5078
 
5079
  # @ woocommerce-germanized
5080
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:417
5081
  msgid "Send paid for order notification"
5082
  msgstr "Bestellung bezahlt manuell versenden"
5083
 
5084
  # @ woocommerce-germanized
5085
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:427
5086
  #: woocommerce-germanized/includes/admin/settings/abstract-wc-gzd-settings-tab.php:114
5087
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-germanized.php:23
5088
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:9
@@ -5090,38 +5755,38 @@ msgstr "Bestellung bezahlt manuell versenden"
5090
  msgid "Germanized"
5091
  msgstr "Germanized"
5092
 
5093
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:441
5094
  msgid "Parcel Delivery Data Transfer:"
5095
  msgstr "Paketdienstleister Datenweitergabe:"
5096
 
5097
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:442
5098
  msgid "allowed"
5099
  msgstr "akzeptiert"
5100
 
5101
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:442
5102
  msgid "not allowed"
5103
  msgstr "nicht akzeptiert"
5104
 
5105
  # @ woocommerce-germanized
5106
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:525
5107
  msgid "Optional Email Content"
5108
  msgstr "Optionaler E-Mail Inhalt"
5109
 
5110
  # @ woocommerce-germanized
5111
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:543
5112
  msgid "Add content which will be replacing default page content within emails."
5113
  msgstr ""
5114
  "Fülle dieses Feld aus um einen abweichenden E-Mail Anhangstext für diese "
5115
  "Seite zu bestimmen."
5116
 
5117
  # @ woocommerce-germanized
5118
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:557
5119
  #: woocommerce-germanized/includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php:152
5120
  msgid "Optional Mini Description"
5121
  msgstr "Warenkorb Kurzbeschreibung"
5122
 
5123
  # @ woocommerce-germanized
5124
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:579
5125
  msgid ""
5126
  "This content will be shown as short product description within checkout and "
5127
  "emails."
@@ -5343,6 +6008,7 @@ msgstr ""
5343
  "lasse Germanized einfach deine bestehenden Einstellungen importieren."
5344
 
5345
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:35
 
5346
  msgctxt "dhl"
5347
  msgid "No need to use an external plugin which might lead to incompatibilities"
5348
  msgstr ""
@@ -5350,6 +6016,7 @@ msgstr ""
5350
  "bessere Performance"
5351
 
5352
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:36
 
5353
  #, php-format
5354
  msgctxt "dhl"
5355
  msgid ""
@@ -5360,6 +6027,7 @@ msgstr ""
5360
  "Services pro Versandart und %s"
5361
 
5362
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:36
 
5363
  msgctxt "dhl"
5364
  msgid "many more"
5365
  msgstr "und viele mehr"
@@ -5373,15 +6041,46 @@ msgstr ""
5373
  "Sendungen und Retouren"
5374
 
5375
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:47
 
5376
  msgctxt "dhl"
5377
  msgid "Import settings and activate"
5378
  msgstr "Einstellungen importieren und loslegen"
5379
 
5380
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:53
 
5381
  msgctxt "dhl"
5382
  msgid "Learn more"
5383
  msgstr "Mehr erfahren"
5384
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5385
  # @ woocommerce-germanized
5386
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-pro.php:23
5387
  msgid "For professionals: Upgrade to Pro-Version"
@@ -5536,11 +6235,11 @@ msgstr ""
5536
  msgid "Run the updater"
5537
  msgstr "Update starten"
5538
 
5539
- #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note.php:174
5540
  msgid "Not now"
5541
  msgstr "Nicht jetzt"
5542
 
5543
- #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note.php:178
5544
  msgctxt "woocommerce-germanized"
5545
  msgid "Deactivate"
5546
  msgstr "Deaktivieren"
@@ -5577,6 +6276,7 @@ msgid "Upgrade now"
5577
  msgstr "Jetzt upgraden"
5578
 
5579
  #: woocommerce-germanized/includes/admin/settings/abstract-wc-gzd-settings-tab.php:152
 
5580
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-invoices.php:61
5581
  msgid "Learn more"
5582
  msgstr "Mehr erfahren"
@@ -5597,7 +6297,7 @@ msgstr ""
5597
 
5598
  # @ woocommerce-germanized
5599
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-pointers.php:92
5600
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:773
5601
  msgid "Status"
5602
  msgstr "Status"
5603
 
@@ -5881,7 +6581,7 @@ msgstr ""
5881
  "Checkbox bearbeiten indem du auf den Link klickst."
5882
 
5883
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-checkboxes.php:62
5884
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:809
5885
  msgid "Label"
5886
  msgstr "Beschriftung"
5887
 
@@ -5951,17 +6651,14 @@ msgid "pro"
5951
  msgstr "Pro"
5952
 
5953
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-dhl.php:19
5954
- msgid ""
5955
- "Integrate DHL Services such as Labels for Shipments and Returns and Delivery "
5956
- "to Packstations."
5957
  msgstr ""
5958
- "Erzeuge bequem DHL Labels für Sendungen und Retouren und mehr über dein "
5959
- "Admin-Panel."
5960
 
5961
- #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-dhl.php:26
5962
- msgctxt "dhl"
5963
- msgid "Not yet a customer?"
5964
- msgstr "Noch kein Geschäftskunde?"
5965
 
5966
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-doi.php:17
5967
  msgid "Extend the WooCommerce registration process with a double opt in."
@@ -6115,8 +6812,8 @@ msgstr ""
6115
  #: woocommerce-germanized/includes/api/class-wc-gzd-rest-customers-controller.php:144
6116
  #: woocommerce-germanized/includes/api/class-wc-gzd-rest-orders-controller.php:138
6117
  #: woocommerce-germanized/includes/api/class-wc-gzd-rest-orders-controller.php:145
6118
- #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:587
6119
- #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:598
6120
  #: woocommerce-germanized/includes/class-wc-gzd-customer-helper.php:131
6121
  #: woocommerce-germanized/includes/class-wc-gzd-customer-helper.php:139
6122
  msgid "Title"
@@ -6582,7 +7279,7 @@ msgstr ""
6582
  "Platzhalter für den höchsten Preis."
6583
 
6584
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-general.php:294
6585
- #: woocommerce-germanized/includes/wc-gzd-core-functions.php:845
6586
  msgid "{min_price} &ndash; {max_price}"
6587
  msgstr "{min_price} &ndash; {max_price}"
6588
 
@@ -7201,6 +7898,7 @@ msgstr "Steuern"
7201
 
7202
  # @ woocommerce-germanized
7203
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-taxes.php:30
 
7204
  msgid "VAT"
7205
  msgstr "Umsatzsteuer"
7206
 
@@ -7455,14 +8153,14 @@ msgstr ""
7455
  # @ woocommerce-germanized
7456
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-page-checkboxes.php:11
7457
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:27
7458
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:781
7459
  msgid "Name"
7460
  msgstr "Name"
7461
 
7462
  # @ woocommerce-germanized
7463
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-page-checkboxes.php:12
7464
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:29
7465
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:800
7466
  #: woocommerce-germanized/includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:888
7467
  #: woocommerce-germanized/includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:124
7468
  msgid "Description"
@@ -7475,7 +8173,7 @@ msgstr "Aktiviert"
7475
 
7476
  # @ woocommerce-germanized
7477
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-page-checkboxes.php:14
7478
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:837
7479
  msgid "Mandatory"
7480
  msgstr "Pflichtfeld"
7481
 
@@ -7850,6 +8548,26 @@ msgid "Let Germanized help you to adjust your WooCommerce settings for %s."
7850
  msgstr ""
7851
  "Lasse Germanized deine WooCommerce-Einstellungen speziell für %s anpassen."
7852
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7853
  # @ woocommerce-germanized
7854
  #: woocommerce-germanized/includes/admin/views/setup/settings.php:7
7855
  msgid "Adjust Germanized"
@@ -8100,31 +8818,31 @@ msgid "Number of published products for the resource."
8100
  msgstr "Anzahl der veröffentlichten Produkte für die Ressource."
8101
 
8102
  # @ woocommerce-germanized
8103
- #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:188
8104
  #, php-format
8105
  msgid "%s [new]"
8106
  msgstr "%s [neu]"
8107
 
8108
  # @ woocommerce-germanized
8109
- #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:215
8110
  msgctxt "revocation-form"
8111
  msgid "is not a valid email address."
8112
  msgstr "ist leider keine valide E-Mail Adresse."
8113
 
8114
  # @ woocommerce-germanized
8115
- #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:219
8116
  msgctxt "revocation-form"
8117
  msgid "Please enter a valid postcode/ZIP"
8118
  msgstr "Bitte gib eine echte Postleitzahl ein"
8119
 
8120
  # @ woocommerce-germanized
8121
- #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:227
8122
  msgctxt "revocation-form"
8123
  msgid "is not valid."
8124
  msgstr "ist leider nicht korrekt."
8125
 
8126
  # @ woocommerce-germanized
8127
- #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:248
8128
  msgctxt "revocation-form"
8129
  msgid ""
8130
  "Thank you. We have received your Revocation Request. You will receive a "
@@ -8133,7 +8851,7 @@ msgstr ""
8133
  "Vielen Dank. Wir haben deinen Widerruf erhalten. Du bekommst in Kürze eine E-"
8134
  "Mail mit deinen Daten als Bestätigung."
8135
 
8136
- #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:173
8137
  msgid ""
8138
  "Sorry, but differential taxed products cannot be purchased with normal "
8139
  "products at the same time."
@@ -8141,7 +8859,7 @@ msgstr ""
8141
  "Entschuldigung, differenzbesteuerte Produkte können nicht gemeinsam mit "
8142
  "normalen Produkten gekauft werden."
8143
 
8144
- #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:179
8145
  msgid ""
8146
  "Sorry, but normal products cannot be purchased together with differential "
8147
  "taxed products at the same time."
@@ -8150,23 +8868,23 @@ msgstr ""
8150
  "differenzbesteuerten Produkten gekauft werden."
8151
 
8152
  # @ woocommerce-germanized
8153
- #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:921
8154
  #: woocommerce-germanized/includes/class-wc-gzd-revocation.php:52
8155
- #: woocommerce-germanized/includes/wc-gzd-core-functions.php:599
8156
  msgid "Mr."
8157
  msgstr "Herr"
8158
 
8159
  # @ woocommerce-germanized
8160
- #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:922
8161
  msgctxt "customer-title-male-address"
8162
  msgid "Mr."
8163
  msgstr "Herrn"
8164
 
8165
- #: woocommerce-germanized/includes/class-wc-gzd-coupon-helper.php:314
8166
  msgid "Is voucher?"
8167
  msgstr "Wertgutschein?"
8168
 
8169
- #: woocommerce-germanized/includes/class-wc-gzd-coupon-helper.php:315
8170
  #, php-format
8171
  msgid ""
8172
  "Whether or not this coupon is a voucher which has been sold to a customer "
@@ -8215,28 +8933,28 @@ msgstr "Sorry, dieser Aktivierungscode ist uns leider nicht bekannt."
8215
  msgid "Thank you. You have successfully activated your account."
8216
  msgstr "Vielen Dank. Dein Benutzerkonto wurde erfolgreich aktiviert."
8217
 
8218
- #: woocommerce-germanized/includes/class-wc-gzd-customer-helper.php:573
8219
  msgid "Expired activation key"
8220
  msgstr "Abgelaufener Aktivierungscode"
8221
 
8222
- #: woocommerce-germanized/includes/class-wc-gzd-customer-helper.php:578
8223
  msgid "Invalid activation key"
8224
  msgstr "Aktivierungscode ungültig"
8225
 
8226
- #: woocommerce-germanized/includes/class-wc-gzd-emails.php:166
8227
  msgid "BCC recipients"
8228
  msgstr "BCC Empfänger"
8229
 
8230
- #: woocommerce-germanized/includes/class-wc-gzd-emails.php:168
8231
  msgid "Enter blind-copy recipients (comma separated) for this email."
8232
  msgstr "Füge Empfänger (kommasepariert) einer Blindkopie für diese E-Mail ein."
8233
 
8234
  # @ woocommerce-germanized
8235
- #: woocommerce-germanized/includes/class-wc-gzd-emails.php:207
8236
  msgid "Confirmation text"
8237
  msgstr "Bestätigung Text"
8238
 
8239
- #: woocommerce-germanized/includes/class-wc-gzd-emails.php:208
8240
  msgid ""
8241
  "Your order has been received and is now being processed. Your order details "
8242
  "are shown below for your reference:"
@@ -8245,7 +8963,7 @@ msgstr ""
8245
  "deiner Bestellung kannst du der nachfolgenden Tabelle entnehmen:"
8246
 
8247
  # @ woocommerce-germanized
8248
- #: woocommerce-germanized/includes/class-wc-gzd-emails.php:209
8249
  msgid ""
8250
  "This text will be inserted within the order confirmation email. Use "
8251
  "{order_number}, {site_title} or {order_date} as placeholder."
@@ -8253,7 +8971,7 @@ msgstr ""
8253
  "Dieser Text wird in die Bestellbestätigung eingefügt. Verwende "
8254
  "{order_number}, {site_title} oder {order_date} als Platzhalter."
8255
 
8256
- #: woocommerce-germanized/includes/class-wc-gzd-emails.php:327
8257
  msgid ""
8258
  "Your order has been received and is now being processed. Your order details "
8259
  "are shown below for your reference."
@@ -8261,18 +8979,18 @@ msgstr ""
8261
  "Deine Bestellung ist eingegangen und wird nun bearbeitet. Die Einzelheiten "
8262
  "deiner Bestellung kannst du der nachfolgenden Tabelle entnehmen."
8263
 
8264
- #: woocommerce-germanized/includes/class-wc-gzd-emails.php:375
8265
  msgid "Someone requested a password reset for your account."
8266
  msgstr ""
8267
  "Jemand hat das Zurücksetzen des Passworts für deinen Account beantragt."
8268
 
8269
- #: woocommerce-germanized/includes/class-wc-gzd-emails.php:390
8270
  #, php-format
8271
  msgid "Thanks for creating an account on %s."
8272
  msgstr "Danke, dass du ein Konto bei %s erstellt hast."
8273
 
8274
  # @ woocommerce-germanized
8275
- #: woocommerce-germanized/includes/class-wc-gzd-emails.php:1073
8276
  msgctxt "revocation-form"
8277
  msgid "Forward your Revocation online"
8278
  msgstr "Deinen Widerruf online erklären"
@@ -8287,85 +9005,85 @@ msgstr ""
8287
  "Bitte installiere <a href=\"%s\" target=\"_blank\">WooCommerce</a> bevor du "
8288
  "WooCommerce Germanized installierst. Vielen Dank!"
8289
 
8290
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:481
8291
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:495
8292
  msgid "Reduced rate"
8293
  msgstr "Ermäßigter Steuersatz"
8294
 
8295
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:537
8296
  #, php-format
8297
  msgctxt "vat-rate-import"
8298
  msgid "VAT %s"
8299
  msgstr "MwSt. %s"
8300
 
8301
  # @ woocommerce-germanized
8302
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:650
8303
  msgctxt "Page slug"
8304
  msgid "data-security"
8305
  msgstr "datenschutzerklaerung"
8306
 
8307
  # @ woocommerce-germanized
8308
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:651
8309
  msgctxt "Page title"
8310
  msgid "Data Security Statement"
8311
  msgstr "Datenschutzerklärung"
8312
 
8313
  # @ woocommerce-germanized
8314
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:655
8315
  msgctxt "Page slug"
8316
  msgid "imprint"
8317
  msgstr "impressum"
8318
 
8319
  # @ woocommerce-germanized
8320
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:656
8321
  msgctxt "Page title"
8322
  msgid "Imprint"
8323
  msgstr "Impressum"
8324
 
8325
  # @ woocommerce-germanized
8326
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:660
8327
  msgctxt "Page slug"
8328
  msgid "terms"
8329
  msgstr "agb"
8330
 
8331
  # @ woocommerce-germanized
8332
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:661
8333
  msgctxt "Page title"
8334
  msgid "Terms & Conditions"
8335
  msgstr "AGB"
8336
 
8337
  # @ woocommerce-germanized
8338
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:665
8339
  msgctxt "Page slug"
8340
  msgid "revocation"
8341
  msgstr "widerrufsbelehrung"
8342
 
8343
  # @ woocommerce-germanized
8344
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:666
8345
  msgctxt "Page title"
8346
  msgid "Power of Revocation"
8347
  msgstr "Widerrufsbelehrung"
8348
 
8349
  # @ woocommerce-germanized
8350
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:670
8351
  msgctxt "Page slug"
8352
  msgid "shipping-methods"
8353
  msgstr "versandarten"
8354
 
8355
  # @ woocommerce-germanized
8356
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:671
8357
  msgctxt "Page title"
8358
  msgid "Shipping Methods"
8359
  msgstr "Versandarten"
8360
 
8361
  # @ woocommerce-germanized
8362
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:675
8363
  msgctxt "Page slug"
8364
  msgid "payment-methods"
8365
  msgstr "bezahlmoeglichkeiten"
8366
 
8367
  # @ woocommerce-germanized
8368
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:676
8369
  msgctxt "Page title"
8370
  msgid "Payment Methods"
8371
  msgstr "Zahlungsarten"
@@ -8583,12 +9301,18 @@ msgstr "Kontrolliere bitte %s. Hier fehlt eine Einwilligung."
8583
  msgid "Checkbox with name %s does already exist."
8584
  msgstr "Eine Checkbox mit dem Namen %s existiert bereits."
8585
 
 
 
 
 
 
 
8586
  # @ woocommerce-germanized
8587
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:776
8588
  msgid "Enable checkbox"
8589
  msgstr "Checkbox aktivieren"
8590
 
8591
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:785
8592
  msgid ""
8593
  "Choose a name to identify your checkbox. Upon creating a new checkbox, this "
8594
  "value is being used to generate the Id."
@@ -8596,11 +9320,11 @@ msgstr ""
8596
  "Wähle einen Namen aus, um deine Checkbox zu identifizieren. Bei Erstellung "
8597
  "einer neuen Checkbox wird dieser Wert verwendet um eine Id zu erstellen."
8598
 
8599
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:790
8600
  msgid "Id"
8601
  msgstr "Id"
8602
 
8603
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:794
8604
  msgid ""
8605
  "The checkbox Id is the unique indentifier which is used to identify the "
8606
  "checkbox within the code. Cannot be edited after creating the checkbox."
@@ -8609,25 +9333,25 @@ msgstr ""
8609
  "Code heraus zugreifbar zu machen. Kann nach dem Erstellen einer Checkbox "
8610
  "nicht mehr verändert werden."
8611
 
8612
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:803
8613
  msgid "Describe the use case of your checkbox."
8614
  msgstr "Beschreibe hier den Use-Case deiner Checkbox."
8615
 
8616
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:813
8617
  msgid "Choose a label to be inserted next to the checkbox."
8618
  msgstr "Wähle eine Beschriftung aus, die neben der Checkbox platziert wird."
8619
 
8620
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:814
8621
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:824
8622
  #, php-format
8623
  msgid "You may use one of the following placeholders within the text: %s"
8624
  msgstr "Du kannst einen der folgenden Platzhalter in deinem Text verwenden: %s"
8625
 
8626
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:819
8627
  msgid "Error Message"
8628
  msgstr "Fehlermeldung"
8629
 
8630
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:823
8631
  msgid ""
8632
  "Choose an error message to be shown when the user has not confirmed the "
8633
  "checkbox."
@@ -8636,25 +9360,25 @@ msgstr ""
8636
  "die Checkbox nicht bestätigt hat."
8637
 
8638
  # @ woocommerce-germanized
8639
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:829
8640
  msgid "Hide input"
8641
  msgstr "Ausblenden"
8642
 
8643
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:832
8644
  msgid "Do only show a label and hide the actual checkbox."
8645
  msgstr ""
8646
  "Zeige lediglich die Beschriftung und entferne die eigentliche Checkbox."
8647
 
8648
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:840
8649
  msgid "Mark the checkbox as mandatory."
8650
  msgstr "Checkbox zum Pflichtfeld machen."
8651
 
8652
  # @ woocommerce-germanized
8653
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:845
8654
  msgid "Locations"
8655
  msgstr "Orte"
8656
 
8657
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:849
8658
  msgid "Choose where to display your checkbox."
8659
  msgstr "Wähle einen Ort aus, an dem die Checkbox platziert werden soll."
8660
 
@@ -8931,8 +9655,8 @@ msgstr "Anrede"
8931
 
8932
  # @ woocommerce-germanized
8933
  #: woocommerce-germanized/includes/class-wc-gzd-revocation.php:53
8934
- #: woocommerce-germanized/includes/wc-gzd-core-functions.php:600
8935
- #: woocommerce-germanized/includes/wc-gzd-core-functions.php:617
8936
  msgid "Ms."
8937
  msgstr "Frau"
8938
 
@@ -9791,6 +10515,24 @@ msgstr "Widerrufsrecht"
9791
  msgid "Data Security"
9792
  msgstr "Datenschutzerklärung"
9793
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9794
  # @ woocommerce-germanized
9795
  #: woocommerce-germanized/includes/wc-gzd-template-functions.php:225
9796
  #: woocommerce-germanized/templates/checkout/edit-data-notice.php:25
@@ -10142,7 +10884,7 @@ msgctxt "revocation-form"
10142
  msgid "Forward Revocation"
10143
  msgstr "Widerruf erklären"
10144
 
10145
- #: woocommerce-germanized/templates/global/complaints.php:21
10146
  msgid ""
10147
  "Alternative Dispute Resolution in accordance with Art. 14 (1) ODR-VO and § "
10148
  "36 VSBG:"
@@ -10164,7 +10906,7 @@ msgstr "Germanized benötigt mindestens PHP 5.6. Bitte %s deine PHP-Version."
10164
  msgid "upgrade"
10165
  msgstr "Upgrade"
10166
 
10167
- #: woocommerce-germanized/woocommerce-germanized.php:331
10168
  #, php-format
10169
  msgid ""
10170
  "This version of the Corona Helper Plugin includes a bug which could lead to "
@@ -11412,6 +12154,50 @@ msgstr "vendidero"
11412
  msgid "https://vendidero.de"
11413
  msgstr "https://vendidero.de"
11414
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11415
  #~ msgid "PDF Layout"
11416
  #~ msgstr "PDF Layout"
11417
 
@@ -11656,10 +12442,6 @@ msgstr "https://vendidero.de"
11656
  #~ msgid "Invalid shipment"
11657
  #~ msgstr "Ungültige Sendung"
11658
 
11659
- #~ msgctxt "dhl"
11660
- #~ msgid "Tracking"
11661
- #~ msgstr "Sendungsverfolgung"
11662
-
11663
  #, php-format
11664
  #~ msgctxt "dhl"
11665
  #~ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: WooCommerce Germanized\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2020-12-07 11:55+0100\n"
6
+ "PO-Revision-Date: 2020-12-07 11:56+0100\n"
7
  "Last-Translator: holzhannes <holzhannes@posteo.de>\n"
8
  "Language-Team: \n"
9
  "Language: de_DE\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
+ "X-Generator: Poedit 2.4.2\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
  "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
17
  "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
39
  "X-Poedit-SearchPathExcluded-12: woocommerce-trusted-shops/build\n"
40
  "X-Poedit-SearchPathExcluded-13: woocommerce-germanized/assets\n"
41
 
42
+ # @ woocommerce-germanized
43
+ #: woocommerce-germanized-dhl/includes/admin/views/html-deutsche-post-additional-services.php:14
44
+ msgctxt "dhl"
45
+ msgid "Additional Services"
46
+ msgstr "Zusätzliche Leistungen"
47
+
48
+ #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-deutsche-post-label-backbone-form.php:30
49
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:494
50
+ #, php-format
51
+ msgid ""
52
+ "Sorry but none of your selected <a href=\"%s\">Deutsche Post Products</a> is "
53
+ "available for this shipment. Please verify your shipment data (e.g. weight) "
54
+ "and try again."
55
+ msgstr ""
56
+ "Leider sind keine der von dir ausgewählten <a href=\"%s\">Deutsche Post "
57
+ "Produkte</a> verfügbar für diese Sendung. Bitte prüfe die Sendungsdaten (z."
58
+ "B. Gewicht) und versuche es erneut."
59
+
60
+ # @ woocommerce-germanized
61
+ #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-deutsche-post-label-backbone-form.php:37
62
+ msgctxt "dhl"
63
+ msgid "Product"
64
+ msgstr "Produkt"
65
+
66
+ # @ woocommerce-germanized
67
+ #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-deutsche-post-label-backbone-form.php:55
68
+ msgctxt "dhl"
69
+ msgid "Page Format"
70
+ msgstr "Seitenformat"
71
+
72
  # @ woocommerce-germanized
73
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:18
74
  msgctxt "dhl"
86
  msgstr "Zollabgabe"
87
 
88
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:65
89
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:141
90
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:974
91
  #: woocommerce-germanized-dhl/src/ParcelServices.php:29
92
  msgctxt "dhl"
93
  msgid "Preferred Day"
101
 
102
  # @ woocommerce-germanized
103
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:87
104
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:169
105
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:994
106
  #: woocommerce-germanized-dhl/src/ParcelServices.php:43
107
  msgctxt "dhl"
108
  msgid "Preferred Location"
109
  msgstr "Wunschort"
110
 
111
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:98
112
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1002
113
  #: woocommerce-germanized-dhl/src/ParcelServices.php:48
114
  msgctxt "dhl"
115
  msgid "Preferred Neighbor"
122
 
123
  # @ woocommerce-germanized
124
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:121
125
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:761
126
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:830
127
  msgctxt "dhl"
128
  msgid "Name"
129
  msgstr "Name"
130
 
131
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:130
132
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:768
133
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:837
134
  msgctxt "dhl"
135
  msgid "Company"
136
  msgstr "Firma"
137
 
138
  # @ woocommerce-germanized
139
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:139
140
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:590
141
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:775
142
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:844
143
  msgctxt "dhl"
144
  msgid "Street"
145
  msgstr "Straße"
152
 
153
  # @ woocommerce-germanized
154
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:159
155
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:591
156
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:796
157
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:865
158
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder.php:27
159
  msgctxt "dhl"
160
  msgid "Postcode"
162
 
163
  # @ woocommerce-germanized
164
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:168
165
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:592
166
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:789
167
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:858
168
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder.php:30
169
  msgctxt "dhl"
170
  msgid "City"
171
  msgstr "Stadt"
172
 
173
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:179
174
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:812
175
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:881
176
  msgctxt "dhl"
177
  msgid "Phone"
178
  msgstr "Telefon"
179
 
180
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:188
181
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:819
182
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:888
183
  msgctxt "dhl"
184
  msgid "Email"
185
  msgstr "E-Mail"
207
 
208
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:228
209
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:331
210
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:534
211
  msgctxt "dhl"
212
  msgid "GoGreen"
213
  msgstr "GoGreen"
229
  msgstr "Keine Nachbarschaftszustellung"
230
 
231
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:272
232
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:562
233
  msgctxt "dhl"
234
  msgid "Named person only"
235
  msgstr "Persönliche Übergabe"
256
  msgstr "Mindestalter"
257
 
258
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:322
259
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:606
260
  msgctxt "dhl"
261
  msgid "Premium"
262
  msgstr "Premium"
268
  msgstr "Empfänger"
269
 
270
  #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:15
271
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1461
272
  msgctxt "dhl"
273
  msgid "DHL Labels"
274
  msgstr "DHL Labels"
301
 
302
  # @ woocommerce-germanized
303
  #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:41
304
+ #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:106
305
  msgctxt "dhl"
306
+ msgid "Label Automation"
307
+ msgstr "Label Automatisierung"
308
 
309
  #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:44
310
+ #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:109
311
  #, php-format
312
  msgctxt "dhl"
313
  msgid ""
347
  "überschreiben die <a href=\"%s\">globalen Einstellungen</a>."
348
 
349
  # @ woocommerce-germanized
350
+ #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:81
351
+ msgctxt "dhl"
352
+ msgid "Deutsche Post Labels"
353
+ msgstr "Deutsche Post Labels"
354
+
355
+ #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:84
356
+ #, php-format
357
+ msgctxt "dhl"
358
+ msgid ""
359
+ "Adjust Deutsche Post label settings. Changes override <a href=\"%s\">global "
360
+ "settings</a>."
361
+ msgstr ""
362
+ "Deutsche Post Label Einstellungen anpassen. Änderungen überschreiben die <a "
363
+ "href=\"%s\">globalen Einstellungen</a>."
364
+
365
+ #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:94
366
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1352
367
+ msgctxt "dhl"
368
+ msgid "Printing"
369
+ msgstr "Druck"
370
+
371
+ #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:97
372
+ #, php-format
373
+ msgctxt "dhl"
374
+ msgid ""
375
+ "Adjust label printing settings. Changes override <a href=\"%s\">global "
376
+ "settings</a>."
377
+ msgstr ""
378
+ "Druck-Einstellungen für Label anpassen. Änderungen überschreiben die <a href="
379
+ "\"%s\">globalen Einstellungen</a>."
380
+
381
+ # @ woocommerce-germanized
382
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:160
383
  msgctxt "dhl time context"
384
  msgid "None"
385
  msgstr "Keine"
386
 
387
  # @ woocommerce-germanized
388
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:170
389
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:280
390
  msgctxt "dhl day context"
391
  msgid "None"
392
  msgstr "Keiner"
393
 
394
  # @ woocommerce-germanized
395
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:195
396
  msgctxt "dhl"
397
  msgid "Delivery Duty Unpaid"
398
  msgstr "Delivery Duty Unpaid"
399
 
400
  # @ woocommerce-germanized
401
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:196
402
  msgctxt "dhl"
403
  msgid "Delivery Duty Paid"
404
  msgstr "Delivery Duty Paid"
405
 
406
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:197
407
  msgctxt "dhl"
408
  msgid "Delivery Duty Paid (excl. VAT )"
409
  msgstr "Delivered Duty Paid (exkl. MwSt.)"
410
 
411
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:198
412
  msgctxt "dhl"
413
  msgid "Delivery Duty Paid (excl. Duties, taxes and VAT)"
414
  msgstr "Delivery Duty Paid (exkl. Zölle, Steuern und MwSt.)"
415
 
416
  # @ woocommerce-germanized
417
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:226
418
  msgctxt "age context"
419
  msgid "None"
420
  msgstr "Keine"
421
 
422
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:227
423
  msgctxt "dhl"
424
  msgid "Minimum age of 16"
425
  msgstr "Mindestens 16 Jahre"
426
 
427
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:228
428
  msgctxt "dhl"
429
  msgid "Minimum age of 18"
430
  msgstr "Mindestens 18 Jahre"
431
 
432
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:253
433
  msgctxt "dhl"
434
  msgid "Shipment #{shipment_id} to order {order_id}"
435
  msgstr "Sendung #{shipment_id} zur Bestellung {order_id}"
436
 
437
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:269
438
  msgctxt "dhl"
439
  msgid "Return #{shipment_id} to order {order_id}"
440
  msgstr "Retoure #{shipment_id} zur Bestellung {order_id}"
441
 
442
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:285
443
  msgctxt "dhl"
444
  msgid "Return shipment #{shipment_id} to order #{order_id}"
445
  msgstr "Retourensendung #{shipment_id} zur Bestellung #{order_id}"
446
 
447
  # @ woocommerce-germanized
448
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:365
449
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:188
450
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:496
451
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:836
452
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder.php:38
453
  msgctxt "dhl"
454
  msgid "Packstation"
455
  msgstr "Packstation"
456
 
457
  # @ woocommerce-germanized
458
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:366
459
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:367
460
  msgctxt "dhl"
461
  msgid "Postfiliale"
462
  msgstr "Postfiliale"
463
 
464
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:451
465
  msgctxt "dhl"
466
  msgid "Receiver is missing or does not exist."
467
  msgstr "Empfänger fehlt oder existiert nicht."
468
 
469
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:470
470
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:555
471
  #, php-format
472
  msgctxt "dhl"
473
  msgid "Shipment order #%s does not exist"
474
  msgstr "Bestellung zur Sendung #%s existiert nicht"
475
 
476
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:481
477
+ msgctxt "dhl"
478
+ msgid "The services chosen are not available for the current product."
479
+ msgstr "Die ausgewählten Services sind für dieses Produkt nicht verfügbar."
480
+
481
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:521
482
+ #, php-format
483
+ msgctxt "dhl"
484
+ msgid "Deutsche Post product is missing for %s."
485
+ msgstr "Deutsche Post Produkt fehlt oder ist nicht verfügbar für %s."
486
+
487
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:597
488
  #, php-format
489
  msgctxt "dhl"
490
  msgid "%s of the return address is a mandatory field."
491
  msgstr "%s der Rücksendeadresse ist ein Pflichtfeld."
492
 
493
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:602
494
  msgctxt "dhl"
495
  msgid "Please either add a return company or name."
496
  msgstr ""
497
  "Bitte gib entweder einen Firmennamen oder Namen für die Rücksendeadresse an."
498
 
499
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:621
500
  msgctxt "dhl"
501
  msgid "Error while parsing preferred day."
502
  msgstr "Fehler beim Einlesen des Wunschtags."
503
 
504
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:632
505
  msgctxt "dhl"
506
  msgid "Error while parsing preferred time."
507
  msgstr "Fehler beim Einlesen der Wunschzeit."
508
 
509
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:657
510
  msgctxt "dhl"
511
  msgid "The visual min age check is invalid."
512
  msgstr "Das Alter der Alterssichtprüfung ist ungültig."
513
 
514
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:681
515
  msgctxt "dhl"
516
  msgid "The ident min age check is invalid."
517
  msgstr "Das Alter des Ident-Checks ist ungültig."
518
 
519
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:688
520
  msgctxt "dhl"
521
  msgid "There was an error parsing the date of birth for the identity check."
522
  msgstr ""
523
  "Beim Einlesen des Geburtsdatums für den Ident-Check trat ein Problem auf."
524
 
525
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:693
526
  msgctxt "dhl"
527
  msgid ""
528
  "Either a minimum age or a date of birth must be added to the ident check."
531
  "hinzugefügt werden."
532
 
533
  # @ woocommerce-germanized
534
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:707
535
  #, php-format
536
  msgctxt "dhl"
537
  msgid "%s duties element does not exist."
538
  msgstr "%s Zollabgabe existiert nicht."
539
 
540
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1299
541
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1383
542
  msgctxt "dhl"
543
  msgid "Invalid shipment"
544
  msgstr "Ungültige Sendung"
545
 
546
  # @ woocommerce-germanized
547
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1303
548
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1387
549
  msgctxt "dhl"
550
  msgid "Order does not exist"
551
  msgstr "Bestellung existiert nicht"
552
 
553
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1335
554
  msgctxt "dhl"
555
  msgid "Error while creating the label instance"
556
  msgstr "Fehler beim Erstellen der Label-Instanz"
557
 
558
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1455
559
  msgctxt "dhl"
560
  msgid "Invalid label"
561
  msgstr "Ungültiges Label"
562
 
563
  # @ woocommerce-germanized
564
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1543
565
  msgctxt "dhl"
566
  msgid "DHL Retoure International A"
567
  msgstr "DHL Retoure International A"
568
 
569
  # @ woocommerce-germanized
570
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1544
571
  msgctxt "dhl"
572
  msgid "DHL Retoure International B"
573
  msgstr "DHL Retoure International B"
574
 
575
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1553
576
  msgctxt "dhl"
577
  msgid "DHL Retoure Online"
578
  msgstr "DHL Retoure Online"
579
 
580
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1570
581
  msgctxt "dhl"
582
  msgid "DHL Paket Connect"
583
  msgstr "DHL Paket Connect"
584
 
585
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1571
586
  msgctxt "dhl"
587
  msgid "DHL Europaket (B2B)"
588
  msgstr "DHL Europaket (B2B)"
589
 
590
  # @ woocommerce-germanized
591
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1572
592
  msgctxt "dhl"
593
  msgid "DHL Paket International"
594
  msgstr "DHL Paket International"
595
 
596
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1647
597
  msgctxt "dhl"
598
  msgid "DHL Paket"
599
  msgstr "DHL Paket"
600
 
601
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1648
602
  msgctxt "dhl"
603
  msgid "DHL Paket PRIO"
604
  msgstr "DHL Paket PRIO"
605
 
606
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1649
607
  msgctxt "dhl"
608
  msgid "DHL Paket Taggleich"
609
  msgstr "DHL Paket Taggleich"
610
 
611
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1650
612
  msgctxt "dhl"
613
+ msgid "DHL Warenpost"
614
+ msgstr "DHL Warenpost"
615
 
616
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1737
617
  msgctxt "dhl"
618
  msgid "Error while uploading label."
619
  msgstr "Fehler beim Hochladen des Labels."
620
 
621
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:57
622
+ msgctxt "dhl"
623
+ msgid "Refreshed data successfully."
624
+ msgstr "Daten erfolgreich aktualisiert."
625
+
626
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:57
627
+ #, php-format
628
+ msgctxt "dhl"
629
+ msgid ""
630
+ "Error while refreshing data. Please check your Internetmarke <a href=\"%s"
631
+ "\">logs</a>."
632
+ msgstr ""
633
+ "Fehler beim Datenabruf. Bitte prüfe deine Internetmarke <a href=\"%s\">Logs</"
634
+ "a>."
635
+
636
  # @ woocommerce-germanized
637
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:174
638
  msgctxt "dhl"
639
  msgid "Receiver Ids"
640
  msgstr "Empfänger IDs"
641
 
642
  # @ woocommerce-germanized
643
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:181
644
  msgctxt "dhl"
645
  msgid "Receiver Id"
646
  msgstr "Empfänger ID"
647
 
648
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:181
649
  msgctxt "dhl"
650
  msgid "Find your Receiver Ids within your DHL contract data."
651
  msgstr "Die Empfänger IDs findest du im DHL Geschäftskundenportal."
652
 
653
  # @ woocommerce-germanized
654
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:182
655
  msgctxt "dhl"
656
  msgid "Country Code"
657
  msgstr "Ländercode"
658
 
659
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:182
660
  msgctxt "dhl"
661
  msgid "Leave empty to use the Receiver Id as fallback."
662
  msgstr "Leer lassen, um diese Empfänger ID als Fallback zu verwenden."
663
 
664
  # @ woocommerce-germanized
665
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:202
666
  msgctxt "dhl"
667
  msgid "+ Add receiver"
668
  msgstr "+ Empfänger hinzufügen"
669
 
670
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:202
671
  msgctxt "dhl"
672
  msgid "Remove selected receiver(s)"
673
  msgstr "Ausgewählte Empfänger löschen"
674
 
675
  # @ woocommerce-germanized
676
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:238
677
  msgctxt "dhl"
678
  msgid "Select a country"
679
  msgstr "Land auswählen"
680
 
681
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:240
682
  msgctxt "dhl"
683
+ msgid "HS-Code (DHL)"
684
+ msgstr "Zolltarifnummer (HS-Code, DHL)"
685
 
686
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:240
687
  msgctxt "dhl"
688
+ msgid ""
689
+ "The HS Code is a number assigned to every possible commodity that can be "
690
+ "imported or exported from any country."
691
  msgstr ""
692
+ "Das Harmonisierte System (HS) der Zollnomenklatur ist ein international "
693
+ "standardisiertes System von Namen und Nummern zur Klassifizierung "
694
+ "gehandelter Produkte."
695
 
696
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:241
697
  msgctxt "dhl"
698
  msgid "Country of manufacture (DHL)"
699
  msgstr "Herstellungsland (DHL)"
700
 
701
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:241
702
  msgctxt "dhl"
703
  msgid ""
704
  "The country of manufacture is needed for customs of international shipping."
706
  "Das Herstellungsland wird für die Zollabwicklung bei internationalen "
707
  "Sendungen benötigt."
708
 
709
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:262
710
  #, php-format
711
  msgctxt "dhl"
712
  msgid ""
716
  "Das Verzeichnis zum Speichern von DHL Labels fehlt. Bitte erstelle den "
717
  "Ordner %s manuell und stelle sicher, dass der Ordner beschreibbar ist."
718
 
719
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:269
720
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1460
721
+ #: woocommerce-germanized-dhl/src/ShippingProvider/DHL.php:39
722
  msgctxt "dhl"
723
  msgid "DHL"
724
  msgstr "DHL"
725
 
726
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:284
727
  msgctxt "dhl"
728
  msgid "DHL Label"
729
  msgstr "DHL Label"
730
 
731
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:296
732
  msgctxt "dhl"
733
  msgid ""
734
  "This label has been generated by the DHL for WooCommerce Plugin and is shown "
738
  "Kompatibilitäts-Gründen angezeigt."
739
 
740
  # @ woocommerce-germanized
741
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:297
742
  msgctxt "dhl"
743
  msgid "Download label"
744
  msgstr "Label downloaden"
745
 
746
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:33
747
  msgctxt "dhl"
748
  msgid "Enable DHL"
749
  msgstr "DHL aktivieren"
750
 
751
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:34
752
  msgctxt "dhl"
753
  msgid ""
754
  "If you want to ship your shipments via DHL and create labels to your "
757
  "Wenn du deine Sendungen mit DHL verschicken und Labels zu deinen Sendungen "
758
  "erzeugen möchtest, aktiviere die DHL Integration."
759
 
760
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:47
761
  msgctxt "dhl"
762
  msgid "Customer Number"
763
  msgstr "Kundennummer"
764
 
765
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:48
766
  msgctxt "dhl"
767
  msgid ""
768
  "Insert your DHL business customer number (EKP) here. If you are not yet a "
771
  "Füge hier deine DHL Kundennummer (EKP) ein. Wenn du noch kein Geschäftskunde "
772
  "bist, solltest du dich zuerst als Geschäftskunde bei DHL registrieren."
773
 
774
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:61
775
  msgctxt "dhl"
776
  msgid "API Access"
777
  msgstr "API Zugriff"
778
 
779
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:62
780
  msgctxt "dhl"
781
  msgid ""
782
  "To create labels and embed DHL services, our software needs access to the "
786
  "Software Zugang zur API. Du solltest hier deine Zugangsdaten zum DHL "
787
  "Geschäftskundenportal eingeben."
788
 
789
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:80
790
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:328
791
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:477
792
  msgctxt "dhl"
793
  msgid "Inlay Returns"
794
  msgstr "Beilageretouren"
795
 
796
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:81
797
  msgctxt "dhl"
798
  msgid ""
799
  "If you want to provide your customers with inlay return labels for your "
802
  "Wenn du Beilageretouren-Labels zu deinen Sendungen hinzufügen möchtest, "
803
  "solltest du diese Funktion standardmäßig aktivieren."
804
 
805
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:94
806
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:723
807
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:953
808
  msgctxt "dhl"
809
  msgid "Retoure"
810
  msgstr "Retoure"
811
 
812
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:95
813
  msgctxt "dhl"
814
  msgid ""
815
  "If you want to create DHL labels to returns you should activate this "
820
  "aktivieren. Stelle sicher, dass DHL Online Retoure in deinem Vertrag "
821
  "freigeschaltet ist."
822
 
823
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:108
824
  msgctxt "dhl"
825
  msgid "Age verification"
826
  msgstr "Altersverifikation"
827
 
828
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:109
829
  msgctxt "dhl"
830
  msgid ""
831
  "Use this feature to sync the Germanized age verification checkbox with the "
838
  "„Alterssichtprüfung“ von DHL automatisch aktiviert."
839
 
840
  # @ woocommerce-germanized
841
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:122
842
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:747
843
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1369
844
  msgctxt "dhl"
845
  msgid "Automation"
846
  msgstr "Automatisierung"
847
 
848
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:123
849
  msgctxt "dhl"
850
  msgid ""
851
  "You might want to save some time and let Germanized generate labels "
855
  "automatisch erzeugen lassen, sobald eine Sendung in einen bestimmten Status "
856
  "wechselt."
857
 
858
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:142
859
  msgctxt "dhl"
860
  msgid ""
861
  "Let your customers choose a preferred day (if the service is available at "
865
  "zur Verfügung steht) für die Lieferung in der Kasse auswählen."
866
 
867
  # @ woocommerce-germanized
868
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:155
869
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:982
870
  msgctxt "dhl"
871
  msgid "Fee"
872
  msgstr "Gebühr"
873
 
874
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:156
875
  msgctxt "dhl"
876
  msgid ""
877
  "Optionally charge your customers an additional fee for preferred services "
880
  "Optional kannst du die Gebühr für die Auswahl des Wunschtags oder anderer "
881
  "Wunschpaket-Services an deine Kunden weiterreichen."
882
 
883
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:170
884
  msgctxt "dhl"
885
  msgid ""
886
  "Allow your customers to send their parcels to a preferred location e.g. a "
889
  "Lasse deine Kunden einen Wunschort für die Abgabe ihres Pakets in der Kasse "
890
  "auswählen. Dieser Service wird von DHL nicht zusätzlich berechnet."
891
 
892
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:189
893
  msgctxt "dhl"
894
  msgid ""
895
  "Allow your customers to choose packstation (and/or other DHL location types "
898
  "Lasse deine Kunden eine Packstation (und/oder andere DHL Standorte, wie im "
899
  "Folgenden konfiguriert) als Lieferadresse auswählen."
900
 
901
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:202
902
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1130
903
  msgctxt "dhl"
904
  msgid "Map"
905
  msgstr "Karte"
906
 
907
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:203
908
  msgctxt "dhl"
909
  msgid ""
910
  "This option adds a map overlay view to let your customers choose a DHL "
915
  "DHL Standortes in der Nähe noch einfacher zu machen. Du benötigst für die "
916
  "Kartenansicht einen gültigen Google Maps API Schlüssel."
917
 
918
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:223
919
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1167
920
  msgctxt "dhl"
921
  msgid "Enable"
922
  msgstr "Aktivieren"
923
 
924
  # @ woocommerce-germanized
925
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:224
926
  msgctxt "dhl"
927
  msgid "Enable DHL integration."
928
  msgstr "DHL Integration aktivieren."
929
 
930
  # @ woocommerce-germanized
931
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:231
932
  msgctxt "dhl"
933
  msgid "Customer Number (EKP)"
934
  msgstr "Kundennummer (EKP)"
935
 
936
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:233
937
  #, php-format
938
  msgctxt "dhl"
939
  msgid ""
943
  "Deine 10-stellige DHL Kundennummer (EKP). Finde deine %s im DHL "
944
  "Geschäftskundenportal."
945
 
946
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:233
947
  msgctxt "dhl"
948
  msgid "customer number"
949
  msgstr "Kundennummer"
950
 
951
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:242
952
  msgctxt "dhl"
953
  msgid "API"
954
  msgstr "API"
955
 
956
  # @ woocommerce-germanized
957
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:245
958
  msgctxt "dhl"
959
  msgid "Enable Sandbox"
960
  msgstr "Sandbox aktivieren"
961
 
962
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:246
963
  msgctxt "dhl"
964
  msgid "Activate Sandbox mode for testing purposes."
965
  msgstr "Aktiviere den Sandbox Modus."
966
 
967
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:253
968
  msgctxt "dhl"
969
  msgid "Live Username"
970
  msgstr "Benutzer"
971
 
972
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:255
973
  #, php-format
974
  msgctxt "dhl"
975
  msgid ""
979
  "Dein Benutzername zum DHL Geschäftskundenportal. Bitte beachte die "
980
  "Kleinschreibung und teste deine Zugangsdaten vorab %s."
981
 
982
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:255
983
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:264
984
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:273
985
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:282
986
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:299
987
  msgctxt "dhl"
988
  msgid "here"
989
  msgstr "hier"
990
 
991
  # @ woocommerce-germanized
992
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:262
993
  msgctxt "dhl"
994
  msgid "Live Password"
995
  msgstr "Passwort"
996
 
997
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:264
998
  #, php-format
999
  msgctxt "dhl"
1000
  msgid ""
1006
  "Gültigkeit des Passworts nach 3 (Standard-Benutzer) bzw. 12 (System-"
1007
  "Benutzer) Monaten und teste deine Zugangsdaten vorab %s."
1008
 
1009
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:271
1010
  msgctxt "dhl"
1011
  msgid "Sandbox Username"
1012
  msgstr "Sandbox Benutzername"
1013
 
1014
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:273
1015
  #, php-format
1016
  msgctxt "dhl"
1017
  msgid ""
1021
  "Dein Benutzername zum DHL Entwicklerportal. Bitte beachte die "
1022
  "Kleinschreibung und teste deine Zugangsdaten vorab %s."
1023
 
1024
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:280
1025
  msgctxt "dhl"
1026
  msgid "Sandbox Password"
1027
  msgstr "Sandbox Passwort"
1028
 
1029
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:282
1030
  #, php-format
1031
  msgctxt "dhl"
1032
  msgid ""
1036
  "Dein Passwort zum DHL Entwicklerportal. Bitte teste deine Zugangsdaten vorab "
1037
  "%s."
1038
 
1039
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:295
1040
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:338
1041
  msgctxt "dhl"
1042
  msgid "Products and Participation Numbers"
1043
  msgstr "Produkte und Teilnahmenummern"
1044
 
1045
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:299
1046
  #, php-format
1047
  msgctxt "dhl"
1048
  msgid ""
1052
  "Bitte füge deine Teilnahmenummer für das dazugehörige Produkt ein. Du kannst "
1053
  "die anderen Teilnahmenummern später %s anpassen."
1054
 
1055
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:338
1056
  #, php-format
1057
  msgctxt "dhl"
1058
  msgid ""
1066
  "Zeichen der dazugehörigen Abrechnungsnummer, die du in deinem %s findest (z."
1067
  "B.: 01)."
1068
 
1069
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:338
1070
  msgctxt "dhl"
1071
  msgid "contract data"
1072
  msgstr "Vertragsdaten"
1073
 
1074
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:392
1075
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1200
1076
  msgctxt "dhl"
1077
  msgid "Domestic Default Service"
1078
+ msgstr "Standard Service (national)"
1079
 
1080
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:396
1081
  msgctxt "dhl"
1082
  msgid ""
1083
  "Please select your default DHL shipping service for domestic shipments that "
1088
  "deine Kunden anbietest (du kannst das Produkt für jede einzelne Sendung "
1089
  "nachträglich ändern)."
1090
 
1091
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:402
1092
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1220
1093
  msgctxt "dhl"
1094
  msgid "Int. Default Service"
1095
+ msgstr "Standard Service (Int.)"
1096
 
1097
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:406
1098
  msgctxt "dhl"
1099
  msgid ""
1100
  "Please select your default DHL shipping service for cross-border shipments "
1106
  "nachträglich ändern)."
1107
 
1108
  # @ woocommerce-germanized
1109
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:412
1110
  msgctxt "dhl"
1111
  msgid "Default Duty"
1112
  msgstr "Standard Zoll"
1113
 
1114
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:416
1115
  msgctxt "dhl"
1116
  msgid "Please select a default duty type."
1117
  msgstr "Bitte wähle eine Standard-Zollabrechnung aus."
1118
 
1119
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:423
1120
  msgctxt "dhl"
1121
  msgid "Codeable"
1122
  msgstr "Leitcodierbar"
1123
 
1124
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:424
1125
  msgctxt "dhl"
1126
  msgid "Generate label only if address can be automatically retrieved DHL."
1127
  msgstr "Erzeuge Labels nur dann, wenn die Adresse von DHL erkannt wird."
1128
 
1129
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:428
1130
  msgctxt "dhl"
1131
  msgid ""
1132
  "Choose this option if you want to make sure that by default labels are only "
1137
  "ist."
1138
 
1139
  # @ woocommerce-germanized
1140
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:432
1141
  msgctxt "dhl"
1142
  msgid "Default weight (kg)"
1143
  msgstr "Standardgewicht (kg)"
1144
 
1145
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:434
1146
  msgctxt "dhl"
1147
  msgid ""
1148
  "Choose a default shipment weight to be used for labels if no weight has been "
1151
  "Wähle ein Standard Sendungsgewicht aus, das für Labels verwendet wird, für "
1152
  "die das Gewicht nicht automatisch bestimmt werden kann."
1153
 
1154
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:443
1155
  msgctxt "dhl"
1156
  msgid "Minimum weight (kg)"
1157
  msgstr "Mindestgewicht (kg)"
1158
 
1159
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:445
1160
  msgctxt "dhl"
1161
  msgid ""
1162
  "Choose a minimum weight to be used for labels e.g. to prevent low shipment "
1166
  "eines zu geringen Gewichts Fehler zurückgibt."
1167
 
1168
  # @ woocommerce-germanized
1169
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:457
1170
  msgctxt "dhl"
1171
  msgid "Force email"
1172
  msgstr "E-Mail übertragen"
1173
 
1174
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:458
1175
  msgctxt "dhl"
1176
  msgid "Force transferring customer email to DHL."
1177
  msgstr "E-Mail-Adresse des Kunden immer an DHL übertragen."
1178
 
1179
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:458
1180
  msgctxt "dhl"
1181
  msgid ""
1182
  "By default the customer email address is only transferred in case explicit "
1193
  "diese Option aktivierst."
1194
 
1195
  # @ woocommerce-germanized
1196
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:464
1197
  msgctxt "dhl"
1198
  msgid "Street number"
1199
  msgstr "Hausnummer"
1200
 
1201
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:465
1202
  msgctxt "dhl"
1203
  msgid ""
1204
  "Force existence of a street number within the first address field during "
1207
  "Hausnummer im ersten Adressfeld verpflichtend abfragen, falls es sich um ein "
1208
  "EU-Land handelt."
1209
 
1210
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:466
1211
  msgctxt "dhl"
1212
  msgid ""
1213
  "Enabling this option will force a street number to be provided during "
1218
  "Adressfeld in der Kasse abgefragt wird. Damit verhinderst du fehlende oder "
1219
  "falsche Datensätze."
1220
 
1221
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:478
1222
  msgctxt "dhl"
1223
  msgid ""
1224
  "Additionally create inlay return labels for shipments that support returns."
1226
  "Erzeuge zusätzlich Beilage-Retourenlabels für Sendungen die Retouren "
1227
  "unterstützen."
1228
 
1229
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:497
1230
  msgctxt "dhl"
1231
  msgid "Enable delivery to Packstation."
1232
  msgstr "Aktiviere den Versand an Packstationen."
1233
 
1234
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:498
1235
  msgctxt "dhl"
1236
  msgid "Let customers choose a Packstation as delivery address."
1237
  msgstr "Kunden eine Packstation als Lieferadresse auswählen lassen."
1238
 
1239
  # @ woocommerce-germanized
1240
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:505
1241
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder.php:50
1242
  msgctxt "dhl"
1243
  msgid "Postoffice"
1244
  msgstr "Postfiliale"
1245
 
1246
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:506
1247
  msgctxt "dhl"
1248
  msgid "Enable delivery to Post Offices."
1249
  msgstr "Aktiviere den Versand an Postfilialen."
1250
 
1251
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:507
1252
  msgctxt "dhl"
1253
  msgid "Let customers choose a Post Office as delivery address."
1254
  msgstr "Kunden eine Postfiliale als Lieferadresse auswählen lassen."
1255
 
1256
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:514
1257
  msgctxt "dhl"
1258
  msgid "Parcel Shop"
1259
  msgstr "Paketshop"
1260
 
1261
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:515
1262
  msgctxt "dhl"
1263
  msgid "Enable delivery to Parcel Shops."
1264
  msgstr "Lieferung an Paketshops aktivieren."
1265
 
1266
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:516
1267
  msgctxt "dhl"
1268
  msgid "Let customers choose a Parcel Shop as delivery address."
1269
  msgstr "Kunden einen Paketshop als Lieferadresse auswählen lassen."
1270
 
 
 
 
 
 
1271
  #: woocommerce-germanized-dhl/src/Admin/Settings.php:535
1272
  msgctxt "dhl"
 
 
 
 
 
 
1273
  msgid "Enable the GoGreen Service by default."
1274
  msgstr "Buche den GoGreen Service hinzu."
1275
 
1276
  # @ woocommerce-germanized
1277
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:541
1278
  msgctxt "dhl"
1279
  msgid "Additional Insurance"
1280
  msgstr "Transportversicherung"
1281
 
1282
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:542
1283
  msgctxt "dhl"
1284
  msgid "Add an additional insurance to labels."
1285
  msgstr "Füge eine Transportversicherung zur Sendung hinzu."
1286
 
1287
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:548
1288
  msgctxt "dhl"
1289
  msgid "Retail Outlet Routing"
1290
  msgstr "Filialrouting"
1291
 
1292
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:549
1293
  msgctxt "dhl"
1294
  msgid ""
1295
  "Send undeliverable items to nearest retail outlet instead of immediate "
1298
  "Sende unzustellbare Sendungen in die nächstgelegene Filiale zur Abholung "
1299
  "anstelle diese direkt zurückzusenden."
1300
 
1301
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:555
1302
  msgctxt "dhl"
1303
  msgid "No Neighbor"
1304
  msgstr "Keine Nachbarschaftszustellung"
1305
 
1306
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:556
1307
  msgctxt "dhl"
1308
  msgid "Do not deliver to neighbors."
1309
  msgstr "Schließe eine Ersatzzustellung beim Nachbarn aus."
1310
 
1311
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:563
1312
  msgctxt "dhl"
1313
  msgid "Do only delivery to named person."
1314
  msgstr ""
1315
  "Lasse Pakete nur an den Empfänger persönlich oder an eine bevollmächtigte "
1316
  "Person übergeben."
1317
 
1318
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:569
1319
  msgctxt "dhl"
1320
  msgid "Bulky Goods"
1321
  msgstr "Sperrgut"
1322
 
1323
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:570
1324
  msgctxt "dhl"
1325
  msgid "Deliver as bulky goods."
1326
  msgstr "Sende Pakete als Sperrgut."
1327
 
1328
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:576
1329
  msgctxt "dhl"
1330
+ msgid "Minimum age (Visual check)"
1331
+ msgstr "Mindestalter (Visuell)"
1332
 
1333
  #: woocommerce-germanized-dhl/src/Admin/Settings.php:581
1334
  msgctxt "dhl"
1335
+ msgid "Choose this option if you want to let DHL check your customer's age."
1336
+ msgstr ""
1337
+ "Wähle diese Option aus, wenn du das Alter durch DHL prüfen lassen möchtest."
1338
+
1339
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:584
1340
+ msgctxt "dhl"
1341
+ msgid "Sync (Visual Check)"
1342
+ msgstr "Synchronisation (Visuell)"
1343
+
1344
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:585
1345
+ msgctxt "dhl"
1346
+ msgid "Visually verify age if shipment contains applicable items."
1347
  msgstr ""
1348
  "Aktiviere die Alterssichtprüfung, falls die Sendung zu prüfende Positionen "
1349
  "beinhaltet."
1350
 
1351
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:585
1352
  #, php-format
1353
  msgctxt "dhl"
1354
  msgid ""
1361
  "Alterssichtprüfung automatisch aktiviert, falls eine Sendung zu prüfenden "
1362
  "Produkte beinhaltet."
1363
 
1364
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:585
1365
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:600
1366
  msgctxt "dhl"
1367
  msgid "age verification checkbox"
1368
  msgstr "Checkbox zur Altersprüfung"
1369
 
1370
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:591
1371
+ msgctxt "dhl"
1372
+ msgid "Minimum age (Ident check)"
1373
+ msgstr "Mindestalter (Identität)"
1374
+
1375
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:596
1376
+ msgctxt "dhl"
1377
+ msgid ""
1378
+ "Choose this option if you want to let DHL check your customer's identity and "
1379
+ "age."
1380
+ msgstr ""
1381
+ "Wähle diese Option aus, wenn du das Alter und die Identität durch DHL prüfen "
1382
+ "lassen möchtest."
1383
+
1384
+ # @ woocommerce-germanized
1385
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:599
1386
+ msgctxt "dhl"
1387
+ msgid "Sync (Ident Check)"
1388
+ msgstr "Synchronisation (Identität)"
1389
+
1390
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:600
1391
+ msgctxt "dhl"
1392
+ msgid "Verify identity and age if shipment contains applicable items."
1393
+ msgstr ""
1394
+ "Aktiviere die Identitätsprüfung, falls die Sendung zu prüfende Positionen "
1395
+ "beinhaltet."
1396
+
1397
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:600
1398
+ #, php-format
1399
+ msgctxt "dhl"
1400
+ msgid ""
1401
+ "Germanized offers an %s to be enabled for certain products and/or product "
1402
+ "categories. By checking this option labels for shipments with applicable "
1403
+ "items will automatically have the identity check service enabled."
1404
+ msgstr ""
1405
+ "Germanized bietet eine %s an, die für spezielle Produkte aktiviert werden "
1406
+ "kann. Nach Aktivierung dieser Option, wird der Service für die "
1407
+ "Identitätsprüfung automatisch aktiviert, falls eine Sendung zu prüfenden "
1408
+ "Produkte beinhaltet."
1409
+
1410
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:607
1411
  msgctxt "dhl"
1412
  msgid "Premium delivery for international shipments."
1413
  msgstr "Premium Lieferung für internationale Sendungen."
1414
 
1415
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:626
1416
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1242
1417
  msgctxt "dhl"
1418
  msgid "Labels"
1419
  msgstr "Labels"
1420
 
1421
  # @ woocommerce-germanized
1422
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:627
1423
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1243
1424
  msgctxt "dhl"
1425
  msgid "Automatically create labels for shipments."
1426
  msgstr "Automatisch Labels zu Sendungen erstellen."
1427
 
1428
  # @ woocommerce-germanized
1429
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:634
1430
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:661
1431
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1250
1432
  msgctxt "dhl"
1433
  msgid "Status"
1434
  msgstr "Status"
1435
 
1436
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:638
1437
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1254
1438
  msgctxt "dhl"
1439
  msgid "Choose a shipment status which should trigger generation of a label."
1440
  msgstr ""
1441
  "Wähle einen Sendungsstatus aus, der die Erzeugung eines Labels auslösen soll."
1442
 
1443
  # @ woocommerce-germanized
1444
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:645
1445
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1261
1446
  msgctxt "dhl"
1447
  msgid "Shipment Status"
1448
  msgstr "Sendungsstatus"
1449
 
1450
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:646
1451
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1262
1452
  msgctxt "dhl"
1453
  msgid "Mark shipment as shipped after label has been created successfully."
1454
  msgstr ""
1455
  "Sendung als versandt markieren, sobald ein Label erfolgreich erstellt wurde."
1456
 
1457
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:653
1458
  msgctxt "dhl"
1459
  msgid "Returns"
1460
  msgstr "Retouren"
1461
 
1462
  # @ woocommerce-germanized
1463
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:654
1464
  msgctxt "dhl"
1465
  msgid "Automatically create labels for returns."
1466
  msgstr "Automatisch Retourenlabels zu Retourensendungen erstellen."
1467
 
1468
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:665
1469
  msgctxt "dhl"
1470
  msgid ""
1471
  "Choose a shipment status which should trigger generation of a return label."
1473
  "Wähle einen Sendungsstatus aus, der die Erzeugung eines Retourenlabels "
1474
  "auslösen soll."
1475
 
1476
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:713
1477
  #, php-format
1478
  msgctxt "dhl"
1479
  msgid ""
1484
  "können von abweichenden Einstellungen der %s überschrieben werden."
1485
 
1486
  # @ woocommerce-germanized
1487
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:713
1488
  msgctxt "dhl"
1489
  msgid "shipping method"
1490
  msgstr "Versandmethode"
1491
 
1492
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:723
1493
  #, php-format
1494
  msgctxt "dhl"
1495
  msgid ""
1500
  "an. Stelle sicher, dass dein %s DHL Retoure Online enthält."
1501
 
1502
  # @ woocommerce-germanized
1503
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:723
1504
  msgctxt "dhl"
1505
  msgid "contract"
1506
  msgstr "Vertrag"
1507
 
1508
  # @ woocommerce-germanized
1509
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:735
1510
  msgctxt "dhl"
1511
  msgid "Default Services"
1512
  msgstr "Standard-Services"
1513
 
1514
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:735
1515
  #, php-format
1516
  msgctxt "dhl"
1517
  msgid ""
1521
  "Passe hier an, welche der Services als Standard für deine Labels gebucht "
1522
  "werden sollen. Finde mehr über diese %s heraus."
1523
 
1524
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:735
1525
  msgctxt "dhl"
1526
  msgid "nationwide services"
1527
  msgstr "nationalen Services"
1528
 
1529
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:747
1530
  msgctxt "dhl"
1531
  msgid ""
1532
  "Choose whether and under which conditions labels for your shipments shall be "
1536
  "erzeugt werden sollen."
1537
 
1538
  # @ woocommerce-germanized
1539
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:758
1540
  msgctxt "dhl"
1541
  msgid "Shipper Address"
1542
  msgstr "Absenderadresse"
1543
 
1544
  # @ woocommerce-germanized
1545
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:782
1546
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:851
1547
  msgctxt "dhl"
1548
  msgid "Street Number"
1549
  msgstr "Hausnummer"
1550
 
1551
  # @ woocommerce-germanized
1552
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:803
1553
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:872
1554
  msgctxt "dhl"
1555
  msgid "Country"
1556
  msgstr "Land"
1557
 
1558
  # @ woocommerce-germanized
1559
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:827
1560
  msgctxt "dhl"
1561
  msgid "Inlay Return Address"
1562
  msgstr "Beilageretouren Adresse"
1563
 
1564
  # @ woocommerce-germanized
1565
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:896
1566
  msgctxt "dhl"
1567
  msgid "Bank Account"
1568
  msgstr "Bankkonto"
1569
 
1570
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:896
1571
  msgctxt "dhl"
1572
  msgid "Enter your bank details needed for services that use COD."
1573
  msgstr ""
1575
  "werden sollen."
1576
 
1577
  # @ woocommerce-germanized
1578
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:899
1579
  msgctxt "dhl"
1580
  msgid "Holder"
1581
  msgstr "Kontoinhaber"
1582
 
1583
  # @ woocommerce-germanized
1584
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:906
1585
  msgctxt "dhl"
1586
  msgid "Bank Name"
1587
  msgstr "Name der Bank"
1588
 
1589
  # @ woocommerce-germanized
1590
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:913
1591
  msgctxt "dhl"
1592
  msgid "IBAN"
1593
  msgstr "IBAN"
1594
 
1595
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:920
1596
  msgctxt "dhl"
1597
  msgid "BIC"
1598
  msgstr "BIC"
1599
 
1600
  # @ woocommerce-germanized
1601
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:927
1602
  msgctxt "dhl"
1603
  msgid "Payment Reference"
1604
  msgstr "Zahlungsreferenz"
1605
 
1606
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:931
1607
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:940
1608
  #, php-format
1609
  msgctxt "dhl"
1610
  msgid ""
1615
  "%s. Der Text ist auf 35 Zeichen begrenzt."
1616
 
1617
  # @ woocommerce-germanized
1618
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:936
1619
  msgctxt "dhl"
1620
  msgid "Payment Reference 2"
1621
  msgstr "Zahlungsreferenz 2"
1622
 
1623
  # @ woocommerce-germanized
1624
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:954
1625
  msgctxt "dhl"
1626
  msgid "Enable creating labels for return shipments."
1627
  msgstr "Automatisch Retourenlabels zu Retourensendungen erstellen."
1628
 
1629
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:954
1630
  msgctxt "dhl"
1631
  msgid ""
1632
  "By enabling this option you might generate retoure labels for return "
1635
  "Mit der Aktivierung dieser Option kannst du Retourenlabels zu "
1636
  "Retourensendungen erstellen und diese per E-Mail an den Kunden weiterleiten."
1637
 
1638
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:975
1639
  msgctxt "dhl"
1640
  msgid "Enable preferred day delivery."
1641
  msgstr "Aktiviere die Lieferung am Wunschtag."
1642
 
1643
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:975
1644
  msgctxt "dhl"
1645
  msgid ""
1646
  "Enabling this option will display options for the user to select their "
1649
  "Diese Option aktiviert die Auswahl eines Wunschtags durch den Kunden in der "
1650
  "Kasse."
1651
 
1652
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:984
1653
  msgctxt "dhl"
1654
  msgid ""
1655
  "Insert gross value as surcharge for preferred day delivery. Insert 0 to "
1659
  "Setze den Wert auf 0 um den Service kostenlos anzubieten."
1660
 
1661
  # @ woocommerce-germanized
1662
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:995
1663
  msgctxt "dhl"
1664
  msgid "Enable preferred location delivery."
1665
  msgstr "Lieferung an einen Wunschort aktivieren."
1666
 
1667
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:995
1668
  msgctxt "dhl"
1669
  msgid ""
1670
  "Enabling this option will display options for the user to select their "
1673
  "Diese Option aktiviert die Auswahl eines Wunschorts durch den Kunden in der "
1674
  "Kasse ."
1675
 
1676
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1003
1677
  msgctxt "dhl"
1678
  msgid "Enable preferred neighbor delivery."
1679
  msgstr "Aktiviere die Lieferung an einen Wunschnachbarn."
1680
 
1681
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1003
1682
  msgctxt "dhl"
1683
  msgid ""
1684
  "Enabling this option will display options for the user to deliver to their "
1687
  "Diese Option aktiviert die Auswahl eines Wunschnachbarn durch den Kunden in "
1688
  "der Kasse."
1689
 
1690
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1029
1691
  msgctxt "dhl"
1692
  msgid "Cut-off time"
1693
  msgstr "Cut-off-Zeit"
1694
 
1695
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1032
1696
  msgctxt "dhl"
1697
  msgid ""
1698
  "The cut-off time is the latest possible order time up to which the minimum "
1705
  "Nach Überschreitung dieses Zeitpunktes, wird der früheste verfügbare "
1706
  "Wunschtag in der Kasse um einen Tag erhöht (Tag der Bestellung + 3 Werktage)."
1707
 
1708
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1038
1709
  msgctxt "dhl"
1710
  msgid "Preparation days"
1711
  msgstr "Bearbeitungstage"
1712
 
1713
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1041
1714
  msgctxt "dhl"
1715
  msgid ""
1716
  "If you need more time to prepare your shipments you might want to add a "
1721
  "hier eine statische Anzahl an Tagen hinterlegen, die zum frühesten "
1722
  "auswählbaren Wunschtag hinzugefügt werden."
1723
 
1724
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1048
1725
  msgctxt "dhl"
1726
  msgid "Exclude days of transfer"
1727
  msgstr "Übergabetage ausschließen"
1728
 
1729
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1049
1730
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:31
1731
  msgctxt "dhl"
1732
  msgid "Monday"
1733
  msgstr "Montag"
1734
 
1735
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1050
1736
  msgctxt "dhl"
1737
  msgid "Exclude days from transferring shipments to DHL."
1738
  msgstr "Schließe bestimmte Wochentage für die Übergabe an DHL aus."
1739
 
1740
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1059
1741
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:32
1742
  msgctxt "dhl"
1743
  msgid "Tuesday"
1744
  msgstr "Dienstag"
1745
 
1746
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1068
1747
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:33
1748
  msgctxt "dhl"
1749
  msgid "Wednesday"
1750
  msgstr "Mittwoch"
1751
 
1752
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1077
1753
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:34
1754
  msgctxt "dhl"
1755
  msgid "Thursday"
1756
  msgstr "Donnerstag"
1757
 
1758
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1086
1759
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:35
1760
  msgctxt "dhl"
1761
  msgid "Friday"
1762
  msgstr "Freitag"
1763
 
1764
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1095
1765
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:36
1766
  msgctxt "dhl"
1767
  msgid "Saturday"
1768
  msgstr "Samstag"
1769
 
1770
  # @ woocommerce-germanized
1771
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1104
1772
  msgctxt "dhl"
1773
  msgid "Exclude gateways"
1774
  msgstr "Zahlungsarten ausschließen"
1775
 
1776
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1106
1777
  msgctxt "dhl"
1778
  msgid "Select payment gateways to be excluded from showing preferred services."
1779
  msgstr ""
1780
  "Wähle Zahlungsarten aus, für die die Wunschpaket-Services nicht zur "
1781
  "Verfügung stehen sollen."
1782
 
1783
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1131
1784
  msgctxt "dhl"
1785
  msgid "Let customers find a DHL location on a map."
1786
  msgstr "Lasse Kunden einen DHL Standort auf der Karte auswählen."
1787
 
1788
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1131
1789
  msgctxt "dhl"
1790
  msgid ""
1791
  "Enable this option to let your customers choose a pickup option from a map "
1796
  "einer Karten in der Kasse zu ermöglichen. Wenn diese Option deaktiviert ist, "
1797
  "wird stattdessen auf die DHL Website verwiesen."
1798
 
1799
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1138
1800
  msgctxt "dhl"
1801
  msgid "Google Maps Key"
1802
  msgstr "Google Maps Schlüssel"
1803
 
1804
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1142
1805
  #, php-format
1806
  msgctxt "dhl"
1807
  msgid ""
1811
  "Um eine Karte integrieren zu können, benötigst du einen gültigen API-"
1812
  "Schlüssel für Google Maps. Du kannst %s."
1813
 
1814
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1142
1815
  msgctxt "dhl"
1816
  msgid "retrieve a new one"
1817
  msgstr "hier einen neuen erstellen"
1818
 
1819
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1147
1820
  msgctxt "dhl"
1821
  msgid "Limit results"
1822
  msgstr "Suchergebnisse begrenzen"
1823
 
1824
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1151
1825
  msgctxt "dhl"
1826
  msgid "Limit the number of DHL locations shown on the map"
1827
  msgstr "Begrenzt die Anzahl der angezeigten DHL Standorte auf der Karte"
1828
 
1829
  # @ woocommerce-germanized
1830
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1168
1831
  msgctxt "dhl"
1832
+ msgid "Enable Internetmarke integration."
1833
+ msgstr "Internetmarke Integration aktivieren."
1834
+
1835
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1175
1836
+ msgctxt "dhl"
1837
+ msgid "Username"
1838
+ msgstr "Benutzer"
1839
+
1840
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1177
1841
+ #, php-format
1842
+ msgctxt "dhl"
1843
+ msgid ""
1844
+ "Your credentials to the <a href=\"%s\" target=\"_blank\">Portokasse</a>. "
1845
+ "Please test your credentials before connecting."
1846
+ msgstr ""
1847
+ "Deine Zugangsdaten zur <a href=\"%s\" target=\"_blank\">Portokasse</a>. "
1848
+ "Bitte teste deine Zugangsdaten bevor du eine Verbindung aufbaust."
1849
+
1850
+ # @ woocommerce-germanized
1851
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1184
1852
+ msgctxt "dhl"
1853
+ msgid "Password"
1854
+ msgstr "Passwort"
1855
 
1856
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1204
1857
+ msgctxt "dhl"
1858
+ msgid ""
1859
+ "Please select your default shipping service for domestic shipments that you "
1860
+ "want to offer to your customers (you can always change this within each "
1861
+ "individual shipment afterwards)."
1862
+ msgstr ""
1863
+ "Bitte wähle das Standard-Produkt für nationale Sendungen aus, das du für "
1864
+ "deine Kunden anbietest."
1865
+
1866
+ # @ woocommerce-germanized
1867
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1210
1868
+ msgctxt "dhl"
1869
+ msgid "EU Default Service"
1870
+ msgstr "Standard Service (EU)"
1871
+
1872
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1214
1873
+ msgctxt "dhl"
1874
+ msgid ""
1875
+ "Please select your default shipping service for EU shipments that you want "
1876
+ "to offer to your customers."
1877
+ msgstr ""
1878
+ "Bitte wähle das Standard-Produkt für EU Sendungen aus, das du für deine "
1879
+ "Kunden anbietest."
1880
+
1881
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1224
1882
+ msgctxt "dhl"
1883
+ msgid ""
1884
+ "Please select your default shipping service for cross-border shipments that "
1885
+ "you want to offer to your customers."
1886
+ msgstr ""
1887
+ "Bitte wähle das Standard-Produkt für internationale Sendungen aus, das du "
1888
+ "für deine Kunden anbietest."
1889
+
1890
+ # @ woocommerce-germanized
1891
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1281
1892
+ msgctxt "dhl"
1893
+ msgid "Default Format"
1894
+ msgstr "Standardformat"
1895
+
1896
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1284
1897
+ #, php-format
1898
+ msgctxt "dhl"
1899
+ msgid ""
1900
+ "Choose a print format which will be selected by default when creating "
1901
+ "labels. Manually <a href=\"%s\">refresh</a> available print formats to make "
1902
+ "sure the list is up-to-date."
1903
+ msgstr ""
1904
+ "Wähle ein Seitenformat aus, das für den Druck der Labels standardmäßig "
1905
+ "verwendet wird. Du kannst die Liste auch manuell <a href=\"%s"
1906
+ "\">aktualisieren</a>, falls notwendig."
1907
+
1908
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1311
1909
+ msgctxt "dhl"
1910
+ msgid "Portokasse"
1911
+ msgstr "Portokasse"
1912
+
1913
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1314
1914
+ msgctxt "dhl"
1915
+ msgid "Balance"
1916
+ msgstr "Guthaben"
1917
+
1918
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1321
1919
+ msgctxt "dhl"
1920
+ msgid "Charge (€)"
1921
+ msgstr "Aufladen (€)"
1922
+
1923
+ # @ woocommerce-germanized
1924
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1331
1925
+ msgctxt "dhl"
1926
+ msgid "Products"
1927
+ msgstr "Produkte"
1928
+
1929
+ # @ woocommerce-germanized
1930
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1334
1931
+ msgctxt "dhl"
1932
+ msgid "Available Products"
1933
+ msgstr "Verfügbare Produkte"
1934
+
1935
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1337
1936
+ #, php-format
1937
+ msgctxt "dhl"
1938
+ msgid ""
1939
+ "Choose the products you want to be available for your shipments from the "
1940
+ "list above. Manually <a href=\"%s\">refresh</a> the product list to make "
1941
+ "sure it is up-to-date."
1942
+ msgstr ""
1943
+ "Wähle die Produkte aus die beim Erzeugen der Labels zur Verfügung stehen "
1944
+ "sollen. Du kannst die Produktliste auch manuell <a href=\"%s"
1945
+ "\">aktualisieren</a>, falls notwendig."
1946
+
1947
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1362
1948
+ msgctxt "dhl"
1949
+ msgid "API Error"
1950
+ msgstr "API Fehler"
1951
+
1952
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1421
1953
+ msgctxt "dhl"
1954
+ msgid "Charge Portokasse"
1955
+ msgstr "Portokasse aufladen"
1956
+
1957
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1422
1958
+ #, php-format
1959
+ msgctxt "dhl"
1960
+ msgid "The minimum amount is %s"
1961
+ msgstr "Der Minimalbetrag beträgt %s"
1962
+
1963
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1432
1964
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1434
1965
+ msgctxt "dhl"
1966
+ msgid "Not yet a customer?"
1967
+ msgstr "Noch kein Geschäftskunde?"
1968
+
1969
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1462
1970
+ msgctxt "dhl"
1971
+ msgid "Internetmarke"
1972
+ msgstr "Internetmarke"
1973
+
1974
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1463
1975
  msgctxt "dhl"
1976
  msgid "Preferred Services"
1977
  msgstr "Wunschpaket"
1978
 
1979
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1464
1980
  msgctxt "dhl"
1981
  msgid "Parcel Pickup"
1982
  msgstr "Standorte"
1998
  msgid "%s %s"
1999
  msgstr "%s %s"
2000
 
2001
+ #: woocommerce-germanized-dhl/src/Api/ImProductList.php:280
2002
+ msgctxt "dhl"
2003
+ msgid "PRIO"
2004
+ msgstr "PRIO"
2005
+
2006
+ #: woocommerce-germanized-dhl/src/Api/ImProductList.php:281
2007
+ msgctxt "dhl"
2008
+ msgid "Einschreiben (Einwurf)"
2009
+ msgstr "Einschreiben (Einwurf)"
2010
+
2011
+ #: woocommerce-germanized-dhl/src/Api/ImProductList.php:282
2012
+ msgctxt "dhl"
2013
+ msgid "Einschreiben"
2014
+ msgstr "Einschreiben"
2015
+
2016
+ #: woocommerce-germanized-dhl/src/Api/ImProductList.php:283
2017
+ msgctxt "dhl"
2018
+ msgid "Einschreiben (Eigenhändig)"
2019
+ msgstr "Einschreiben (Eigenhändig)"
2020
+
2021
+ #: woocommerce-germanized-dhl/src/Api/ImProductList.php:284
2022
+ msgctxt "dhl"
2023
+ msgid "Alterssichtprüfung 16"
2024
+ msgstr "Alterssichtprüfung 16"
2025
+
2026
+ #: woocommerce-germanized-dhl/src/Api/ImProductList.php:285
2027
+ msgctxt "dhl"
2028
+ msgid "Alterssichtprüfung 18"
2029
+ msgstr "Alterssichtprüfung 18"
2030
+
2031
+ #: woocommerce-germanized-dhl/src/Api/ImProductList.php:286
2032
+ msgctxt "dhl"
2033
+ msgid "Zusatzentgelt MBf"
2034
+ msgstr "Zusatzentgelt MBf"
2035
+
2036
+ #: woocommerce-germanized-dhl/src/Api/ImProductList.php:287
2037
+ msgctxt "dhl"
2038
+ msgid "Unterschrift"
2039
+ msgstr "Unterschrift"
2040
+
2041
+ #: woocommerce-germanized-dhl/src/Api/ImProductList.php:288
2042
+ msgctxt "dhl"
2043
+ msgid "Tracked"
2044
+ msgstr "Tracked"
2045
+
2046
+ #: woocommerce-germanized-dhl/src/Api/ImWarenpostIntRest.php:43
2047
+ #: woocommerce-germanized-dhl/src/Api/ImWarenpostIntRest.php:52
2048
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:484
2049
+ msgctxt "dhl"
2050
+ msgid "Error while fetching label PDF"
2051
+ msgstr "Fehler beim Download des PDF Labels"
2052
+
2053
+ # @ woocommerce-germanized
2054
+ #: woocommerce-germanized-dhl/src/Api/ImWarenpostIntRest.php:77
2055
+ msgctxt "dhl"
2056
+ msgid "Missing shipment"
2057
+ msgstr "Fehlende Sendung"
2058
+
2059
+ #: woocommerce-germanized-dhl/src/Api/ImWarenpostIntRest.php:168
2060
+ msgctxt "dhl"
2061
+ msgid "Invalid API response"
2062
+ msgstr "Fehlerhafte API Rückmeldung"
2063
+
2064
+ #: woocommerce-germanized-dhl/src/Api/ImWarenpostIntRest.php:192
2065
+ msgctxt "dhl"
2066
+ msgid "Error while authenticating user."
2067
+ msgstr "Fehler beim Autorisieren des Benutzers."
2068
+
2069
+ #: woocommerce-germanized-dhl/src/Api/ImWarenpostIntRest.php:278
2070
+ msgctxt "dhl"
2071
+ msgid "Error during Warenpost International request."
2072
+ msgstr "Fehler beim Aufruf der Warenpost International API."
2073
+
2074
+ # @ woocommerce-germanized
2075
+ #: woocommerce-germanized-dhl/src/Api/ImWarenpostIntRest.php:296
2076
+ #, php-format
2077
+ msgctxt "dhl"
2078
+ msgid "Error during request: %s"
2079
+ msgstr "Fehler beim API Zugriff: %s"
2080
+
2081
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:64
2082
+ #: woocommerce-germanized-dhl/src/Api/Soap.php:54
2083
+ #: woocommerce-germanized-dhl/src/Package.php:84
2084
+ #, php-format
2085
+ msgctxt "dhl"
2086
+ msgid ""
2087
+ "To enable communication between your shop and DHL, the PHP <a href=\"%s"
2088
+ "\">SOAPClient</a> is required. Please contact your host and make sure that "
2089
+ "SOAPClient is <a href=\"%s\">installed</a>."
2090
+ msgstr ""
2091
+ "Um die Kommunikation zwischen DHL und deinem Shop zu ermöglichen, ist der "
2092
+ "PHP <a href=\"%s\">SOAPClient</a> notwendig. Bitte kontaktiere dazu im "
2093
+ "Zweifel deinen Hoster und stelle sicher, dass der SOAPClient <a href=\"%s"
2094
+ "\">installiert</a> ist."
2095
+
2096
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:69
2097
+ #, php-format
2098
+ msgctxt "dhl"
2099
+ msgid "Error while instantiating main Internetmarke API: %s"
2100
+ msgstr "Fehler beim Aufruf der Internetmarke API: %s"
2101
+
2102
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:73
2103
+ msgctxt "dhl"
2104
+ msgid "Internetmarke is disabled. Please enable Internetmarke."
2105
+ msgstr "Internetmarke ist deaktiviert. Bitte aktiviere die Internetmarke."
2106
+
2107
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:84
2108
+ msgctxt "dhl"
2109
+ msgid "Wrong username or password"
2110
+ msgstr "Falscher Benutzername oder Passwort"
2111
+
2112
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:246
2113
+ #, php-format
2114
+ msgctxt "dhl"
2115
+ msgid "until %s"
2116
+ msgstr "bis %s"
2117
+
2118
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:331
2119
+ #, php-format
2120
+ msgctxt "dhl"
2121
+ msgid "Length: %s"
2122
+ msgstr "Länge: %s"
2123
+
2124
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:335
2125
+ #, php-format
2126
+ msgctxt "dhl"
2127
+ msgid "Width: %s"
2128
+ msgstr "Breite: %s"
2129
+
2130
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:339
2131
+ #, php-format
2132
+ msgctxt "dhl"
2133
+ msgid "Height: %s"
2134
+ msgstr "Höhe: %s"
2135
+
2136
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:343
2137
+ #, php-format
2138
+ msgctxt "dhl"
2139
+ msgid "Weight: %s"
2140
+ msgstr "Gewicht: %s"
2141
+
2142
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:348
2143
+ msgctxt "dhl"
2144
+ msgid "Total"
2145
+ msgstr "Gesamt"
2146
+
2147
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:538
2148
+ #, php-format
2149
+ msgctxt "dhl"
2150
+ msgid "Could not refund post label: %s"
2151
+ msgstr "Deutsche Post Label konnte nicht rückerstattet werden: %s"
2152
+
2153
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:552
2154
+ msgctxt "dhl"
2155
+ msgid "Refund API could not be instantiated"
2156
+ msgstr "Die API für Rückerstattungen konnte nicht initialisiert werden"
2157
+
2158
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:641
2159
+ #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:379
2160
+ #: woocommerce-germanized-dhl/src/Api/ReturnRest.php:34
2161
+ #, php-format
2162
+ msgctxt "dhl"
2163
+ msgid "Could not fetch shipment %d."
2164
+ msgstr "Sendung %d konnte nicht gefunden werden."
2165
+
2166
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:681
2167
+ msgctxt "dhl"
2168
+ msgid "Error while generating shop order id."
2169
+ msgstr "Fehler beim Erzeugen der Shop Order Id."
2170
+
2171
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:691
2172
+ #, php-format
2173
+ msgctxt "dhl"
2174
+ msgid ""
2175
+ "Error while trying to purchase the stamp. Please manually <a href=\"%s"
2176
+ "\">refresh</a> your product database and try again."
2177
+ msgstr ""
2178
+ "Fehler beim Kauf des Labels. Bitte <a href=\"%s\">aktualisiere</a>die "
2179
+ "Produktliste manuell und versuche es erneut."
2180
+
2181
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:734
2182
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:741
2183
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:769
2184
+ msgctxt "dhl"
2185
+ msgid "Error while downloading the PDF stamp."
2186
+ msgstr "Fehler beim Download des PDF Labels."
2187
+
2188
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:776
2189
+ msgctxt "dhl"
2190
+ msgid "Invalid stamp response."
2191
+ msgstr "Fehlerhafte Label Rückmeldung."
2192
+
2193
  #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:99
2194
  msgctxt "dhl"
2195
  msgid ""
2198
  "Deine DHL API Zugangsdaten scheinen fehlerhaft zu sein. Bitte prüfe deine "
2199
  "DHL Einstellungen."
2200
 
2201
+ #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:103
2202
+ msgctxt "dhl"
2203
+ msgid ""
2204
+ "Your products are missing data relevant for custom declarations. Please "
2205
+ "provide missing DHL fields (country of origin, HS code) in your product data "
2206
+ "> shipping tab."
2207
+ msgstr ""
2208
+ "Deinen Produkten fehlen Daten, die für die Zollerklärung relevant sind. "
2209
+ "Bitte fülle die fehlenden DHL Felder (HS Code, Herstellerland) in deinen "
2210
+ "Produktdaten unter Versand aus."
2211
+
2212
+ #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:113
2213
  #, php-format
2214
  msgctxt "dhl"
2215
  msgid "There was an error contacting the DHL API: %s."
2216
  msgstr "Beim Aufruf der DHL API gab es einen Fehler: %s."
2217
 
2218
+ #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:116
2219
  msgctxt "dhl"
2220
  msgid ""
2221
  "An error ocurred while contacting the DHL API. Please consider enabling the "
2224
  "Beim Aufruf der DHL API ist ein Fehler aufgetreten. Bitte erwäge den Wechsel "
2225
  "in den Sandbox-Modus."
2226
 
2227
+ #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:138
2228
  msgctxt "dhl"
2229
  msgid ""
2230
  "There was an error generating the label. Please try again or consider "
2233
  "Beim Erzeugen des Labels gab es einen Fehler. Bitte versuche es erneut oder "
2234
  "erwäge den Wechsel in den Sandbox-Modus."
2235
 
2236
+ #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:241
2237
+ #: woocommerce-germanized-dhl/src/Api/ReturnRest.php:156
2238
  msgctxt "dhl"
2239
  msgid "Error while creating and uploading the label"
2240
  msgstr "Fehler beim Erstellen und hochladen des Labels"
2241
 
2242
+ #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:327
2243
  #, php-format
2244
  msgctxt "dhl"
2245
  msgid "Could not delete label - %s"
2246
  msgstr "Das Label konnte nicht gelöscht werden - %s"
2247
 
2248
+ #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:358
2249
  msgctxt "dhl"
2250
  msgid "Could not create account number - no product number."
2251
  msgstr ""
2252
  "Die Abrechnungsnummer konnte nicht erzeugt werden. Die Teilnahmenummer fehlt."
2253
 
2254
+ #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:648
 
 
 
 
 
 
 
2255
  #, php-format
2256
  msgctxt "dhl"
2257
  msgid "Only %s shipment items can be processed, your shipment has %s items."
2260
  "Sendung beinhaltet %s Positionen."
2261
 
2262
  # @ woocommerce-germanized
2263
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:61
2264
+ #, php-format
2265
+ msgctxt "dhl"
2266
+ msgid "Label API not available: %s"
2267
+ msgstr "Label API ist nicht erreichbar: %s"
2268
+
2269
+ # @ woocommerce-germanized
2270
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:63
2271
  msgctxt "dhl"
2272
  msgid "Label API not available"
2273
  msgstr "Label API ist nicht erreichbar"
2274
 
2275
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:80
2276
  msgctxt "dhl"
2277
  msgid "Parcel Finder API not available"
2278
  msgstr "API der Standortsuche ist nicht verfügbar"
2279
 
2280
  # @ woocommerce-germanized
2281
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:96
2282
  msgctxt "dhl"
2283
  msgid "Return API not available"
2284
  msgstr "Retoure API ist nicht erreichbar"
2285
 
2286
  # @ woocommerce-germanized
2287
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:112
2288
  msgctxt "dhl"
2289
  msgid "Parcel API not available"
2290
  msgstr "Paket API ist nicht erreichbar"
2291
 
2292
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:258
2293
  msgctxt "dhl"
2294
  msgid "Mon"
2295
  msgstr "Mo"
2296
 
2297
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:259
2298
  msgctxt "dhl"
2299
  msgid "Tue"
2300
  msgstr "Di"
2301
 
2302
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:260
2303
  msgctxt "dhl"
2304
  msgid "Wed"
2305
  msgstr "Mi"
2306
 
2307
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:261
2308
  msgctxt "dhl"
2309
  msgid "Thu"
2310
  msgstr "Do"
2311
 
2312
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:262
2313
  msgctxt "dhl"
2314
  msgid "Fri"
2315
  msgstr "Fr"
2316
 
2317
  # @ woocommerce-germanized
2318
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:263
2319
  msgctxt "dhl"
2320
  msgid "Sat"
2321
  msgstr "Sa"
2322
 
2323
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:264
2324
  msgctxt "dhl"
2325
  msgid "Sun"
2326
  msgstr "So"
2341
  msgid "Please provide the shipment start date."
2342
  msgstr "Bitte gib das Startdatum der Sendung an."
2343
 
2344
+ #: woocommerce-germanized-dhl/src/Api/Rest.php:101
2345
  msgctxt "dhl"
2346
  msgid "400 - "
2347
  msgstr "400 - "
2348
 
2349
+ #: woocommerce-germanized-dhl/src/Api/Rest.php:104
2350
  msgctxt "dhl"
2351
  msgid ""
2352
  "401 - Unauthorized Access - Invalid token or Authentication Header parameter"
2353
  msgstr ""
2354
  "401 - Unauthorized Access - Invalid token or Authentication Header parameter"
2355
 
2356
+ #: woocommerce-germanized-dhl/src/Api/Rest.php:107
2357
  msgctxt "dhl"
2358
  msgid "408 - Request Timeout"
2359
  msgstr "408 - Request Timeout"
2360
 
2361
+ #: woocommerce-germanized-dhl/src/Api/Rest.php:110
2362
  msgctxt "dhl"
2363
  msgid "429 - Too many requests in given amount of time"
2364
  msgstr "429 - Too many requests in given amount of time"
2365
 
2366
+ #: woocommerce-germanized-dhl/src/Api/Rest.php:113
2367
  msgctxt "dhl"
2368
  msgid "503 - Service Unavailable"
2369
  msgstr "503 - Service Unavailable"
2370
 
2371
+ #: woocommerce-germanized-dhl/src/Api/Rest.php:117
2372
  msgctxt "dhl"
2373
  msgid "GET error or timeout occured. Please try again later."
2374
  msgstr "GET Fehler oder Zeitüberschreitung. Bitte später erneut versuchen."
2375
 
2376
+ #: woocommerce-germanized-dhl/src/Api/Rest.php:170
2377
  msgctxt "dhl"
2378
  msgid "POST error or timeout occured. Please try again later."
2379
  msgstr "POST Fehler oder Zeitüberschreitung. Bitte später erneut versuchen."
2380
 
2381
+ #: woocommerce-germanized-dhl/src/DataStores/Label.php:316
2382
  msgctxt "dhl"
2383
  msgid "Invalid label."
2384
  msgstr "Ungültiges Label."
2390
  msgid "%s-%s"
2391
  msgstr "%s-%s"
2392
 
2393
+ #: woocommerce-germanized-dhl/src/Package.php:274
2394
  msgctxt "dhl"
2395
  msgid ""
2396
  "Please check the street field and make sure to provide a valid street number."
2399
  "angibst."
2400
 
2401
  # @ woocommerce-germanized
2402
+ #: woocommerce-germanized-dhl/src/Package.php:961
2403
  msgctxt "dhl"
2404
  msgid "Germany"
2405
  msgstr "Deutschland"
2406
 
2407
  # @ woocommerce-germanized
2408
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:90
2409
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:849
2410
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:878
2411
  msgctxt "dhl"
2412
  msgid "Address Type"
2413
  msgstr "Adresstyp"
2414
 
2415
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:93
2416
  msgctxt "dhl"
2417
  msgid "Select whether delivery to DHL locations should be enabled."
2418
  msgstr "Wähle aus, ob die Lieferung an DHL Standorte aktiviert werden soll."
2419
 
2420
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:98
2421
  msgctxt "dhl"
2422
  msgid "Postnumber"
2423
  msgstr "Postnummer"
2424
 
2425
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:100
2426
  msgctxt "dhl"
2427
  msgid ""
2428
  "In case delivery to packstation is selected please fill in the corresponding "
2431
  "Insofern die Lieferung an eine Packstation erfolgt, bitte die Postnummer "
2432
  "eintragen."
2433
 
2434
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:186
2435
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:565
2436
  msgctxt "dhl"
2437
  msgid "Invalid address type."
2438
  msgstr "Ungültiger Adresstyp."
2439
 
2440
  # @ woocommerce-germanized
2441
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:637
2442
  msgctxt "dhl"
2443
  msgid "Sorry, but delivery to packstation is not available."
2444
  msgstr ""
2445
  "Entschuldigung, die Lieferung an eine Packstation steht nicht zur Verfügung."
2446
 
2447
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:642
2448
  msgctxt "dhl"
2449
  msgid "Sorry, but delivery to parcel shops is not available."
2450
  msgstr ""
2451
  "Entschuldigung, die Lieferung an einen Paketshop steht nicht zur Verfügung."
2452
 
2453
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:646
2454
  msgctxt "dhl"
2455
  msgid "Sorry, but delivery to post offices is not available."
2456
  msgstr "Entschuldigung, die Lieferung an Postfilialen ist nicht verfügbar."
2457
 
2458
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:653
2459
  #, php-format
2460
  msgctxt "dhl"
2461
  msgid "Please indicate shipment to %s by one of the following values: %s."
2463
  "Bitte identifiziere die Lieferung an %s durch die Eingabe einer der "
2464
  "folgenden Werte: %s."
2465
 
2466
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:661
2467
  msgctxt "dhl"
2468
  msgid ""
2469
  "Your DHL customer number (Post number) is not valid. Please check your "
2472
  "Deine DHL Kundennummer (Postnummer) ist nicht gültig. Bitte überprüfe deine "
2473
  "Eingabe."
2474
 
2475
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:664
2476
  msgctxt "dhl"
2477
  msgid ""
2478
  "Your DHL customer number (Post number) is needed to ship to a packstation."
2480
  "Deine DHL Kundennummer (Postnummer) wird für den Versand an eine Packstation "
2481
  "benötigt."
2482
 
2483
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:713
2484
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:840
2485
  msgctxt "dhl"
2486
  msgid "Branch"
2487
  msgstr "Filiale"
2488
 
2489
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:714
2490
  msgctxt "dhl"
2491
  msgid "Postnumber "
2492
  msgstr "Postnummer "
2493
 
2494
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:815
2495
  #, php-format
2496
  msgctxt "dhl"
2497
  msgid "e.g. %s 456"
2498
  msgstr "z.B. %s 456"
2499
 
2500
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:840
2501
  msgctxt "dhl"
2502
  msgid "Branches"
2503
  msgstr "Filialen"
2504
 
2505
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:856
2506
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:889
2507
  msgctxt "dhl"
2508
  msgid "DHL customer number (Post number)"
2509
  msgstr "DHL Kundennummer (Postnummer)"
2510
 
2511
  # @ woocommerce-germanized
2512
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:866
2513
  msgctxt "dhl"
2514
  msgid "Regular Address"
2515
  msgstr "Normale Adresse"
2516
 
2517
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:893
2518
  msgctxt "dhl"
2519
  msgid "Not yet a DHL customer?"
2520
  msgstr "Noch kein DHL Kunde?"
2521
 
2522
  # @ woocommerce-germanized
2523
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:893
2524
  msgctxt "dhl"
2525
  msgid "Register now"
2526
  msgstr "Jetzt registrieren"
2527
 
2528
  # @ woocommerce-germanized
2529
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:942
2530
  #, php-format
2531
  msgctxt "dhl"
2532
  msgid "Search %s"
2533
  msgstr "%s suchen"
2534
 
2535
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:1047
2536
  msgctxt "dhl"
2537
  msgid "No DHL locations found"
2538
  msgstr "Keine DHL Standorte gefunden"
2539
 
2540
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:1062
2541
  #, php-format
2542
  msgctxt "dhl"
2543
  msgid ""
2548
  "%s oder %s."
2549
 
2550
  # @ woocommerce-germanized
2551
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:1062
2552
  msgctxt "dhl"
2553
  msgid "DHL location"
2554
  msgstr "DHL Standort"
2555
 
2556
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:1062
2557
  msgctxt "dhl"
2558
  msgid "retry"
2559
  msgstr "Erneut versuchen"
2581
  msgid "Please choose name and address of your preferred neighbor."
2582
  msgstr "Bitte wähle einen Namen und die Adresse deines Wunschnachbars."
2583
 
2584
+ #: woocommerce-germanized-dhl/src/ReturnLabel.php:124
2585
  #: woocommerce-germanized-dhl/src/SimpleLabel.php:86
2586
  #, php-format
2587
  msgctxt "dhl full name"
2588
  msgid "%1$s"
2589
  msgstr "%1$s"
2590
 
2591
+ #: woocommerce-germanized-dhl/src/ShippingProvider/DHL.php:47
2592
  msgctxt "dhl"
2593
  msgid ""
2594
  "Complete DHL integration supporting labels, preferred services and "
2597
  "DHL Integration die das Erzeugen von Labels, Wunsch-Services und Lieferung "
2598
  "an Packstationen unterstützt."
2599
 
2600
+ #: woocommerce-germanized-dhl/src/ShippingProvider/DeutschePost.php:31
2601
+ msgctxt "dhl"
2602
+ msgid "Deutsche Post"
2603
+ msgstr "Deutsche Post"
2604
+
2605
+ #: woocommerce-germanized-dhl/src/ShippingProvider/DeutschePost.php:39
2606
+ msgctxt "dhl"
2607
+ msgid "Integration for products of the Deutsche Post through Internetmarke."
2608
+ msgstr "Integration von Produkten der Deutschen Post über die Internetmarke."
2609
+
2610
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder-result.php:31
2611
  msgctxt "dhl"
2612
  msgid "Opening Times"
2778
  "Deine Installation des Germanized DHL Plugins ist unvollständig. Bitte führe "
2779
  "%1$s im %2$s Verzeichnis aus."
2780
 
2781
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:32
2782
  #, php-format
2783
  msgctxt "shipments"
2784
+ msgid "Content (%s)"
2785
+ msgstr "Inhalt (%s)"
2786
 
2787
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:38
2788
  #, php-format
2789
  msgctxt "shipments"
2790
  msgid "Dimensions (%s)"
2791
  msgstr "Abmessungen (%s)"
2792
 
2793
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:38
2794
  msgctxt "shipments"
2795
  msgid "LxWxH in decimal form."
2796
  msgstr "LxBxH in dezimaler Form."
2797
 
2798
  # @ woocommerce-germanized
2799
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:50
2800
+ #: woocommerce-germanized-shipments/src/Admin/Settings.php:424
2801
+ msgctxt "shipments"
2802
+ msgid "Packaging"
2803
+ msgstr "Verpackung"
2804
+
2805
+ # @ woocommerce-germanized
2806
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:58
2807
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:1027
2808
  #: woocommerce-germanized-shipments/src/Admin/ReturnTable.php:24
2809
  #: woocommerce-germanized-shipments/src/Admin/Table.php:688
2812
  msgstr "Status"
2813
 
2814
  # @ woocommerce-germanized
2815
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:68
2816
  msgctxt "shipments"
2817
  msgid "Shipping method"
2818
  msgstr "Versandmethode"
2819
 
2820
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:78
2821
  msgctxt "shipments"
2822
  msgid "Shipping provider"
2823
  msgstr "Versanddienstleister"
2824
 
2825
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:89
2826
  msgctxt "shipments"
2827
  msgid "Tracking Number"
2828
  msgstr "Sendungsnummer"
2829
 
2830
  # @ woocommerce-germanized
2831
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:155
2832
  msgctxt "shipments"
2833
  msgid "Add item"
2834
  msgstr "Position hinzufügen"
2835
 
2836
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:159
2837
  msgctxt "shipments"
2838
  msgid "Automatically adjust items and quantities based on order item data."
2839
  msgstr "Bestimmt Positionen und Anzahlen automatisch anhand der Bestelldaten."
2840
 
2841
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:159
2842
  msgctxt "shipments"
2843
  msgid "Sync items"
2844
  msgstr "Positionen synchronisieren"
2845
 
2846
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:179
2847
  msgctxt "shipments"
2848
  msgid "Add Item"
2849
  msgstr "Position hinzufügen"
2850
 
2851
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:189
2852
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipments.php:45
2853
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:88
2854
  msgctxt "shipments"
2855
  msgid "Item"
2856
  msgstr "Position"
2857
 
2858
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:190
2859
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipments.php:46
2860
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:93
2861
  #: woocommerce-germanized-shipments/templates/emails/email-shipment-details.php:55
2862
  #: woocommerce-germanized-shipments/templates/myaccount/add-return-shipment.php:37
2863
  #: woocommerce-germanized-shipments/templates/shipment/shipment-details.php:60
2865
  msgid "Quantity"
2866
  msgstr "Anzahl"
2867
 
2868
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:208
2869
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipments.php:55
2870
  msgctxt "shipments"
2871
  msgid "Add"
2872
  msgstr "Hinzufügen"
2873
 
2874
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:232
2875
  msgctxt "shipments"
2876
  msgid ""
2877
  "Send return instructions to your customer via email including return label "
2880
  "Sende Informationen zur Rücksendung inkl. Label, falls verfügbar an deinen "
2881
  "Kunden via E-Mail."
2882
 
2883
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:232
2884
  msgctxt "shipments"
2885
  msgid "Resend notification"
2886
  msgstr "Benachrichtigung erneut versenden"
2887
 
2888
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:232
2889
  msgctxt "shipments"
2890
  msgid "Notify customer"
2891
  msgstr "Kunde benachrichtigen"
2892
 
2893
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:234
2894
  msgctxt "shipments"
2895
  msgid ""
2896
  "Confirm the return request to the customer. The customer receives an email "
2900
  "Benachrichtigung, die möglicherweise Anweisungen zur Rücksendung enthält."
2901
 
2902
  # @ woocommerce-germanized
2903
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:234
2904
  #: woocommerce-germanized-shipments/src/Admin/ReturnTable.php:66
2905
  msgctxt "shipments"
2906
  msgid "Confirm return request"
2907
  msgstr "Rücksendeantrag bestätigen"
2908
 
2909
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:238
2910
  #, php-format
2911
  msgctxt "shipments"
2912
  msgid "Delete %s"
2937
 
2938
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-list.php:22
2939
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:76
2940
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:75
2941
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:509
2942
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:630
2943
  #: woocommerce-germanized-shipments/src/Admin/Settings.php:80
2944
  #: woocommerce-germanized-shipments/src/Admin/Settings.php:177
2945
  #: woocommerce-germanized-shipments/templates/myaccount/order-shipments.php:36
2947
  msgid "Returns"
2948
  msgstr "Retouren"
2949
 
2950
+ # @ woocommerce-germanized
2951
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-packaging-select.php:17
2952
+ #: woocommerce-germanized-shipments/includes/wc-gzd-packaging-functions.php:52
2953
+ msgctxt "shipments-packaging"
2954
+ msgid "None"
2955
+ msgstr "Keine"
2956
+
2957
+ # @ woocommerce-germanized
2958
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-packaging-select.php:27
2959
+ msgctxt "shipments"
2960
+ msgid "Does not fit"
2961
+ msgstr "Passt nicht"
2962
+
2963
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment.php:16
2964
  #, php-format
2965
  msgctxt "shipment admin title"
2969
  # @ woocommerce-germanized
2970
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipments.php:19
2971
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:69
2972
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:439
2973
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:508
2974
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:596
2975
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:663
2976
  #: woocommerce-germanized-shipments/templates/myaccount/order-shipments.php:20
2977
  msgctxt "shipments"
2978
  msgid "Shipments"
3003
  #: woocommerce-germanized-shipments/includes/admin/views/html-settings-provider-list.php:11
3004
  #: woocommerce-germanized-shipments/src/Admin/ReturnTable.php:22
3005
  #: woocommerce-germanized-shipments/src/Admin/Table.php:686
3006
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:555
3007
  msgctxt "shipments"
3008
  msgid "Title"
3009
  msgstr "Titel"
3010
 
3011
  # @ woocommerce-germanized
3012
  #: woocommerce-germanized-shipments/includes/admin/views/html-settings-provider-list.php:12
3013
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:316
3014
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:564
3015
  msgctxt "shipments"
3016
  msgid "Description"
3017
  msgstr "Beschreibung"
3067
  msgstr "Download"
3068
 
3069
  #: woocommerce-germanized-shipments/includes/admin/views/label/html-shipment-label.php:39
3070
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:722
3071
  msgctxt "shipments"
3072
  msgid "Create new label"
3073
  msgstr "Neues Label erstellen"
3287
  msgid "Enter recipients (comma separated) for this email. Defaults to %s."
3288
  msgstr "Füge Empfänger (kommasepariert) für diese E-Mail ein. Standard: %s."
3289
 
3290
+ #: woocommerce-germanized-shipments/includes/wc-gzd-packaging-functions.php:24
3291
+ msgctxt "shipments"
3292
+ msgid "Cardboard"
3293
+ msgstr "Karton"
3294
+
3295
+ #: woocommerce-germanized-shipments/includes/wc-gzd-packaging-functions.php:25
3296
+ msgctxt "shipments"
3297
+ msgid "Letter"
3298
+ msgstr "Brief"
3299
+
3300
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:68
3301
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:1025
3302
  msgctxt "shipments"
3386
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:413
3387
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:417
3388
  #: woocommerce-germanized-shipments/src/ReturnShipment.php:420
3389
+ #: woocommerce-germanized-shipments/src/ReturnShipment.php:479
3390
  #: woocommerce-germanized-shipments/src/SimpleShipment.php:118
3391
+ #: woocommerce-germanized-shipments/src/SimpleShipment.php:214
3392
  msgctxt "shipments"
3393
  msgid "Invalid shipment order"
3394
  msgstr "Ungültige Bestellung zur Sendung"
3430
 
3431
  # @ woocommerce-germanized
3432
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:1029
3433
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:98
3434
  #: woocommerce-germanized-shipments/src/Admin/ReturnTable.php:30
3435
  #: woocommerce-germanized-shipments/src/Admin/Table.php:694
3436
  msgctxt "shipments"
3445
  # @ woocommerce-germanized
3446
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:1272
3447
  #: woocommerce-germanized-shipments/src/Admin/Table.php:865
3448
+ #: woocommerce-germanized-shipments/src/Ajax.php:337
3449
  msgctxt "shipments"
3450
  msgid "Download label"
3451
  msgstr "Label downloaden"
3459
  msgstr "Mein Konto"
3460
 
3461
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipments-template-functions.php:115
3462
+ #: woocommerce-germanized-shipments/src/DataStores/Shipment.php:354
3463
  msgctxt "shipments"
3464
  msgid "Invalid shipment."
3465
  msgstr "Ungültige Sendung."
3482
  msgstr "Bestellung ansehen"
3483
 
3484
  # @ woocommerce-germanized
3485
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:106
3486
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:241
3487
  #: woocommerce-germanized-shipments/templates/myaccount/add-return-shipment.php:36
3488
  msgctxt "shipments"
3489
  msgid "Reason"
3490
  msgstr "Rücksendegrund"
3491
 
3492
  # @ woocommerce-germanized
3493
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:233
3494
  msgctxt "shipments"
3495
  msgid "Return reasons"
3496
  msgstr "Rücksendegründe"
3497
 
3498
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:240
3499
  msgctxt "shipments"
3500
  msgid "Reason code"
3501
  msgstr "Rücksendegrund (Code)"
3502
 
3503
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:240
3504
  msgctxt "shipments"
3505
  msgid "The reason code is used to identify the reason."
3506
  msgstr ""
3508
  "identifizieren zu können."
3509
 
3510
  # @ woocommerce-germanized
3511
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:241
3512
  msgctxt "shipments"
3513
  msgid "Choose a reason text."
3514
  msgstr "Beschreibung für den Grund."
3515
 
3516
  # @ woocommerce-germanized
3517
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:260
3518
  msgctxt "shipments"
3519
  msgid "+ Add reason"
3520
  msgstr "+ Grund hinzufügen"
3521
 
3522
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:260
3523
  msgctxt "shipments"
3524
  msgid "Remove selected reason(s)"
3525
  msgstr "Ausgewählte Gründe löschen"
3526
 
3527
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:293
3528
+ msgctxt "shipments"
3529
+ msgid "Available Packaging"
3530
+ msgstr "Verfügbare Verpackungen"
3531
+
3532
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:316
3533
+ msgctxt "shipments"
3534
+ msgid "A description to help you identify the packaging."
3535
+ msgstr "Eine Beschreibung die dir dabei hilft Verpackungen zu identifizieren."
3536
+
3537
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:317
3538
+ msgctxt "shipments"
3539
+ msgid "Type"
3540
+ msgstr "Typ"
3541
+
3542
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:318
3543
+ #, php-format
3544
+ msgctxt "shipments"
3545
+ msgid "Weight (%s)"
3546
+ msgstr "Gewicht (%s)"
3547
+
3548
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:318
3549
+ msgctxt "shipments"
3550
+ msgid "The weight of the packaging."
3551
+ msgstr "Das Gewicht der Verpackung."
3552
+
3553
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:319
3554
+ #, php-format
3555
+ msgctxt "shipments"
3556
+ msgid "Dimensions (LxWxH, %s)"
3557
+ msgstr "Abmessungen (LxBxH, %s)"
3558
+
3559
+ # @ woocommerce-germanized
3560
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:320
3561
+ msgctxt "shipments"
3562
+ msgid "Max weight (kg)"
3563
+ msgstr "Max. Gewicht (kg)"
3564
+
3565
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:320
3566
+ msgctxt "shipments"
3567
+ msgid ""
3568
+ "The maximum weight this packaging can hold. Leave empty to not restrict "
3569
+ "maximum weight."
3570
+ msgstr ""
3571
+ "Das maximale Gewicht, das diese Verpackung tragen kann. Leer lassen um das "
3572
+ "Gewicht nicht zu begrenzen."
3573
+
3574
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:345
3575
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:386
3576
+ msgctxt "shipments"
3577
+ msgid "Length"
3578
+ msgstr "Länge"
3579
+
3580
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:346
3581
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:387
3582
+ msgctxt "shipments"
3583
+ msgid "Width"
3584
+ msgstr "Breite"
3585
+
3586
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:347
3587
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:388
3588
+ msgctxt "shipments"
3589
+ msgid "Height"
3590
+ msgstr "Höhe"
3591
+
3592
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:360
3593
+ msgctxt "shipments"
3594
+ msgid "+ Add packaging"
3595
+ msgstr "+ Verpackung hinzufügen"
3596
+
3597
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:360
3598
+ msgctxt "shipments"
3599
+ msgid "Remove selected packaging"
3600
+ msgstr "Ausgewählte Verpackung löschen"
3601
+
3602
  # @ woocommerce-germanized
3603
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:493
3604
  msgctxt "shipments"
3605
  msgid "Create shipments"
3606
  msgstr "Sendungen erstellen"
3607
 
3608
  # @ woocommerce-germanized
3609
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:608
3610
  msgctxt "shipments"
3611
  msgid "Search shipments"
3612
  msgstr "Sendungen suchen"
3613
 
3614
  # @ woocommerce-germanized
3615
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:642
3616
  msgctxt "shipments"
3617
  msgid "Search returns"
3618
  msgstr "Retouren suchen"
3619
 
3620
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:715
3621
  msgctxt "shipments"
3622
  msgid "Do you really want to delete the shipment?"
3623
  msgstr "Möchtest du die Sendung wirklich löschen?"
3624
 
3625
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:721
3626
  msgctxt "shipments"
3627
  msgid "Do you really want to delete the label?"
3628
  msgstr "Möchtest du das Label wirklich löschen?"
3629
 
3630
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:723
3631
  msgctxt "shipments"
3632
  msgid "Please save the shipment before creating a new label"
3633
  msgstr "Bitte speichere die Sendung bevor du ein neues Label erzeugst"
3634
 
3635
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:773
3636
  msgctxt "shipments"
3637
  msgid ""
3638
  "Do you really want to delete the shipping provider? Some of your existing "
4038
  msgid "List shipments on customer account order screen."
4039
  msgstr "Liste Sendungen im Kundenkonto in den Bestelldetails auf."
4040
 
4041
+ # @ woocommerce-germanized
4042
+ #: woocommerce-germanized-shipments/src/Admin/Settings.php:280
4043
+ msgctxt "shipments"
4044
+ msgid "Default packaging"
4045
+ msgstr "Standard-Verpackung"
4046
+
4047
+ #: woocommerce-germanized-shipments/src/Admin/Settings.php:281
4048
+ msgctxt "shipments"
4049
+ msgid ""
4050
+ "Choose a packaging which serves as fallback or default in case no suitable "
4051
+ "packaging could be matched for a certain shipment."
4052
+ msgstr ""
4053
+ "Wähle eine Verpackung aus, die im Zweifel für die Sendung verwendet wird, "
4054
+ "wenn keine passende Verpackung gefunden werden konnte."
4055
+
4056
+ #: woocommerce-germanized-shipments/src/Admin/Settings.php:379
4057
  msgctxt "shipments"
4058
  msgid "New provider"
4059
  msgstr "Neuer Dienstleister"
4060
 
4061
  # @ woocommerce-germanized
4062
+ #: woocommerce-germanized-shipments/src/Admin/Settings.php:389
4063
  msgctxt "shipments"
4064
  msgid "Additional settings"
4065
  msgstr "Weiterführende Einstellungen"
4066
 
4067
+ #: woocommerce-germanized-shipments/src/Admin/Settings.php:415
4068
  msgctxt "shipments"
4069
  msgid "Add provider"
4070
  msgstr "Dienstleister hinzufügen"
4071
 
4072
  # @ woocommerce-germanized
4073
+ #: woocommerce-germanized-shipments/src/Admin/Settings.php:423
4074
  msgctxt "shipments"
4075
  msgid "General"
4076
  msgstr "Allgemein"
4077
 
4078
+ #: woocommerce-germanized-shipments/src/Admin/Settings.php:425
4079
  #: woocommerce-germanized-shipments/src/ShippingProviderMethod.php:56
4080
  msgctxt "shipments"
4081
  msgid "Shipping Provider"
4146
 
4147
  # @ woocommerce-germanized
4148
  #: woocommerce-germanized-shipments/src/Admin/Table.php:664
4149
+ #: woocommerce-germanized-shipments/src/Ajax.php:816
4150
  #, php-format
4151
  msgctxt "shipments"
4152
  msgid "Order #%s"
4231
  msgid "Generate and download labels"
4232
  msgstr "Labels erstellen und downloaden"
4233
 
4234
+ #: woocommerce-germanized-shipments/src/Ajax.php:95
4235
  msgctxt "shipments"
4236
  msgid "Notification successfully sent to customer."
4237
  msgstr "Kunde erfolgreich benachrichtigt."
4238
 
4239
+ #: woocommerce-germanized-shipments/src/Ajax.php:102
4240
  msgctxt "shipments"
4241
  msgid "There was an error while sending the notification."
4242
  msgstr "Beim Versendes der Benachrichtigung ist ein Fehler aufgetreten."
4243
 
4244
+ #: woocommerce-germanized-shipments/src/Ajax.php:142
4245
  msgctxt "shipments"
4246
  msgid "Return request confirmed successfully."
4247
  msgstr "Rücksendeantrag erfolgreich bestätigt."
4248
 
4249
+ #: woocommerce-germanized-shipments/src/Ajax.php:154
4250
  msgctxt "shipments"
4251
  msgid "There was an error while confirming the request."
4252
  msgstr "Bei der Bestätigung des Antrags ist ein Fehler aufgetreten."
4253
 
4254
+ #: woocommerce-germanized-shipments/src/Ajax.php:174
4255
  msgctxt "shipments"
4256
  msgid "There was an error creating the label."
4257
  msgstr "Beim Erstellen des Labels ist ein Fehler aufgetreten."
4258
 
4259
+ #: woocommerce-germanized-shipments/src/Ajax.php:210
4260
  msgctxt "shipments"
4261
  msgid "There was an error deleting the label."
4262
  msgstr "Beim Löschen des Labels ist ein Fehler aufgetreten."
4263
 
4264
+ #: woocommerce-germanized-shipments/src/Ajax.php:251
4265
  msgctxt "shipments"
4266
  msgid "There was an error processing the label."
4267
  msgstr "Bei der Verarbeitung des Labels ist ein Fehler aufgetreten."
4268
 
4269
+ #: woocommerce-germanized-shipments/src/Ajax.php:349
4270
  msgctxt "shipments"
4271
  msgid "There was an error while trying to save the shipping provider status."
4272
  msgstr ""
4273
  "Beim Speichern des Status des Versanddienstleisters trat ein Fehler auf."
4274
 
4275
+ #: woocommerce-germanized-shipments/src/Ajax.php:387
4276
  msgctxt "shipments"
4277
  msgid "There was an error while trying to delete the shipping provider."
4278
  msgstr "Beim Löschen des Versanddienstleisters trat ein Fehler auf."
4279
 
4280
+ #: woocommerce-germanized-shipments/src/Ajax.php:420
4281
  msgctxt "shipments"
4282
  msgid "There was an error while bulk processing shipments."
4283
  msgstr ""
4284
  "Bei der Verarbeitung der Mehrfachaktionen von Sendungen trat ein Fehler auf."
4285
 
4286
+ #: woocommerce-germanized-shipments/src/Ajax.php:532
4287
+ #: woocommerce-germanized-shipments/src/Ajax.php:633
4288
+ #: woocommerce-germanized-shipments/src/Ajax.php:690
4289
+ #: woocommerce-germanized-shipments/src/Ajax.php:727
4290
+ #: woocommerce-germanized-shipments/src/Ajax.php:854
4291
+ #: woocommerce-germanized-shipments/src/Ajax.php:915
4292
+ #: woocommerce-germanized-shipments/src/Ajax.php:982
4293
+ #: woocommerce-germanized-shipments/src/Ajax.php:1015
4294
+ #: woocommerce-germanized-shipments/src/Ajax.php:1064
4295
+ #: woocommerce-germanized-shipments/src/Ajax.php:1132
4296
+ #: woocommerce-germanized-shipments/src/Ajax.php:1173
4297
+ #: woocommerce-germanized-shipments/src/Ajax.php:1228
4298
+ #: woocommerce-germanized-shipments/src/Ajax.php:1272
4299
  msgctxt "shipments"
4300
  msgid "There was an error processing the shipment"
4301
  msgstr "Fehler bei der Verarbeitung der Sendung"
4302
 
4303
+ #: woocommerce-germanized-shipments/src/Ajax.php:574
4304
  msgctxt "shipments"
4305
  msgid "There was an error while adding the shipment"
4306
  msgstr "Beim Hinzufügen der Sendung ist ein Fehler aufgetreten"
4307
 
4308
+ #: woocommerce-germanized-shipments/src/Ajax.php:595
4309
  msgctxt "shipments"
4310
  msgid "This order contains enough shipments already."
4311
  msgstr "Diese Bestellung beinhaltet bereits genug Sendungen."
4312
 
4313
+ #: woocommerce-germanized-shipments/src/Ajax.php:652
4314
  msgctxt "shipments"
4315
  msgid "This order contains enough returns already."
4316
  msgstr "Diese Bestellung beinhaltet bereits genügend Retouren."
4507
  msgstr "Anzahl."
4508
 
4509
  # @ woocommerce-germanized
4510
+ #: woocommerce-germanized-shipments/src/Automation.php:127
4511
  msgctxt "shipments"
4512
  msgid "Order is fully shipped."
4513
  msgstr "Bestellung ist vollständig versandt."
4514
 
4515
+ #: woocommerce-germanized-shipments/src/DataStores/Packaging.php:236
4516
+ msgctxt "shipments"
4517
+ msgid "Invalid packaging."
4518
+ msgstr "Verpackung nicht verfügbar."
4519
+
4520
  #: woocommerce-germanized-shipments/src/DataStores/ShipmentItem.php:195
4521
  msgctxt "shipments"
4522
  msgid "Invalid shipment item."
4620
  "Es gab ein Problem beim Erstellen der Rücksendung. Bitte kontaktiere uns für "
4621
  "weitere Informationen."
4622
 
4623
+ #: woocommerce-germanized-shipments/src/Install.php:31
4624
  msgctxt "shipments"
4625
  msgid "Wrong product or size ordered"
4626
  msgstr "Falsches Produkt oder Größe bestellt"
4627
 
4628
+ #: woocommerce-germanized-shipments/src/Install.php:36
4629
  msgctxt "shipments"
4630
  msgid "Product no longer needed"
4631
  msgstr "Produkt wird nicht länger benötigt"
4632
 
4633
+ #: woocommerce-germanized-shipments/src/Install.php:41
4634
  msgctxt "shipments"
4635
  msgid "Don't like the look"
4636
  msgstr "Optik nicht wie erwartet"
4637
 
4638
+ #: woocommerce-germanized-shipments/src/Install.php:60
4639
+ msgctxt "shipments"
4640
+ msgid "Cardboard S"
4641
+ msgstr "Karton S"
4642
+
4643
+ #: woocommerce-germanized-shipments/src/Install.php:69
4644
+ msgctxt "shipments"
4645
+ msgid "Cardboard M"
4646
+ msgstr "Karton M"
4647
+
4648
+ #: woocommerce-germanized-shipments/src/Install.php:78
4649
+ msgctxt "shipments"
4650
+ msgid "Cardboard L"
4651
+ msgstr "Karton L"
4652
+
4653
+ #: woocommerce-germanized-shipments/src/Install.php:87
4654
+ msgctxt "shipments"
4655
+ msgid "Letter C5/6"
4656
+ msgstr "Brief C5/6"
4657
+
4658
+ #: woocommerce-germanized-shipments/src/Install.php:96
4659
+ msgctxt "shipments"
4660
+ msgid "Letter C4"
4661
+ msgstr "Brief C4"
4662
+
4663
  # @ woocommerce-germanized
4664
+ #: woocommerce-germanized-shipments/src/Package.php:97
4665
  msgctxt "shipments"
4666
  msgid "Sorry, this order is invalid and cannot be returned."
4667
  msgstr "Sorry, diese Bestellung existiert nicht."
4668
 
4669
+ #: woocommerce-germanized-shipments/src/Packaging.php:266
4670
+ #, php-format
4671
+ msgctxt "shipments-packaging-title"
4672
+ msgid "%1$s (%2$s, %3$s)"
4673
+ msgstr "%1$s (%2$s, %3$s)"
4674
+
4675
  #: woocommerce-germanized-shipments/src/ReturnShipment.php:356
4676
+ #: woocommerce-germanized-shipments/src/Shipment.php:882
4677
  #, php-format
4678
  msgctxt "full name"
4679
  msgid "%1$s %2$s"
4680
  msgstr "%1$s %2$s"
4681
 
4682
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:270
4683
  msgctxt "shipments"
4684
  msgid ""
4685
  "Your shipment is being processed by {shipping_provider}. If you want to "
4693
  "die Paketverfolgungsdaten zum Zeitpunkt des Erhalts dieser E-Mail noch nicht "
4694
  "den neuesten Stand wiedergeben."
4695
 
4696
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:543
4697
  #, php-format
4698
  msgctxt "shipments"
4699
  msgid "%s supports many more options. Explore %s."
4700
  msgstr "%s unterstützt viele weitere Einstellungen. Schau dir %s an."
4701
 
4702
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:543
4703
  #, php-format
4704
  msgctxt "shipments"
4705
  msgid "%s specific settings"
4706
  msgstr "%s spezifische Einstellungen"
4707
 
4708
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:556
4709
  msgctxt "shipments"
4710
  msgid "Choose a title for the shipping provider."
4711
  msgstr "Wähle einen Titel für den Versanddienstleister."
4712
 
4713
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:565
4714
  msgctxt "shipments"
4715
  msgid "Choose a description for the shipping provider."
4716
  msgstr "Wähle eine Beschreibung für den Versanddienstleister."
4717
 
4718
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:579
4719
  msgctxt "shipments"
4720
  msgid "Tracking URL"
4721
  msgstr "Sendungsverfolgung URL"
4722
 
4723
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:580
4724
  #, php-format
4725
  msgctxt "shipments"
4726
  msgid ""
4734
  "einzufügen: %s"
4735
 
4736
  # @ woocommerce-germanized
4737
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:590
4738
  msgctxt "shipments"
4739
  msgid "Tracking description"
4740
  msgstr "Sendungsverfolgung Hinweis"
4741
 
4742
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:591
4743
  #, php-format
4744
  msgctxt "shipments"
4745
  msgid ""
4754
  "einzufügen: %s"
4755
 
4756
  # @ woocommerce-germanized
4757
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:604
4758
  msgctxt "shipments"
4759
  msgid "Customer returns"
4760
  msgstr "Rücksendungen"
4761
 
4762
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:605
4763
  msgctxt "shipments"
4764
  msgid "Allow customers to submit return requests to shipments."
4765
  msgstr "Erlaube Kunden eine Rücksendung zu einer Sendung zu beantragen."
4766
 
4767
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:605
4768
  #, php-format
4769
  msgctxt "shipments"
4770
  msgid ""
4778
  "Gästen zu erfahren, lese bitte die %s."
4779
 
4780
  # @ woocommerce-germanized
4781
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:605
4782
  msgctxt "shipments"
4783
  msgid "Return Dashboard"
4784
  msgstr "Retouren-Dashboard"
4785
 
4786
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:605
4787
  msgctxt "shipments"
4788
  msgid "docs"
4789
  msgstr "Dokumentation"
4790
 
4791
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:614
4792
  msgctxt "shipments"
4793
  msgid "Guest returns"
4794
  msgstr "Retouren für Gäste"
4795
 
4796
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:615
4797
  msgctxt "shipments"
4798
  msgid "Allow guests to submit return requests to shipments."
4799
  msgstr "Erlaube Gästen Rücksendeanträge zu Bestellungen zu beantragen."
4800
 
4801
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:615
4802
  #, php-format
4803
  msgctxt "shipments"
4804
  msgid ""
4812
  "Rücksende-Formular für Gäste auf deiner Seite zu platzieren."
4813
 
4814
  # @ woocommerce-germanized
4815
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:626
4816
  msgctxt "shipments"
4817
  msgid "Manual confirmation"
4818
  msgstr "Manuelle Bestätigung"
4819
 
4820
  # @ woocommerce-germanized
4821
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:627
4822
  msgctxt "shipments"
4823
  msgid "Return requests need manual confirmation."
4824
  msgstr "Rücksendeanträge benötigen eine manuelle Bestätigung."
4825
 
4826
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:627
4827
  msgctxt "shipments"
4828
  msgid ""
4829
  "By default return request need manual confirmation e.g. a shop manager needs "
4840
  "Mail-Bestätigung samt Retouren-Label."
4841
 
4842
  # @ woocommerce-germanized
4843
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:639
4844
  msgctxt "shipments"
4845
  msgid "Return instructions"
4846
  msgstr "Rücksende-Anweisungen"
4847
 
4848
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:640
4849
  msgctxt "shipments"
4850
  msgid ""
4851
  "Provide your customer with instructions on how to return the shipment after "
5225
  # @ woocommerce-germanized
5226
  #: woocommerce-germanized/includes/abstracts/abstract-wc-gzd-product.php:549
5227
  #: woocommerce-germanized/includes/abstracts/abstract-wc-gzd-product.php:559
5228
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:449
5229
  #: woocommerce-germanized/includes/wc-gzd-template-functions.php:546
5230
  #: woocommerce-germanized/includes/wc-gzd-template-functions.php:554
5231
  msgid "incl. VAT"
5238
 
5239
  # @ woocommerce-germanized
5240
  #: woocommerce-germanized/includes/abstracts/abstract-wc-gzd-product.php:551
5241
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:449
5242
  #, php-format
5243
  msgid "incl. %s%% VAT"
5244
  msgstr "inkl. %s %% MwSt."
5480
  # @ woocommerce-germanized
5481
  # @ woocommerce
5482
  #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:73
5483
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:153
5484
  #: woocommerce-germanized/includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:79
5485
+ #: woocommerce-germanized/woocommerce-germanized.php:816
5486
  msgid "Settings"
5487
  msgstr "Einstellungen"
5488
 
5499
  msgstr "Tutorial starten"
5500
 
5501
  #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:92
 
5502
  #: woocommerce-germanized/includes/admin/views/setup/dhl.php:10
5503
  msgid "DHL"
5504
  msgstr "DHL"
5505
 
5506
  # @ woocommerce-germanized
5507
  #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:100
5508
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:112
5509
  msgid "Import settings"
5510
  msgstr "Einstellungen importieren"
5511
 
5512
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:104
5513
+ #: woocommerce-germanized/includes/admin/views/setup/internetmarke.php:10
5514
+ msgid "Internetmarke"
5515
+ msgstr "Internetmarke"
5516
+
5517
  # @ woocommerce-germanized
5518
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:143
5519
  msgid "Pages"
5520
  msgstr "Rechtlich relevante Seiten"
5521
 
5522
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:144
5523
  msgid "Create legal pages placeholders e.g. terms & conditions."
5524
  msgstr "Lege rechtlich relevante Seiten an, z.B. AGB."
5525
 
5526
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:154
5527
  msgid "Germanize WooCommerce settings (e.g. currency, tax display)."
5528
  msgstr "WooCommerce Einstellungen eindeutschen (z.B. Währung)"
5529
 
5530
  # @ woocommerce-germanized
5531
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:161
5532
  msgctxt "install"
5533
  msgid "VAT"
5534
  msgstr "USt."
5535
 
5536
  # @ woocommerce-germanized
5537
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:162
5538
  msgid "Let Germanized insert EU VAT rates."
5539
  msgstr "Lasse Germanized EU-Steuersätze importieren."
5540
 
5541
  # @ woocommerce-germanized
5542
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:168
5543
  msgctxt "install"
5544
  msgid "Virtual VAT"
5545
  msgstr "Virtuelle USt."
5546
 
5547
  # @ woocommerce-germanized
5548
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:169
5549
  msgid "Let Germanized insert virtual EU VAT rates."
5550
  msgstr "Lasse Germanized virtuelle EU-Steuersätze importieren."
5551
 
5552
  # @ woocommerce-germanized
5553
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:180
5554
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-general.php:202
5555
  #: woocommerce-germanized/includes/admin/views/html-page-status-germanized.php:43
5556
  msgid "Small-Enterprise-Regulation"
5557
  msgstr "Kleinunternehmerregelung"
5558
 
5559
  # @ woocommerce-germanized
5560
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:181
5561
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-general.php:203
5562
  msgid "VAT based on &#167;19 UStG"
5563
  msgstr "Umsatzsteuerbefreit nach &#167;19 UStG"
5564
 
5565
  # @ woocommerce-germanized
5566
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:181
5567
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-general.php:203
5568
  #, php-format
5569
  msgid ""
5575
  "Gebrauch machen willst."
5576
 
5577
  # @ woocommerce-germanized
5578
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:187
5579
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-doi.php:21
5580
  msgid "Double Opt In"
5581
  msgstr "Double-Opt-In"
5582
 
5583
  # @ woocommerce-germanized
5584
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:188
5585
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-doi.php:38
5586
  msgid "Enable customer double opt in during registration."
5587
  msgstr "Double-Opt-In Verfahren für Kundenkonten aktivieren."
5588
 
5589
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:188
5590
  #, php-format
5591
  msgid ""
5592
  "Sends an email to the customer after registration to verify his account. "
5600
  "\">Einstellungen</a> können nachträglich angepasst werden."
5601
 
5602
  # @ woocommerce-germanized
5603
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:208
5604
  msgid "Setup"
5605
  msgstr "Setup"
5606
 
5607
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:306
5608
  msgid "Germanized &rsaquo; Setup Wizard"
5609
  msgstr "Germanized &rsaquo; Setup"
5610
 
5611
  # @ woocommerce-germanized
5612
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:375
5613
  msgid "Skip Step"
5614
  msgstr "Schritt überspringen"
5615
 
5616
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:379
5617
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:381
5618
  msgid "Continue"
5619
  msgstr "Weiter"
5620
 
5621
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:387
5622
  msgid "Return to WP Admin"
5623
  msgstr "Zurück zu WP Admin"
5624
 
5667
  msgstr "Willkommen bei Germanized"
5668
 
5669
  # @ woocommerce-germanized
5670
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-welcome.php:290
5671
  msgid "Go to Germanized Settings"
5672
  msgstr "Germanized Einstellungen"
5673
 
5685
  #: woocommerce-germanized/includes/class-wc-gzd-dependencies.php:65
5686
  #: woocommerce-germanized/includes/class-wc-gzd-hook-priorities.php:35
5687
  #: woocommerce-germanized/includes/class-wc-gzd-hook-priorities.php:44
5688
+ #: woocommerce-germanized/includes/class-wc-gzd-order-helper.php:21
5689
+ #: woocommerce-germanized/includes/class-wc-gzd-order-helper.php:30
5690
  #: woocommerce-germanized/includes/class-wc-gzd-product-attribute-helper.php:21
5691
  #: woocommerce-germanized/includes/class-wc-gzd-product-attribute-helper.php:30
5692
  #: woocommerce-germanized/includes/export/class-wc-gzd-product-export.php:23
5698
  msgid "Cheatin&#8217; huh?"
5699
  msgstr "So geht das leider nicht.."
5700
 
5701
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:114
5702
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:148
5703
  msgctxt "dhl"
5704
  msgid "Action failed. Please refresh the page and retry."
5705
  msgstr ""
5706
  "Aktion fehlgeschlagen. Bitte aktualisiere die Seite und versuchen es erneut."
5707
 
5708
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:118
5709
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:152
5710
  msgctxt "dhl"
5711
  msgid "You don't have permission to do this."
5712
  msgstr "Du bist leider nicht berechtigt, diese Aktion durchzuführen."
5713
 
5714
  # @ woocommerce-germanized
5715
  #. Plugin Name of the plugin/theme
5716
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:228
5717
  msgid "Germanized for WooCommerce"
5718
  msgstr "Germanized für WooCommerce"
5719
 
5720
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:338
5721
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:45
5722
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:58
5723
  msgid "Yes"
5724
  msgstr "Ja"
5725
 
5726
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:338
5727
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:58
5728
  msgid "No"
5729
  msgstr "Nein"
5730
 
5731
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:410
5732
  msgid "Paid for order notification manually sent to customer."
5733
  msgstr "Bestellung bezahlt manuell an den Kunden versendet."
5734
 
5735
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:430
5736
  msgid "Order confirmation manually sent to customer."
5737
  msgstr "Bestellbestätigung manuell an den Kunden versendet."
5738
 
5739
  # @ woocommerce-germanized
5740
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:450
5741
  msgid "Resend order confirmation"
5742
  msgstr "Bestellbestätigung erneut versenden"
5743
 
5744
  # @ woocommerce-germanized
5745
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:451
5746
  msgid "Send paid for order notification"
5747
  msgstr "Bestellung bezahlt manuell versenden"
5748
 
5749
  # @ woocommerce-germanized
5750
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:461
5751
  #: woocommerce-germanized/includes/admin/settings/abstract-wc-gzd-settings-tab.php:114
5752
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-germanized.php:23
5753
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:9
5755
  msgid "Germanized"
5756
  msgstr "Germanized"
5757
 
5758
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:475
5759
  msgid "Parcel Delivery Data Transfer:"
5760
  msgstr "Paketdienstleister Datenweitergabe:"
5761
 
5762
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:476
5763
  msgid "allowed"
5764
  msgstr "akzeptiert"
5765
 
5766
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:476
5767
  msgid "not allowed"
5768
  msgstr "nicht akzeptiert"
5769
 
5770
  # @ woocommerce-germanized
5771
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:559
5772
  msgid "Optional Email Content"
5773
  msgstr "Optionaler E-Mail Inhalt"
5774
 
5775
  # @ woocommerce-germanized
5776
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:577
5777
  msgid "Add content which will be replacing default page content within emails."
5778
  msgstr ""
5779
  "Fülle dieses Feld aus um einen abweichenden E-Mail Anhangstext für diese "
5780
  "Seite zu bestimmen."
5781
 
5782
  # @ woocommerce-germanized
5783
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:591
5784
  #: woocommerce-germanized/includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php:152
5785
  msgid "Optional Mini Description"
5786
  msgstr "Warenkorb Kurzbeschreibung"
5787
 
5788
  # @ woocommerce-germanized
5789
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:613
5790
  msgid ""
5791
  "This content will be shown as short product description within checkout and "
5792
  "emails."
6008
  "lasse Germanized einfach deine bestehenden Einstellungen importieren."
6009
 
6010
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:35
6011
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-internetmarke-importer.php:35
6012
  msgctxt "dhl"
6013
  msgid "No need to use an external plugin which might lead to incompatibilities"
6014
  msgstr ""
6016
  "bessere Performance"
6017
 
6018
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:36
6019
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-internetmarke-importer.php:36
6020
  #, php-format
6021
  msgctxt "dhl"
6022
  msgid ""
6027
  "Services pro Versandart und %s"
6028
 
6029
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:36
6030
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-internetmarke-importer.php:36
6031
  msgctxt "dhl"
6032
  msgid "many more"
6033
  msgstr "und viele mehr"
6041
  "Sendungen und Retouren"
6042
 
6043
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:47
6044
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-internetmarke-importer.php:47
6045
  msgctxt "dhl"
6046
  msgid "Import settings and activate"
6047
  msgstr "Einstellungen importieren und loslegen"
6048
 
6049
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:53
6050
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-internetmarke-importer.php:53
6051
  msgctxt "dhl"
6052
  msgid "Learn more"
6053
  msgstr "Mehr erfahren"
6054
 
6055
+ # @ woocommerce-germanized
6056
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-internetmarke-importer.php:29
6057
+ msgctxt "dhl"
6058
+ msgid "Internetmarke built-in Integration"
6059
+ msgstr "Internetmarke Integration"
6060
+
6061
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-internetmarke-importer.php:33
6062
+ msgctxt "dhl"
6063
+ msgid ""
6064
+ "It seems like you are currently using the Deutsche Post Internetmarke "
6065
+ "plugin. Germanized does now fully integrate Internetmarke and switching is "
6066
+ "as simple as can be. Check your advantages by using the Internetmarke "
6067
+ "integration in Germanized and let Germanized import your current settings "
6068
+ "for you."
6069
+ msgstr ""
6070
+ "Es scheint als würdest du aktuell bereits das Deutsche Post Internetmarke "
6071
+ "Plugin nutzen. Germanized bietet nun eine eigene, verbesserte Integration "
6072
+ "der Internetmarke an. Den Wechsel haben wir dir so einfach wie möglich "
6073
+ "gemacht. Schau dir deine Vorteile bei der Nutzung der Germanized "
6074
+ "Internetmarke Integration an und lasse Germanized einfach deine bestehenden "
6075
+ "Einstellungen importieren."
6076
+
6077
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-internetmarke-importer.php:37
6078
+ msgctxt "dhl"
6079
+ msgid ""
6080
+ "Perfectly integrated in Germanized &ndash; easily create stamps for shipments"
6081
+ msgstr ""
6082
+ "Perfekt integriert in Germanized &ndash; erzeuge einfach Labels für Sendungen"
6083
+
6084
  # @ woocommerce-germanized
6085
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-pro.php:23
6086
  msgid "For professionals: Upgrade to Pro-Version"
6235
  msgid "Run the updater"
6236
  msgstr "Update starten"
6237
 
6238
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note.php:178
6239
  msgid "Not now"
6240
  msgstr "Nicht jetzt"
6241
 
6242
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note.php:182
6243
  msgctxt "woocommerce-germanized"
6244
  msgid "Deactivate"
6245
  msgstr "Deaktivieren"
6276
  msgstr "Jetzt upgraden"
6277
 
6278
  #: woocommerce-germanized/includes/admin/settings/abstract-wc-gzd-settings-tab.php:152
6279
+ #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-dhl.php:35
6280
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-invoices.php:61
6281
  msgid "Learn more"
6282
  msgstr "Mehr erfahren"
6297
 
6298
  # @ woocommerce-germanized
6299
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-pointers.php:92
6300
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:785
6301
  msgid "Status"
6302
  msgstr "Status"
6303
 
6581
  "Checkbox bearbeiten indem du auf den Link klickst."
6582
 
6583
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-checkboxes.php:62
6584
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:821
6585
  msgid "Label"
6586
  msgstr "Beschriftung"
6587
 
6651
  msgstr "Pro"
6652
 
6653
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-dhl.php:19
6654
+ msgid "Integrate Post & DHL Services such as Labels for Shipments and Returns."
 
 
6655
  msgstr ""
6656
+ "Erzeuge bequem Post & DHL Labels zu Sendungen und Retouren über dein Admin-"
6657
+ "Panel."
6658
 
6659
+ #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-dhl.php:44
6660
+ msgid "Post & DHL"
6661
+ msgstr "Post & DHL"
 
6662
 
6663
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-doi.php:17
6664
  msgid "Extend the WooCommerce registration process with a double opt in."
6812
  #: woocommerce-germanized/includes/api/class-wc-gzd-rest-customers-controller.php:144
6813
  #: woocommerce-germanized/includes/api/class-wc-gzd-rest-orders-controller.php:138
6814
  #: woocommerce-germanized/includes/api/class-wc-gzd-rest-orders-controller.php:145
6815
+ #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:553
6816
+ #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:566
6817
  #: woocommerce-germanized/includes/class-wc-gzd-customer-helper.php:131
6818
  #: woocommerce-germanized/includes/class-wc-gzd-customer-helper.php:139
6819
  msgid "Title"
7279
  "Platzhalter für den höchsten Preis."
7280
 
7281
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-general.php:294
7282
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:861
7283
  msgid "{min_price} &ndash; {max_price}"
7284
  msgstr "{min_price} &ndash; {max_price}"
7285
 
7898
 
7899
  # @ woocommerce-germanized
7900
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-taxes.php:30
7901
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:451
7902
  msgid "VAT"
7903
  msgstr "Umsatzsteuer"
7904
 
8153
  # @ woocommerce-germanized
8154
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-page-checkboxes.php:11
8155
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:27
8156
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:793
8157
  msgid "Name"
8158
  msgstr "Name"
8159
 
8160
  # @ woocommerce-germanized
8161
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-page-checkboxes.php:12
8162
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:29
8163
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:812
8164
  #: woocommerce-germanized/includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:888
8165
  #: woocommerce-germanized/includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:124
8166
  msgid "Description"
8173
 
8174
  # @ woocommerce-germanized
8175
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-page-checkboxes.php:14
8176
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:849
8177
  msgid "Mandatory"
8178
  msgstr "Pflichtfeld"
8179
 
8548
  msgstr ""
8549
  "Lasse Germanized deine WooCommerce-Einstellungen speziell für %s anpassen."
8550
 
8551
+ #: woocommerce-germanized/includes/admin/views/setup/internetmarke.php:12
8552
+ msgid ""
8553
+ "Want to easily ship your orders via Deutsche Post? Enable our Internetmarke "
8554
+ "integration and start generating labels for shipments comfortably via your "
8555
+ "admin panel."
8556
+ msgstr ""
8557
+ "Du möchtest deine Bestellung mit der Deutschen Post versenden? Aktiviere "
8558
+ "unsere Integration der Internetmarke und erzeuge bequem Labels zu Sendungen "
8559
+ "über dein Admin-Panel."
8560
+
8561
+ #: woocommerce-germanized/includes/admin/views/setup/internetmarke.php:17
8562
+ msgid ""
8563
+ "We've found out that you have been using the Internetmarke standalone Plugin "
8564
+ "already. We will automatically import your settings and you can start using "
8565
+ "our integration instead."
8566
+ msgstr ""
8567
+ "Wir haben herausgefunden, dass du bereits das Plugin Deutsche Post "
8568
+ "Internetmarke verwendest. Wir importieren deine Einstellungen automatisch, "
8569
+ "damit du schnell und einfach unsere Integration nutzen kannst."
8570
+
8571
  # @ woocommerce-germanized
8572
  #: woocommerce-germanized/includes/admin/views/setup/settings.php:7
8573
  msgid "Adjust Germanized"
8818
  msgstr "Anzahl der veröffentlichten Produkte für die Ressource."
8819
 
8820
  # @ woocommerce-germanized
8821
+ #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:189
8822
  #, php-format
8823
  msgid "%s [new]"
8824
  msgstr "%s [neu]"
8825
 
8826
  # @ woocommerce-germanized
8827
+ #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:245
8828
  msgctxt "revocation-form"
8829
  msgid "is not a valid email address."
8830
  msgstr "ist leider keine valide E-Mail Adresse."
8831
 
8832
  # @ woocommerce-germanized
8833
+ #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:249
8834
  msgctxt "revocation-form"
8835
  msgid "Please enter a valid postcode/ZIP"
8836
  msgstr "Bitte gib eine echte Postleitzahl ein"
8837
 
8838
  # @ woocommerce-germanized
8839
+ #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:257
8840
  msgctxt "revocation-form"
8841
  msgid "is not valid."
8842
  msgstr "ist leider nicht korrekt."
8843
 
8844
  # @ woocommerce-germanized
8845
+ #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:278
8846
  msgctxt "revocation-form"
8847
  msgid ""
8848
  "Thank you. We have received your Revocation Request. You will receive a "
8851
  "Vielen Dank. Wir haben deinen Widerruf erhalten. Du bekommst in Kürze eine E-"
8852
  "Mail mit deinen Daten als Bestätigung."
8853
 
8854
+ #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:227
8855
  msgid ""
8856
  "Sorry, but differential taxed products cannot be purchased with normal "
8857
  "products at the same time."
8859
  "Entschuldigung, differenzbesteuerte Produkte können nicht gemeinsam mit "
8860
  "normalen Produkten gekauft werden."
8861
 
8862
+ #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:233
8863
  msgid ""
8864
  "Sorry, but normal products cannot be purchased together with differential "
8865
  "taxed products at the same time."
8868
  "differenzbesteuerten Produkten gekauft werden."
8869
 
8870
  # @ woocommerce-germanized
8871
+ #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:790
8872
  #: woocommerce-germanized/includes/class-wc-gzd-revocation.php:52
8873
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:604
8874
  msgid "Mr."
8875
  msgstr "Herr"
8876
 
8877
  # @ woocommerce-germanized
8878
+ #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:791
8879
  msgctxt "customer-title-male-address"
8880
  msgid "Mr."
8881
  msgstr "Herrn"
8882
 
8883
+ #: woocommerce-germanized/includes/class-wc-gzd-coupon-helper.php:318
8884
  msgid "Is voucher?"
8885
  msgstr "Wertgutschein?"
8886
 
8887
+ #: woocommerce-germanized/includes/class-wc-gzd-coupon-helper.php:319
8888
  #, php-format
8889
  msgid ""
8890
  "Whether or not this coupon is a voucher which has been sold to a customer "
8933
  msgid "Thank you. You have successfully activated your account."
8934
  msgstr "Vielen Dank. Dein Benutzerkonto wurde erfolgreich aktiviert."
8935
 
8936
+ #: woocommerce-germanized/includes/class-wc-gzd-customer-helper.php:574
8937
  msgid "Expired activation key"
8938
  msgstr "Abgelaufener Aktivierungscode"
8939
 
8940
+ #: woocommerce-germanized/includes/class-wc-gzd-customer-helper.php:579
8941
  msgid "Invalid activation key"
8942
  msgstr "Aktivierungscode ungültig"
8943
 
8944
+ #: woocommerce-germanized/includes/class-wc-gzd-emails.php:186
8945
  msgid "BCC recipients"
8946
  msgstr "BCC Empfänger"
8947
 
8948
+ #: woocommerce-germanized/includes/class-wc-gzd-emails.php:188
8949
  msgid "Enter blind-copy recipients (comma separated) for this email."
8950
  msgstr "Füge Empfänger (kommasepariert) einer Blindkopie für diese E-Mail ein."
8951
 
8952
  # @ woocommerce-germanized
8953
+ #: woocommerce-germanized/includes/class-wc-gzd-emails.php:227
8954
  msgid "Confirmation text"
8955
  msgstr "Bestätigung Text"
8956
 
8957
+ #: woocommerce-germanized/includes/class-wc-gzd-emails.php:228
8958
  msgid ""
8959
  "Your order has been received and is now being processed. Your order details "
8960
  "are shown below for your reference:"
8963
  "deiner Bestellung kannst du der nachfolgenden Tabelle entnehmen:"
8964
 
8965
  # @ woocommerce-germanized
8966
+ #: woocommerce-germanized/includes/class-wc-gzd-emails.php:229
8967
  msgid ""
8968
  "This text will be inserted within the order confirmation email. Use "
8969
  "{order_number}, {site_title} or {order_date} as placeholder."
8971
  "Dieser Text wird in die Bestellbestätigung eingefügt. Verwende "
8972
  "{order_number}, {site_title} oder {order_date} als Platzhalter."
8973
 
8974
+ #: woocommerce-germanized/includes/class-wc-gzd-emails.php:347
8975
  msgid ""
8976
  "Your order has been received and is now being processed. Your order details "
8977
  "are shown below for your reference."
8979
  "Deine Bestellung ist eingegangen und wird nun bearbeitet. Die Einzelheiten "
8980
  "deiner Bestellung kannst du der nachfolgenden Tabelle entnehmen."
8981
 
8982
+ #: woocommerce-germanized/includes/class-wc-gzd-emails.php:395
8983
  msgid "Someone requested a password reset for your account."
8984
  msgstr ""
8985
  "Jemand hat das Zurücksetzen des Passworts für deinen Account beantragt."
8986
 
8987
+ #: woocommerce-germanized/includes/class-wc-gzd-emails.php:410
8988
  #, php-format
8989
  msgid "Thanks for creating an account on %s."
8990
  msgstr "Danke, dass du ein Konto bei %s erstellt hast."
8991
 
8992
  # @ woocommerce-germanized
8993
+ #: woocommerce-germanized/includes/class-wc-gzd-emails.php:1114
8994
  msgctxt "revocation-form"
8995
  msgid "Forward your Revocation online"
8996
  msgstr "Deinen Widerruf online erklären"
9005
  "Bitte installiere <a href=\"%s\" target=\"_blank\">WooCommerce</a> bevor du "
9006
  "WooCommerce Germanized installierst. Vielen Dank!"
9007
 
9008
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:486
9009
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:500
9010
  msgid "Reduced rate"
9011
  msgstr "Ermäßigter Steuersatz"
9012
 
9013
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:542
9014
  #, php-format
9015
  msgctxt "vat-rate-import"
9016
  msgid "VAT %s"
9017
  msgstr "MwSt. %s"
9018
 
9019
  # @ woocommerce-germanized
9020
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:657
9021
  msgctxt "Page slug"
9022
  msgid "data-security"
9023
  msgstr "datenschutzerklaerung"
9024
 
9025
  # @ woocommerce-germanized
9026
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:658
9027
  msgctxt "Page title"
9028
  msgid "Data Security Statement"
9029
  msgstr "Datenschutzerklärung"
9030
 
9031
  # @ woocommerce-germanized
9032
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:662
9033
  msgctxt "Page slug"
9034
  msgid "imprint"
9035
  msgstr "impressum"
9036
 
9037
  # @ woocommerce-germanized
9038
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:663
9039
  msgctxt "Page title"
9040
  msgid "Imprint"
9041
  msgstr "Impressum"
9042
 
9043
  # @ woocommerce-germanized
9044
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:667
9045
  msgctxt "Page slug"
9046
  msgid "terms"
9047
  msgstr "agb"
9048
 
9049
  # @ woocommerce-germanized
9050
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:668
9051
  msgctxt "Page title"
9052
  msgid "Terms & Conditions"
9053
  msgstr "AGB"
9054
 
9055
  # @ woocommerce-germanized
9056
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:672
9057
  msgctxt "Page slug"
9058
  msgid "revocation"
9059
  msgstr "widerrufsbelehrung"
9060
 
9061
  # @ woocommerce-germanized
9062
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:673
9063
  msgctxt "Page title"
9064
  msgid "Power of Revocation"
9065
  msgstr "Widerrufsbelehrung"
9066
 
9067
  # @ woocommerce-germanized
9068
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:677
9069
  msgctxt "Page slug"
9070
  msgid "shipping-methods"
9071
  msgstr "versandarten"
9072
 
9073
  # @ woocommerce-germanized
9074
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:678
9075
  msgctxt "Page title"
9076
  msgid "Shipping Methods"
9077
  msgstr "Versandarten"
9078
 
9079
  # @ woocommerce-germanized
9080
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:682
9081
  msgctxt "Page slug"
9082
  msgid "payment-methods"
9083
  msgstr "bezahlmoeglichkeiten"
9084
 
9085
  # @ woocommerce-germanized
9086
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:683
9087
  msgctxt "Page title"
9088
  msgid "Payment Methods"
9089
  msgstr "Zahlungsarten"
9301
  msgid "Checkbox with name %s does already exist."
9302
  msgstr "Eine Checkbox mit dem Namen %s existiert bereits."
9303
 
9304
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:344
9305
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:364
9306
+ #, php-format
9307
+ msgid "%s is a mandatory field."
9308
+ msgstr "%s ist ein Pflichtfeld."
9309
+
9310
  # @ woocommerce-germanized
9311
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:788
9312
  msgid "Enable checkbox"
9313
  msgstr "Checkbox aktivieren"
9314
 
9315
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:797
9316
  msgid ""
9317
  "Choose a name to identify your checkbox. Upon creating a new checkbox, this "
9318
  "value is being used to generate the Id."
9320
  "Wähle einen Namen aus, um deine Checkbox zu identifizieren. Bei Erstellung "
9321
  "einer neuen Checkbox wird dieser Wert verwendet um eine Id zu erstellen."
9322
 
9323
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:802
9324
  msgid "Id"
9325
  msgstr "Id"
9326
 
9327
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:806
9328
  msgid ""
9329
  "The checkbox Id is the unique indentifier which is used to identify the "
9330
  "checkbox within the code. Cannot be edited after creating the checkbox."
9333
  "Code heraus zugreifbar zu machen. Kann nach dem Erstellen einer Checkbox "
9334
  "nicht mehr verändert werden."
9335
 
9336
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:815
9337
  msgid "Describe the use case of your checkbox."
9338
  msgstr "Beschreibe hier den Use-Case deiner Checkbox."
9339
 
9340
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:825
9341
  msgid "Choose a label to be inserted next to the checkbox."
9342
  msgstr "Wähle eine Beschriftung aus, die neben der Checkbox platziert wird."
9343
 
9344
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:826
9345
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:836
9346
  #, php-format
9347
  msgid "You may use one of the following placeholders within the text: %s"
9348
  msgstr "Du kannst einen der folgenden Platzhalter in deinem Text verwenden: %s"
9349
 
9350
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:831
9351
  msgid "Error Message"
9352
  msgstr "Fehlermeldung"
9353
 
9354
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:835
9355
  msgid ""
9356
  "Choose an error message to be shown when the user has not confirmed the "
9357
  "checkbox."
9360
  "die Checkbox nicht bestätigt hat."
9361
 
9362
  # @ woocommerce-germanized
9363
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:841
9364
  msgid "Hide input"
9365
  msgstr "Ausblenden"
9366
 
9367
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:844
9368
  msgid "Do only show a label and hide the actual checkbox."
9369
  msgstr ""
9370
  "Zeige lediglich die Beschriftung und entferne die eigentliche Checkbox."
9371
 
9372
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:852
9373
  msgid "Mark the checkbox as mandatory."
9374
  msgstr "Checkbox zum Pflichtfeld machen."
9375
 
9376
  # @ woocommerce-germanized
9377
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:857
9378
  msgid "Locations"
9379
  msgstr "Orte"
9380
 
9381
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:861
9382
  msgid "Choose where to display your checkbox."
9383
  msgstr "Wähle einen Ort aus, an dem die Checkbox platziert werden soll."
9384
 
9655
 
9656
  # @ woocommerce-germanized
9657
  #: woocommerce-germanized/includes/class-wc-gzd-revocation.php:53
9658
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:605
9659
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:623
9660
  msgid "Ms."
9661
  msgstr "Frau"
9662
 
10515
  msgid "Data Security"
10516
  msgstr "Datenschutzerklärung"
10517
 
10518
+ # @ woocommerce-germanized
10519
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:451
10520
+ #, php-format
10521
+ msgid "%s%% VAT"
10522
+ msgstr "%s %% MwSt."
10523
+
10524
+ # @ woocommerce-germanized
10525
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:603
10526
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:630
10527
+ msgctxt "title-option"
10528
+ msgid "None"
10529
+ msgstr "Keine"
10530
+
10531
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:606
10532
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:630
10533
+ msgid "Mx"
10534
+ msgstr "Divers"
10535
+
10536
  # @ woocommerce-germanized
10537
  #: woocommerce-germanized/includes/wc-gzd-template-functions.php:225
10538
  #: woocommerce-germanized/templates/checkout/edit-data-notice.php:25
10884
  msgid "Forward Revocation"
10885
  msgstr "Widerruf erklären"
10886
 
10887
+ #: woocommerce-germanized/templates/global/complaints.php:22
10888
  msgid ""
10889
  "Alternative Dispute Resolution in accordance with Art. 14 (1) ODR-VO and § "
10890
  "36 VSBG:"
10906
  msgid "upgrade"
10907
  msgstr "Upgrade"
10908
 
10909
+ #: woocommerce-germanized/woocommerce-germanized.php:317
10910
  #, php-format
10911
  msgid ""
10912
  "This version of the Corona Helper Plugin includes a bug which could lead to "
12154
  msgid "https://vendidero.de"
12155
  msgstr "https://vendidero.de"
12156
 
12157
+ # @ woocommerce-germanized
12158
+ #~ msgctxt "dhl"
12159
+ #~ msgid "General"
12160
+ #~ msgstr "Allgemein"
12161
+
12162
+ #, fuzzy
12163
+ #~| msgctxt "dhl"
12164
+ #~| msgid ""
12165
+ #~| "Please select your default DHL shipping service for domestic shipments "
12166
+ #~| "that you want to offer to your customers (you can always change this "
12167
+ #~| "within each individual shipment afterwards)."
12168
+ #~ msgctxt "dhl"
12169
+ #~ msgid ""
12170
+ #~ "Please select your default Deutsche Post shipping service for domestic "
12171
+ #~ "shipments that you want to offer to your customers (you can always change "
12172
+ #~ "this within each individual shipment afterwards)."
12173
+ #~ msgstr ""
12174
+ #~ "Bitte wähle das Standard-Produkt für nationale Sendungen aus, das du für "
12175
+ #~ "deine Kunden anbietest (du kannst das Produkt für jede einzelne Sendung "
12176
+ #~ "nachträglich ändern)."
12177
+
12178
+ #, fuzzy
12179
+ #~ msgctxt "dhl"
12180
+ #~ msgid "Error while during request."
12181
+ #~ msgstr "Fehler beim Einlesen der Wunschzeit."
12182
+
12183
+ #~ msgctxt "dhl"
12184
+ #~ msgid "Harmonized Tariff Schedule (DHL)"
12185
+ #~ msgstr "Harmonized Tariff Schedule (DHL)"
12186
+
12187
+ #~ msgctxt "dhl"
12188
+ #~ msgid "This code is needed for customs of international shipping."
12189
+ #~ msgstr ""
12190
+ #~ "Dieser Code wird für die Zollabwicklung bei internationalen Sendungen "
12191
+ #~ "benötigt."
12192
+
12193
+ #~ msgctxt "dhl"
12194
+ #~ msgid "Visual minimum age"
12195
+ #~ msgstr "Alterssichtprüfung"
12196
+
12197
+ #~ msgctxt "dhl"
12198
+ #~ msgid "Age Verification"
12199
+ #~ msgstr "Alterssichtprüfung"
12200
+
12201
  #~ msgid "PDF Layout"
12202
  #~ msgstr "PDF Layout"
12203
 
12442
  #~ msgid "Invalid shipment"
12443
  #~ msgstr "Ungültige Sendung"
12444
 
 
 
 
 
12445
  #, php-format
12446
  #~ msgctxt "dhl"
12447
  #~ msgid ""
i18n/languages/woocommerce-germanized-de_DE_formal.mo CHANGED
Binary file
i18n/languages/woocommerce-germanized-de_DE_formal.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: WooCommerce Germanized\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2020-10-23 11:56+0200\n"
6
- "PO-Revision-Date: 2020-10-23 11:57+0200\n"
7
  "Last-Translator: holzhannes <holzhannes@posteo.de>\n"
8
  "Language-Team: \n"
9
  "Language: de_DE@formal\n"
@@ -11,7 +11,7 @@ msgstr ""
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14
- "X-Generator: Poedit 2.4.1\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
  "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
17
  "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
@@ -39,6 +39,36 @@ msgstr ""
39
  "X-Poedit-SearchPathExcluded-12: woocommerce-trusted-shops/build\n"
40
  "X-Poedit-SearchPathExcluded-13: woocommerce-germanized/assets\n"
41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  # @ woocommerce-germanized
43
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:18
44
  msgctxt "dhl"
@@ -56,8 +86,8 @@ msgid "Duties"
56
  msgstr "Zollabgabe"
57
 
58
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:65
59
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:137
60
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:953
61
  #: woocommerce-germanized-dhl/src/ParcelServices.php:29
62
  msgctxt "dhl"
63
  msgid "Preferred Day"
@@ -71,15 +101,15 @@ msgstr "Wunschzeit"
71
 
72
  # @ woocommerce-germanized
73
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:87
74
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:165
75
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:973
76
  #: woocommerce-germanized-dhl/src/ParcelServices.php:43
77
  msgctxt "dhl"
78
  msgid "Preferred Location"
79
  msgstr "Wunschort"
80
 
81
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:98
82
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:981
83
  #: woocommerce-germanized-dhl/src/ParcelServices.php:48
84
  msgctxt "dhl"
85
  msgid "Preferred Neighbor"
@@ -92,24 +122,24 @@ msgstr "Beilage-Retourenlabel erstellen"
92
 
93
  # @ woocommerce-germanized
94
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:121
95
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:740
96
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:809
97
  msgctxt "dhl"
98
  msgid "Name"
99
  msgstr "Name"
100
 
101
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:130
102
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:747
103
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:816
104
  msgctxt "dhl"
105
  msgid "Company"
106
  msgstr "Firma"
107
 
108
  # @ woocommerce-germanized
109
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:139
110
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:379
111
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:754
112
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:823
113
  msgctxt "dhl"
114
  msgid "Street"
115
  msgstr "Straße"
@@ -122,9 +152,9 @@ msgstr "Hausnummer"
122
 
123
  # @ woocommerce-germanized
124
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:159
125
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:380
126
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:775
127
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:844
128
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder.php:27
129
  msgctxt "dhl"
130
  msgid "Postcode"
@@ -132,24 +162,24 @@ msgstr "Postleitzahl"
132
 
133
  # @ woocommerce-germanized
134
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:168
135
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:381
136
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:768
137
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:837
138
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder.php:30
139
  msgctxt "dhl"
140
  msgid "City"
141
  msgstr "Stadt"
142
 
143
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:179
144
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:791
145
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:860
146
  msgctxt "dhl"
147
  msgid "Phone"
148
  msgstr "Telefon"
149
 
150
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:188
151
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:798
152
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:867
153
  msgctxt "dhl"
154
  msgid "Email"
155
  msgstr "E-Mail"
@@ -177,7 +207,7 @@ msgstr "Alterssichtprüfung"
177
 
178
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:228
179
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:331
180
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:538
181
  msgctxt "dhl"
182
  msgid "GoGreen"
183
  msgstr "GoGreen"
@@ -199,7 +229,7 @@ msgid "No neighbor"
199
  msgstr "Keine Nachbarschaftszustellung"
200
 
201
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:272
202
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:566
203
  msgctxt "dhl"
204
  msgid "Named person only"
205
  msgstr "Persönliche Übergabe"
@@ -226,7 +256,7 @@ msgid "Minimum age"
226
  msgstr "Mindestalter"
227
 
228
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:322
229
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:587
230
  msgctxt "dhl"
231
  msgid "Premium"
232
  msgstr "Premium"
@@ -238,6 +268,7 @@ msgid "Receiver"
238
  msgstr "Empfänger"
239
 
240
  #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:15
 
241
  msgctxt "dhl"
242
  msgid "DHL Labels"
243
  msgstr "DHL Labels"
@@ -270,11 +301,13 @@ msgstr ""
270
 
271
  # @ woocommerce-germanized
272
  #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:41
 
273
  msgctxt "dhl"
274
- msgid "DHL Label Automation"
275
- msgstr "DHL Label Automatisierung"
276
 
277
  #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:44
 
278
  #, php-format
279
  msgctxt "dhl"
280
  msgid ""
@@ -314,139 +347,183 @@ msgstr ""
314
  "überschreiben die <a href=\"%s\">globalen Einstellungen</a>."
315
 
316
  # @ woocommerce-germanized
317
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
318
  msgctxt "dhl time context"
319
  msgid "None"
320
  msgstr "Keine"
321
 
322
  # @ woocommerce-germanized
323
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:45
324
- #: woocommerce-germanized-dhl/src/Api/Paket.php:272
325
  msgctxt "dhl day context"
326
  msgid "None"
327
  msgstr "Keiner"
328
 
329
  # @ woocommerce-germanized
330
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:70
331
  msgctxt "dhl"
332
  msgid "Delivery Duty Unpaid"
333
  msgstr "Delivery Duty Unpaid"
334
 
335
  # @ woocommerce-germanized
336
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:71
337
  msgctxt "dhl"
338
  msgid "Delivery Duty Paid"
339
  msgstr "Delivery Duty Paid"
340
 
341
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:72
342
  msgctxt "dhl"
343
  msgid "Delivery Duty Paid (excl. VAT )"
344
  msgstr "Delivered Duty Paid (exkl. MwSt.)"
345
 
346
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:73
347
  msgctxt "dhl"
348
  msgid "Delivery Duty Paid (excl. Duties, taxes and VAT)"
349
  msgstr "Delivery Duty Paid (exkl. Zölle, Steuern und MwSt.)"
350
 
351
  # @ woocommerce-germanized
352
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:91
353
  msgctxt "age context"
354
  msgid "None"
355
  msgstr "Keine"
356
 
357
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:92
358
  msgctxt "dhl"
359
  msgid "Minimum age of 16"
360
  msgstr "Mindestens 16 Jahre"
361
 
362
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:93
363
  msgctxt "dhl"
364
  msgid "Minimum age of 18"
365
  msgstr "Mindestens 18 Jahre"
366
 
367
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:118
368
  msgctxt "dhl"
369
  msgid "Shipment #{shipment_id} to order {order_id}"
370
  msgstr "Sendung #{shipment_id} zur Bestellung {order_id}"
371
 
372
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:134
373
  msgctxt "dhl"
374
  msgid "Return #{shipment_id} to order {order_id}"
375
  msgstr "Retoure #{shipment_id} zur Bestellung {order_id}"
376
 
377
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:150
378
  msgctxt "dhl"
379
  msgid "Return shipment #{shipment_id} to order #{order_id}"
380
  msgstr "Retourensendung #{shipment_id} zur Bestellung #{order_id}"
381
 
382
  # @ woocommerce-germanized
383
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:224
384
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:184
385
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:492
386
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:835
387
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder.php:38
388
  msgctxt "dhl"
389
  msgid "Packstation"
390
  msgstr "Packstation"
391
 
392
  # @ woocommerce-germanized
393
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:225
394
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:226
395
  msgctxt "dhl"
396
  msgid "Postfiliale"
397
  msgstr "Postfiliale"
398
 
399
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:310
400
  msgctxt "dhl"
401
  msgid "Receiver is missing or does not exist."
402
  msgstr "Empfänger fehlt oder existiert nicht."
403
 
404
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:344
 
405
  #, php-format
406
  msgctxt "dhl"
407
  msgid "Shipment order #%s does not exist"
408
  msgstr "Bestellung zur Sendung #%s existiert nicht"
409
 
410
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:386
 
 
 
 
 
 
 
 
 
 
 
411
  #, php-format
412
  msgctxt "dhl"
413
  msgid "%s of the return address is a mandatory field."
414
  msgstr "%s der Rücksendeadresse ist ein Pflichtfeld."
415
 
416
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:391
417
  msgctxt "dhl"
418
  msgid "Please either add a return company or name."
419
  msgstr ""
420
  "Bitte geben Sie entweder einen Firmennamen oder Namen für die "
421
  "Rücksendeadresse an."
422
 
423
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:410
424
  msgctxt "dhl"
425
  msgid "Error while parsing preferred day."
426
  msgstr "Fehler beim Einlesen des Wunschtags."
427
 
428
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:421
429
  msgctxt "dhl"
430
  msgid "Error while parsing preferred time."
431
  msgstr "Fehler beim Einlesen der Wunschzeit."
432
 
433
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:446
434
  msgctxt "dhl"
435
  msgid "The visual min age check is invalid."
436
  msgstr "Das Alter der Alterssichtprüfung ist ungültig."
437
 
438
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:465
439
  msgctxt "dhl"
440
  msgid "The ident min age check is invalid."
441
  msgstr "Das Alter des Ident-Checks ist ungültig."
442
 
443
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:472
444
  msgctxt "dhl"
445
  msgid "There was an error parsing the date of birth for the identity check."
446
  msgstr ""
447
  "Beim Einlesen des Geburtsdatums für den Ident-Check trat ein Problem auf."
448
 
449
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:477
450
  msgctxt "dhl"
451
  msgid ""
452
  "Either a minimum age or a date of birth must be added to the ident check."
@@ -455,156 +532,174 @@ msgstr ""
455
  "hinzugefügt werden."
456
 
457
  # @ woocommerce-germanized
458
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:490
459
  #, php-format
460
  msgctxt "dhl"
461
  msgid "%s duties element does not exist."
462
  msgstr "%s Zollabgabe existiert nicht."
463
 
464
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:954
465
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1029
466
  msgctxt "dhl"
467
  msgid "Invalid shipment"
468
  msgstr "Ungültige Sendung"
469
 
470
  # @ woocommerce-germanized
471
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:958
472
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1033
473
  msgctxt "dhl"
474
  msgid "Order does not exist"
475
  msgstr "Bestellung existiert nicht"
476
 
477
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:981
478
  msgctxt "dhl"
479
  msgid "Error while creating the label instance"
480
  msgstr "Fehler beim Erstellen der Label-Instanz"
481
 
482
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1101
483
  msgctxt "dhl"
484
  msgid "Invalid label"
485
  msgstr "Ungültiges Label"
486
 
487
  # @ woocommerce-germanized
488
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1189
489
  msgctxt "dhl"
490
  msgid "DHL Retoure International A"
491
  msgstr "DHL Retoure International A"
492
 
493
  # @ woocommerce-germanized
494
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1190
495
  msgctxt "dhl"
496
  msgid "DHL Retoure International B"
497
  msgstr "DHL Retoure International B"
498
 
499
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1199
500
  msgctxt "dhl"
501
  msgid "DHL Retoure Online"
502
  msgstr "DHL Retoure Online"
503
 
504
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1210
505
  msgctxt "dhl"
506
  msgid "DHL Paket Connect"
507
  msgstr "DHL Paket Connect"
508
 
509
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1211
510
  msgctxt "dhl"
511
  msgid "DHL Europaket (B2B)"
512
  msgstr "DHL Europaket (B2B)"
513
 
514
  # @ woocommerce-germanized
515
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1212
516
  msgctxt "dhl"
517
  msgid "DHL Paket International"
518
  msgstr "DHL Paket International"
519
 
520
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1278
521
  msgctxt "dhl"
522
  msgid "DHL Paket"
523
  msgstr "DHL Paket"
524
 
525
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1279
526
  msgctxt "dhl"
527
  msgid "DHL Paket PRIO"
528
  msgstr "DHL Paket PRIO"
529
 
530
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1280
531
  msgctxt "dhl"
532
  msgid "DHL Paket Taggleich"
533
  msgstr "DHL Paket Taggleich"
534
 
535
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1281
536
  msgctxt "dhl"
537
- msgid "Warenpost"
538
- msgstr "Warenpost"
539
 
540
- #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1368
541
  msgctxt "dhl"
542
  msgid "Error while uploading label."
543
  msgstr "Fehler beim Hochladen des Labels."
544
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
545
  # @ woocommerce-germanized
546
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:109
547
  msgctxt "dhl"
548
  msgid "Receiver Ids"
549
  msgstr "Empfänger IDs"
550
 
551
  # @ woocommerce-germanized
552
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:116
553
  msgctxt "dhl"
554
  msgid "Receiver Id"
555
  msgstr "Empfänger ID"
556
 
557
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:116
558
  msgctxt "dhl"
559
  msgid "Find your Receiver Ids within your DHL contract data."
560
  msgstr "Die Empfänger IDs finden Sie im DHL Geschäftskundenportal."
561
 
562
  # @ woocommerce-germanized
563
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:117
564
  msgctxt "dhl"
565
  msgid "Country Code"
566
  msgstr "Ländercode"
567
 
568
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:117
569
  msgctxt "dhl"
570
  msgid "Leave empty to use the Receiver Id as fallback."
571
  msgstr "Leer lassen, um diese Empfänger ID als Fallback zu verwenden."
572
 
573
  # @ woocommerce-germanized
574
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:137
575
  msgctxt "dhl"
576
  msgid "+ Add receiver"
577
  msgstr "+ Empfänger hinzufügen"
578
 
579
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:137
580
  msgctxt "dhl"
581
  msgid "Remove selected receiver(s)"
582
  msgstr "Ausgewählte Empfänger löschen"
583
 
584
  # @ woocommerce-germanized
585
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:173
586
  msgctxt "dhl"
587
  msgid "Select a country"
588
  msgstr "Land auswählen"
589
 
590
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:175
591
  msgctxt "dhl"
592
- msgid "Harmonized Tariff Schedule (DHL)"
593
- msgstr "Harmonized Tariff Schedule (DHL)"
594
 
595
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:175
596
  msgctxt "dhl"
597
- msgid "This code is needed for customs of international shipping."
 
 
598
  msgstr ""
599
- "Dieser Code wird für die Zollabwicklung bei internationalen Sendungen "
600
- "benötigt."
 
601
 
602
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:176
603
  msgctxt "dhl"
604
  msgid "Country of manufacture (DHL)"
605
  msgstr "Herstellungsland (DHL)"
606
 
607
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:176
608
  msgctxt "dhl"
609
  msgid ""
610
  "The country of manufacture is needed for customs of international shipping."
@@ -612,7 +707,7 @@ msgstr ""
612
  "Das Herstellungsland wird für die Zollabwicklung bei internationalen "
613
  "Sendungen benötigt."
614
 
615
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:197
616
  #, php-format
617
  msgctxt "dhl"
618
  msgid ""
@@ -622,18 +717,19 @@ msgstr ""
622
  "Das Verzeichnis zum Speichern von DHL Labels fehlt. Bitte erstellen Sie den "
623
  "Ordner %s manuell und stellen Sie sicher, dass der Ordner beschreibbar ist."
624
 
625
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:204
626
- #: woocommerce-germanized-dhl/src/ShippingProviderDHL.php:34
 
627
  msgctxt "dhl"
628
  msgid "DHL"
629
  msgstr "DHL"
630
 
631
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:219
632
  msgctxt "dhl"
633
  msgid "DHL Label"
634
  msgstr "DHL Label"
635
 
636
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:231
637
  msgctxt "dhl"
638
  msgid ""
639
  "This label has been generated by the DHL for WooCommerce Plugin and is shown "
@@ -643,17 +739,17 @@ msgstr ""
643
  "Kompatibilitäts-Gründen angezeigt."
644
 
645
  # @ woocommerce-germanized
646
- #: woocommerce-germanized-dhl/src/Admin/Admin.php:232
647
  msgctxt "dhl"
648
  msgid "Download label"
649
  msgstr "Label downloaden"
650
 
651
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:29
652
  msgctxt "dhl"
653
  msgid "Enable DHL"
654
  msgstr "DHL aktivieren"
655
 
656
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:30
657
  msgctxt "dhl"
658
  msgid ""
659
  "If you want to ship your shipments via DHL and create labels to your "
@@ -662,12 +758,12 @@ msgstr ""
662
  "Wenn Sie Ihre Sendungen mit DHL verschicken und Labels zu Ihren Sendungen "
663
  "erzeugen möchten, aktivieren Sie die DHL Integration."
664
 
665
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:43
666
  msgctxt "dhl"
667
  msgid "Customer Number"
668
  msgstr "Kundennummer"
669
 
670
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:44
671
  msgctxt "dhl"
672
  msgid ""
673
  "Insert your DHL business customer number (EKP) here. If you are not yet a "
@@ -677,12 +773,12 @@ msgstr ""
677
  "Geschäftskunde sind, sollten Sie sich zuerst als Geschäftskunde bei DHL "
678
  "registrieren."
679
 
680
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:57
681
  msgctxt "dhl"
682
  msgid "API Access"
683
  msgstr "API Versionen"
684
 
685
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:58
686
  msgctxt "dhl"
687
  msgid ""
688
  "To create labels and embed DHL services, our software needs access to the "
@@ -692,14 +788,14 @@ msgstr ""
692
  "Software Zugang zur API. Sie sollten hier Ihre Zugangsdaten zum DHL "
693
  "Geschäftskundenportal eingeben."
694
 
695
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:76
696
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:324
697
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:473
698
  msgctxt "dhl"
699
  msgid "Inlay Returns"
700
  msgstr "Beilageretouren"
701
 
702
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:77
703
  msgctxt "dhl"
704
  msgid ""
705
  "If you want to provide your customers with inlay return labels for your "
@@ -708,14 +804,14 @@ msgstr ""
708
  "Wenn Sie Beilageretouren-Labels zu Ihren Sendungen hinzufügen möchten, "
709
  "sollten Sie diese Funktion standardmäßig aktivieren."
710
 
711
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:90
712
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:702
713
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:932
714
  msgctxt "dhl"
715
  msgid "Retoure"
716
  msgstr "Retoure"
717
 
718
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:91
719
  msgctxt "dhl"
720
  msgid ""
721
  "If you want to create DHL labels to returns you should activate this "
@@ -726,12 +822,12 @@ msgstr ""
726
  "aktivieren. Stellen Sie sicher, dass DHL Online Retoure in Ihrem Vertrag "
727
  "freigeschaltet ist."
728
 
729
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:104
730
  msgctxt "dhl"
731
  msgid "Age verification"
732
  msgstr "Altersverifikation"
733
 
734
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:105
735
  msgctxt "dhl"
736
  msgid ""
737
  "Use this feature to sync the Germanized age verification checkbox with the "
@@ -744,13 +840,14 @@ msgstr ""
744
  "„Alterssichtprüfung“ von DHL automatisch aktiviert."
745
 
746
  # @ woocommerce-germanized
747
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:118
748
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:726
 
749
  msgctxt "dhl"
750
  msgid "Automation"
751
  msgstr "Automatisierung"
752
 
753
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:119
754
  msgctxt "dhl"
755
  msgid ""
756
  "You might want to save some time and let Germanized generate labels "
@@ -760,7 +857,7 @@ msgstr ""
760
  "automatisch erzeugen lassen, sobald eine Sendung in einen bestimmten Status "
761
  "wechselt."
762
 
763
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:138
764
  msgctxt "dhl"
765
  msgid ""
766
  "Let your customers choose a preferred day (if the service is available at "
@@ -770,13 +867,13 @@ msgstr ""
770
  "Kundenadresse zur Verfügung steht) für die Lieferung in der Kasse auswählen."
771
 
772
  # @ woocommerce-germanized
773
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:151
774
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:961
775
  msgctxt "dhl"
776
  msgid "Fee"
777
  msgstr "Gebühr"
778
 
779
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:152
780
  msgctxt "dhl"
781
  msgid ""
782
  "Optionally charge your customers an additional fee for preferred services "
@@ -785,7 +882,7 @@ msgstr ""
785
  "Optional können Sie die Gebühr für die Auswahl des Wunschtags oder anderer "
786
  "Wunschpaket-Services an Ihre Kunden weiterreichen."
787
 
788
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:166
789
  msgctxt "dhl"
790
  msgid ""
791
  "Allow your customers to send their parcels to a preferred location e.g. a "
@@ -794,7 +891,7 @@ msgstr ""
794
  "Lassen Sie Ihre Kunden einen Wunschort für die Abgabe ihres Pakets in der "
795
  "Kasse auswählen. Dieser Service wird von DHL nicht zusätzlich berechnet."
796
 
797
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:185
798
  msgctxt "dhl"
799
  msgid ""
800
  "Allow your customers to choose packstation (and/or other DHL location types "
@@ -803,13 +900,13 @@ msgstr ""
803
  "Lassen Sie Ihre Kunden eine Packstation (und/oder andere DHL Standorte, wie "
804
  "im Folgenden konfiguriert) als Lieferadresse auswählen."
805
 
806
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:198
807
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1109
808
  msgctxt "dhl"
809
  msgid "Map"
810
  msgstr "Karte"
811
 
812
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:199
813
  msgctxt "dhl"
814
  msgid ""
815
  "This option adds a map overlay view to let your customers choose a DHL "
@@ -820,24 +917,25 @@ msgstr ""
820
  "DHL Standortes in der Nähe noch einfacher zu machen. Sie benötigen für die "
821
  "Kartenansicht einen gültigen Google Maps API Schlüssel."
822
 
823
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:219
 
824
  msgctxt "dhl"
825
  msgid "Enable"
826
  msgstr "Aktivieren"
827
 
828
  # @ woocommerce-germanized
829
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:220
830
  msgctxt "dhl"
831
  msgid "Enable DHL integration."
832
  msgstr "DHL Integration aktivieren."
833
 
834
  # @ woocommerce-germanized
835
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:227
836
  msgctxt "dhl"
837
  msgid "Customer Number (EKP)"
838
  msgstr "Kundennummer (EKP)"
839
 
840
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:229
841
  #, php-format
842
  msgctxt "dhl"
843
  msgid ""
@@ -847,33 +945,33 @@ msgstr ""
847
  "Ihre 10-stellige DHL Kundennummer (EKP). Finden Sie Ihre %s im DHL "
848
  "Geschäftskundenportal."
849
 
850
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:229
851
  msgctxt "dhl"
852
  msgid "customer number"
853
  msgstr "Kundennummer"
854
 
855
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:238
856
  msgctxt "dhl"
857
  msgid "API"
858
  msgstr "API"
859
 
860
  # @ woocommerce-germanized
861
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:241
862
  msgctxt "dhl"
863
  msgid "Enable Sandbox"
864
  msgstr "Sandbox aktivieren"
865
 
866
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:242
867
  msgctxt "dhl"
868
  msgid "Activate Sandbox mode for testing purposes."
869
  msgstr "Aktiviere den Sandbox Modus."
870
 
871
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:249
872
  msgctxt "dhl"
873
  msgid "Live Username"
874
  msgstr "Benutzer"
875
 
876
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:251
877
  #, php-format
878
  msgctxt "dhl"
879
  msgid ""
@@ -883,22 +981,22 @@ msgstr ""
883
  "Ihr Benutzername zum DHL Geschäftskundenportal. Bitte beachten Sie die "
884
  "Kleinschreibung und testen Sie Ihre Zugangsdaten vorab %s."
885
 
886
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:251
887
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:260
888
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:269
889
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:278
890
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:295
891
  msgctxt "dhl"
892
  msgid "here"
893
  msgstr "hier"
894
 
895
  # @ woocommerce-germanized
896
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:258
897
  msgctxt "dhl"
898
  msgid "Live Password"
899
  msgstr "Passwort"
900
 
901
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:260
902
  #, php-format
903
  msgctxt "dhl"
904
  msgid ""
@@ -910,12 +1008,12 @@ msgstr ""
910
  "der Gültigkeit des Passworts nach 3 (Standard-Benutzer) bzw. 12 (System-"
911
  "Benutzer) Monaten und testen Sie Ihre Zugangsdaten vorab %s."
912
 
913
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:267
914
  msgctxt "dhl"
915
  msgid "Sandbox Username"
916
  msgstr "Sandbox Benutzername"
917
 
918
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:269
919
  #, php-format
920
  msgctxt "dhl"
921
  msgid ""
@@ -925,12 +1023,12 @@ msgstr ""
925
  "Ihr Benutzername zum DHL Entwicklerportal. Bitte beachten Sie die "
926
  "Kleinschreibung und testen Sie Ihre Zugangsdaten vorab %s."
927
 
928
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:276
929
  msgctxt "dhl"
930
  msgid "Sandbox Password"
931
  msgstr "Sandbox Passwort"
932
 
933
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:278
934
  #, php-format
935
  msgctxt "dhl"
936
  msgid ""
@@ -940,13 +1038,13 @@ msgstr ""
940
  "Ihr Passwort zum DHL Entwicklerportal. Bitte testen Sie Ihre Zugangsdaten "
941
  "vorab %s."
942
 
943
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:291
944
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:334
945
  msgctxt "dhl"
946
  msgid "Products and Participation Numbers"
947
  msgstr "Produkte und Teilnahmenummern"
948
 
949
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:295
950
  #, php-format
951
  msgctxt "dhl"
952
  msgid ""
@@ -956,7 +1054,7 @@ msgstr ""
956
  "Bitte fügen Sie Ihre Teilnahmenummer für das dazugehörige Produkt ein. Sie "
957
  "können die anderen Teilnahmenummern später %s anpassen."
958
 
959
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:334
960
  #, php-format
961
  msgctxt "dhl"
962
  msgid ""
@@ -970,17 +1068,18 @@ msgstr ""
970
  "letzten beiden Zeichen der dazugehörigen Abrechnungsnummer, die Sie in Ihren "
971
  "%s finden (z.B.: 01)."
972
 
973
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:334
974
  msgctxt "dhl"
975
  msgid "contract data"
976
  msgstr "Vertragsdaten"
977
 
978
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:388
 
979
  msgctxt "dhl"
980
  msgid "Domestic Default Service"
981
  msgstr "Nationaler Standard Service"
982
 
983
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:392
984
  msgctxt "dhl"
985
  msgid ""
986
  "Please select your default DHL shipping service for domestic shipments that "
@@ -991,12 +1090,13 @@ msgstr ""
991
  "für Ihre Kunden anbieten (Sie können das Produkt für jede einzelne Sendung "
992
  "nachträglich ändern)."
993
 
994
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:398
 
995
  msgctxt "dhl"
996
  msgid "Int. Default Service"
997
  msgstr "Internationaler Standard Service"
998
 
999
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:402
1000
  msgctxt "dhl"
1001
  msgid ""
1002
  "Please select your default DHL shipping service for cross-border shipments "
@@ -1008,27 +1108,27 @@ msgstr ""
1008
  "Sendung nachträglich ändern)."
1009
 
1010
  # @ woocommerce-germanized
1011
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:408
1012
  msgctxt "dhl"
1013
  msgid "Default Duty"
1014
  msgstr "Standard Zoll"
1015
 
1016
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:412
1017
  msgctxt "dhl"
1018
  msgid "Please select a default duty type."
1019
  msgstr "Bitte wählen Sie eine Standard-Zollabrechnung aus."
1020
 
1021
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:419
1022
  msgctxt "dhl"
1023
  msgid "Codeable"
1024
  msgstr "Leitcodierbar"
1025
 
1026
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:420
1027
  msgctxt "dhl"
1028
  msgid "Generate label only if address can be automatically retrieved DHL."
1029
  msgstr "Erzeuge Labels nur dann, wenn die Adresse von DHL erkannt wird."
1030
 
1031
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:424
1032
  msgctxt "dhl"
1033
  msgid ""
1034
  "Choose this option if you want to make sure that by default labels are only "
@@ -1039,12 +1139,12 @@ msgstr ""
1039
  "ist."
1040
 
1041
  # @ woocommerce-germanized
1042
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:428
1043
  msgctxt "dhl"
1044
  msgid "Default weight (kg)"
1045
  msgstr "Standardgewicht (kg)"
1046
 
1047
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:430
1048
  msgctxt "dhl"
1049
  msgid ""
1050
  "Choose a default shipment weight to be used for labels if no weight has been "
@@ -1053,12 +1153,12 @@ msgstr ""
1053
  "Wählen Sie ein Standard Sendungsgewicht aus das für Labels verwendet wird, "
1054
  "für die das Gewicht nicht automatisch bestimmt werden kann."
1055
 
1056
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:439
1057
  msgctxt "dhl"
1058
  msgid "Minimum weight (kg)"
1059
  msgstr "Mindestgewicht (kg)"
1060
 
1061
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:441
1062
  msgctxt "dhl"
1063
  msgid ""
1064
  "Choose a minimum weight to be used for labels e.g. to prevent low shipment "
@@ -1068,17 +1168,17 @@ msgstr ""
1068
  "wegen eines zu geringen Gewichts Fehler zurückgibt."
1069
 
1070
  # @ woocommerce-germanized
1071
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:453
1072
  msgctxt "dhl"
1073
  msgid "Force email"
1074
  msgstr "E-Mail übertragen"
1075
 
1076
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:454
1077
  msgctxt "dhl"
1078
  msgid "Force transferring customer email to DHL."
1079
  msgstr "E-Mail-Adresse des Kunden immer an DHL übertragen."
1080
 
1081
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:454
1082
  msgctxt "dhl"
1083
  msgid ""
1084
  "By default the customer email address is only transferred in case explicit "
@@ -1095,12 +1195,12 @@ msgstr ""
1095
  "bevor Sie diese Option aktivieren."
1096
 
1097
  # @ woocommerce-germanized
1098
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:460
1099
  msgctxt "dhl"
1100
  msgid "Street number"
1101
  msgstr "Hausnummer"
1102
 
1103
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:461
1104
  msgctxt "dhl"
1105
  msgid ""
1106
  "Force existence of a street number within the first address field during "
@@ -1109,7 +1209,7 @@ msgstr ""
1109
  "Hausnummer im ersten Adressfeld verpflichtend abfragen, falls es sich um ein "
1110
  "EU-Land handelt."
1111
 
1112
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:462
1113
  msgctxt "dhl"
1114
  msgid ""
1115
  "Enabling this option will force a street number to be provided during "
@@ -1120,7 +1220,7 @@ msgstr ""
1120
  "Adressfeld in der Kasse abgefragt wird. Damit verhindern Sie fehlende oder "
1121
  "falsche Datensätze."
1122
 
1123
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:474
1124
  msgctxt "dhl"
1125
  msgid ""
1126
  "Additionally create inlay return labels for shipments that support returns."
@@ -1128,82 +1228,70 @@ msgstr ""
1128
  "Erzeuge zusätzlich Beilage-Retourenlabels für Sendungen die Retouren "
1129
  "unterstützen."
1130
 
1131
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:493
1132
  msgctxt "dhl"
1133
  msgid "Enable delivery to Packstation."
1134
  msgstr "Aktiviere den Versand an Packstationen."
1135
 
1136
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:494
1137
  msgctxt "dhl"
1138
  msgid "Let customers choose a Packstation as delivery address."
1139
  msgstr "Kunden eine Packstation als Lieferadresse auswählen lassen."
1140
 
1141
  # @ woocommerce-germanized
1142
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:501
1143
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder.php:50
1144
  msgctxt "dhl"
1145
  msgid "Postoffice"
1146
  msgstr "Postfiliale"
1147
 
1148
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:502
1149
  msgctxt "dhl"
1150
  msgid "Enable delivery to Post Offices."
1151
  msgstr "Aktiviere den Versand an Postfilialen."
1152
 
1153
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:503
1154
  msgctxt "dhl"
1155
  msgid "Let customers choose a Post Office as delivery address."
1156
  msgstr "Kunden eine Postfiliale als Lieferadresse auswählen lassen."
1157
 
1158
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:510
1159
  msgctxt "dhl"
1160
  msgid "Parcel Shop"
1161
  msgstr "Paketshop"
1162
 
1163
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:511
1164
  msgctxt "dhl"
1165
  msgid "Enable delivery to Parcel Shops."
1166
  msgstr "Lieferung an Paketshops aktivieren."
1167
 
1168
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:512
1169
  msgctxt "dhl"
1170
  msgid "Let customers choose a Parcel Shop as delivery address."
1171
  msgstr "Kunden einen Paketshop als Lieferadresse auswählen lassen."
1172
 
1173
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:530
1174
- msgctxt "dhl"
1175
- msgid "Visual minimum age"
1176
- msgstr "Alterssichtprüfung"
1177
-
1178
  #: woocommerce-germanized-dhl/src/Admin/Settings.php:535
1179
  msgctxt "dhl"
1180
- msgid "Choose this option if you want to let DHL check your customer's age."
1181
- msgstr ""
1182
- "Wählen Sie diese Option aus, wenn Sie das Alter durch DHL prüfen lassen "
1183
- "möchten."
1184
-
1185
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:539
1186
- msgctxt "dhl"
1187
  msgid "Enable the GoGreen Service by default."
1188
  msgstr "Buche den GoGreen Service hinzu."
1189
 
1190
  # @ woocommerce-germanized
1191
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:545
1192
  msgctxt "dhl"
1193
  msgid "Additional Insurance"
1194
  msgstr "Transportversicherung"
1195
 
1196
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:546
1197
  msgctxt "dhl"
1198
  msgid "Add an additional insurance to labels."
1199
  msgstr "Füge eine Transportversicherung zur Sendung hinzu."
1200
 
1201
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:552
1202
  msgctxt "dhl"
1203
  msgid "Retail Outlet Routing"
1204
  msgstr "Filialrouting"
1205
 
1206
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:553
1207
  msgctxt "dhl"
1208
  msgid ""
1209
  "Send undeliverable items to nearest retail outlet instead of immediate "
@@ -1212,46 +1300,58 @@ msgstr ""
1212
  "Sende unzustellbare Sendungen in die nächstgelegene Filiale zur Abholung "
1213
  "anstelle diese direkt zurückzusenden."
1214
 
1215
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:559
1216
  msgctxt "dhl"
1217
  msgid "No Neighbor"
1218
  msgstr "Keine Nachbarschaftszustellung"
1219
 
1220
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:560
1221
  msgctxt "dhl"
1222
  msgid "Do not deliver to neighbors."
1223
  msgstr "Schließe eine Ersatzzustellung beim Nachbarn aus."
1224
 
1225
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:567
1226
  msgctxt "dhl"
1227
  msgid "Do only delivery to named person."
1228
  msgstr ""
1229
  "Lasse Pakete nur an den Empfänger persönlich oder an eine bevollmächtigte "
1230
  "Person übergeben."
1231
 
1232
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:573
1233
  msgctxt "dhl"
1234
  msgid "Bulky Goods"
1235
  msgstr "Sperrgut"
1236
 
1237
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:574
1238
  msgctxt "dhl"
1239
  msgid "Deliver as bulky goods."
1240
  msgstr "Sende Pakete als Sperrgut."
1241
 
1242
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:580
1243
  msgctxt "dhl"
1244
- msgid "Age Verification"
1245
- msgstr "Alterssichtprüfung"
1246
 
1247
  #: woocommerce-germanized-dhl/src/Admin/Settings.php:581
1248
  msgctxt "dhl"
1249
- msgid "Verify ages if shipment contains applicable items."
 
 
 
 
 
 
 
 
 
 
 
 
1250
  msgstr ""
1251
  "Aktiviere die Alterssichtprüfung, falls die Sendung zu prüfende Positionen "
1252
  "beinhaltet."
1253
 
1254
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:581
1255
  #, php-format
1256
  msgctxt "dhl"
1257
  msgid ""
@@ -1264,36 +1364,80 @@ msgstr ""
1264
  "Alterssichtprüfung automatisch aktiviert, falls eine Sendung zu prüfenden "
1265
  "Produkte beinhaltet."
1266
 
1267
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:581
 
1268
  msgctxt "dhl"
1269
  msgid "age verification checkbox"
1270
  msgstr "Checkbox zur Altersprüfung"
1271
 
1272
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:588
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1273
  msgctxt "dhl"
1274
  msgid "Premium delivery for international shipments."
1275
  msgstr "Premium Lieferung für internationale Sendungen."
1276
 
1277
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:607
1278
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1160
1279
  msgctxt "dhl"
1280
  msgid "Labels"
1281
  msgstr "Labels"
1282
 
1283
  # @ woocommerce-germanized
1284
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:608
 
1285
  msgctxt "dhl"
1286
  msgid "Automatically create labels for shipments."
1287
  msgstr "Automatisch Labels zu Sendungen erstellen."
1288
 
1289
  # @ woocommerce-germanized
1290
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:615
1291
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:642
 
1292
  msgctxt "dhl"
1293
  msgid "Status"
1294
  msgstr "Status"
1295
 
1296
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:619
 
1297
  msgctxt "dhl"
1298
  msgid "Choose a shipment status which should trigger generation of a label."
1299
  msgstr ""
@@ -1301,29 +1445,31 @@ msgstr ""
1301
  "soll."
1302
 
1303
  # @ woocommerce-germanized
1304
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:626
 
1305
  msgctxt "dhl"
1306
  msgid "Shipment Status"
1307
  msgstr "Sendungsstatus"
1308
 
1309
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:627
 
1310
  msgctxt "dhl"
1311
  msgid "Mark shipment as shipped after label has been created successfully."
1312
  msgstr ""
1313
  "Sendung als versandt markieren, sobald ein Label erfolgreich erstellt wurde."
1314
 
1315
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:634
1316
  msgctxt "dhl"
1317
  msgid "Returns"
1318
  msgstr "Retouren"
1319
 
1320
  # @ woocommerce-germanized
1321
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:635
1322
  msgctxt "dhl"
1323
  msgid "Automatically create labels for returns."
1324
  msgstr "Automatisch Retourenlabels zu Retourensendungen erstellen."
1325
 
1326
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:646
1327
  msgctxt "dhl"
1328
  msgid ""
1329
  "Choose a shipment status which should trigger generation of a return label."
@@ -1331,7 +1477,7 @@ msgstr ""
1331
  "Wählen Sie einen Sendungsstatus aus, der die Erzeugung eines Retourenlabels "
1332
  "auslösen soll."
1333
 
1334
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:692
1335
  #, php-format
1336
  msgctxt "dhl"
1337
  msgid ""
@@ -1343,12 +1489,12 @@ msgstr ""
1343
  "werden."
1344
 
1345
  # @ woocommerce-germanized
1346
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:692
1347
  msgctxt "dhl"
1348
  msgid "shipping method"
1349
  msgstr "Versandmethode"
1350
 
1351
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:702
1352
  #, php-format
1353
  msgctxt "dhl"
1354
  msgid ""
@@ -1359,18 +1505,18 @@ msgstr ""
1359
  "API an. Stellen Sie sicher, dass Ihr %s DHL Retoure Online enthält."
1360
 
1361
  # @ woocommerce-germanized
1362
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:702
1363
  msgctxt "dhl"
1364
  msgid "contract"
1365
  msgstr "Vertrag"
1366
 
1367
  # @ woocommerce-germanized
1368
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:714
1369
  msgctxt "dhl"
1370
  msgid "Default Services"
1371
  msgstr "Standard-Services"
1372
 
1373
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:714
1374
  #, php-format
1375
  msgctxt "dhl"
1376
  msgid ""
@@ -1380,12 +1526,12 @@ msgstr ""
1380
  "Passen Sie hier an, welche der Services als Standard für Ihre Labels gebucht "
1381
  "werden sollen. Finden Sie mehr über diese %s heraus."
1382
 
1383
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:714
1384
  msgctxt "dhl"
1385
  msgid "nationwide services"
1386
  msgstr "nationalen Services"
1387
 
1388
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:726
1389
  msgctxt "dhl"
1390
  msgid ""
1391
  "Choose whether and under which conditions labels for your shipments shall be "
@@ -1395,38 +1541,38 @@ msgstr ""
1395
  "automatisch erzeugt werden sollen."
1396
 
1397
  # @ woocommerce-germanized
1398
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:737
1399
  msgctxt "dhl"
1400
  msgid "Shipper Address"
1401
  msgstr "Absenderadresse"
1402
 
1403
  # @ woocommerce-germanized
1404
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:761
1405
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:830
1406
  msgctxt "dhl"
1407
  msgid "Street Number"
1408
  msgstr "Hausnummer"
1409
 
1410
  # @ woocommerce-germanized
1411
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:782
1412
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:851
1413
  msgctxt "dhl"
1414
  msgid "Country"
1415
  msgstr "Land"
1416
 
1417
  # @ woocommerce-germanized
1418
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:806
1419
  msgctxt "dhl"
1420
  msgid "Inlay Return Address"
1421
  msgstr "Beilageretouren Adresse"
1422
 
1423
  # @ woocommerce-germanized
1424
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:875
1425
  msgctxt "dhl"
1426
  msgid "Bank Account"
1427
  msgstr "Bankkonto"
1428
 
1429
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:875
1430
  msgctxt "dhl"
1431
  msgid "Enter your bank details needed for services that use COD."
1432
  msgstr ""
@@ -1434,36 +1580,36 @@ msgstr ""
1434
  "verwendet werden sollen."
1435
 
1436
  # @ woocommerce-germanized
1437
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:878
1438
  msgctxt "dhl"
1439
  msgid "Holder"
1440
  msgstr "Kontoinhaber"
1441
 
1442
  # @ woocommerce-germanized
1443
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:885
1444
  msgctxt "dhl"
1445
  msgid "Bank Name"
1446
  msgstr "Name der Bank"
1447
 
1448
  # @ woocommerce-germanized
1449
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:892
1450
  msgctxt "dhl"
1451
  msgid "IBAN"
1452
  msgstr "IBAN"
1453
 
1454
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:899
1455
  msgctxt "dhl"
1456
  msgid "BIC"
1457
  msgstr "BIC"
1458
 
1459
  # @ woocommerce-germanized
1460
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:906
1461
  msgctxt "dhl"
1462
  msgid "Payment Reference"
1463
  msgstr "Zahlungsreferenz"
1464
 
1465
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:910
1466
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:919
1467
  #, php-format
1468
  msgctxt "dhl"
1469
  msgid ""
@@ -1474,18 +1620,18 @@ msgstr ""
1474
  "hinzufügen: %s. Der Text ist auf 35 Zeichen begrenzt."
1475
 
1476
  # @ woocommerce-germanized
1477
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:915
1478
  msgctxt "dhl"
1479
  msgid "Payment Reference 2"
1480
  msgstr "Zahlungsreferenz 2"
1481
 
1482
  # @ woocommerce-germanized
1483
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:933
1484
  msgctxt "dhl"
1485
  msgid "Enable creating labels for return shipments."
1486
  msgstr "Automatisch Retourenlabels zu Retourensendungen erstellen."
1487
 
1488
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:933
1489
  msgctxt "dhl"
1490
  msgid ""
1491
  "By enabling this option you might generate retoure labels for return "
@@ -1494,12 +1640,12 @@ msgstr ""
1494
  "Mit der Aktivierung dieser Option können Sie Retourenlabels zu "
1495
  "Retourensendungen erstellen und diese per E-Mail an den Kunden weiterleiten."
1496
 
1497
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:954
1498
  msgctxt "dhl"
1499
  msgid "Enable preferred day delivery."
1500
  msgstr "Aktiviere die Lieferung am Wunschtag."
1501
 
1502
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:954
1503
  msgctxt "dhl"
1504
  msgid ""
1505
  "Enabling this option will display options for the user to select their "
@@ -1508,7 +1654,7 @@ msgstr ""
1508
  "Diese Option aktiviert die Auswahl eines Wunschtags durch den Kunden in der "
1509
  "Kasse."
1510
 
1511
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:963
1512
  msgctxt "dhl"
1513
  msgid ""
1514
  "Insert gross value as surcharge for preferred day delivery. Insert 0 to "
@@ -1518,12 +1664,12 @@ msgstr ""
1518
  "Setzen Sie den Wert auf 0 um den Service kostenlos anzubieten."
1519
 
1520
  # @ woocommerce-germanized
1521
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:974
1522
  msgctxt "dhl"
1523
  msgid "Enable preferred location delivery."
1524
  msgstr "Lieferung an einen Wunschort aktivieren."
1525
 
1526
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:974
1527
  msgctxt "dhl"
1528
  msgid ""
1529
  "Enabling this option will display options for the user to select their "
@@ -1532,12 +1678,12 @@ msgstr ""
1532
  "Diese Option aktiviert die Auswahl eines Wunschorts durch den Kunden in der "
1533
  "Kasse ."
1534
 
1535
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:982
1536
  msgctxt "dhl"
1537
  msgid "Enable preferred neighbor delivery."
1538
  msgstr "Aktiviere die Lieferung an einen Wunschnachbarn."
1539
 
1540
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:982
1541
  msgctxt "dhl"
1542
  msgid ""
1543
  "Enabling this option will display options for the user to deliver to their "
@@ -1546,12 +1692,12 @@ msgstr ""
1546
  "Diese Option aktiviert die Auswahl eines Wunschnachbarn durch den Kunden in "
1547
  "der Kasse."
1548
 
1549
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1008
1550
  msgctxt "dhl"
1551
  msgid "Cut-off time"
1552
  msgstr "Cut-off-Zeit"
1553
 
1554
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1011
1555
  msgctxt "dhl"
1556
  msgid ""
1557
  "The cut-off time is the latest possible order time up to which the minimum "
@@ -1564,12 +1710,12 @@ msgstr ""
1564
  "Nach Überschreitung dieses Zeitpunktes, wird der früheste verfügbare "
1565
  "Wunschtag in der Kasse um einen Tag erhöht (Tag der Bestellung + 3 Werktage)."
1566
 
1567
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1017
1568
  msgctxt "dhl"
1569
  msgid "Preparation days"
1570
  msgstr "Bearbeitungstage"
1571
 
1572
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1020
1573
  msgctxt "dhl"
1574
  msgid ""
1575
  "If you need more time to prepare your shipments you might want to add a "
@@ -1580,71 +1726,71 @@ msgstr ""
1580
  "hier eine statische Anzahl an Tagen hinterlegen, die zum frühesten "
1581
  "auswählbaren Wunschtag hinzugefügt werden."
1582
 
1583
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1027
1584
  msgctxt "dhl"
1585
  msgid "Exclude days of transfer"
1586
  msgstr "Übergabetage ausschließen"
1587
 
1588
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1028
1589
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:31
1590
  msgctxt "dhl"
1591
  msgid "Monday"
1592
  msgstr "Montag"
1593
 
1594
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1029
1595
  msgctxt "dhl"
1596
  msgid "Exclude days from transferring shipments to DHL."
1597
  msgstr "Schließen Sie bestimmte Wochentage für die Übergabe an DHL aus."
1598
 
1599
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1038
1600
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:32
1601
  msgctxt "dhl"
1602
  msgid "Tuesday"
1603
  msgstr "Dienstag"
1604
 
1605
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1047
1606
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:33
1607
  msgctxt "dhl"
1608
  msgid "Wednesday"
1609
  msgstr "Mittwoch"
1610
 
1611
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1056
1612
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:34
1613
  msgctxt "dhl"
1614
  msgid "Thursday"
1615
  msgstr "Donnerstag"
1616
 
1617
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1065
1618
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:35
1619
  msgctxt "dhl"
1620
  msgid "Friday"
1621
  msgstr "Freitag"
1622
 
1623
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1074
1624
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:36
1625
  msgctxt "dhl"
1626
  msgid "Saturday"
1627
  msgstr "Samstag"
1628
 
1629
  # @ woocommerce-germanized
1630
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1083
1631
  msgctxt "dhl"
1632
  msgid "Exclude gateways"
1633
  msgstr "Zahlungsarten ausschließen"
1634
 
1635
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1085
1636
  msgctxt "dhl"
1637
  msgid "Select payment gateways to be excluded from showing preferred services."
1638
  msgstr ""
1639
  "Wählen Sie Zahlungsarten aus, für die die Wunschpaket-Services nicht zur "
1640
  "Verfügung stehen sollen."
1641
 
1642
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1110
1643
  msgctxt "dhl"
1644
  msgid "Let customers find a DHL location on a map."
1645
  msgstr "Lasse Kunden einen DHL Standort auf der Karte auswählen."
1646
 
1647
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1110
1648
  msgctxt "dhl"
1649
  msgid ""
1650
  "Enable this option to let your customers choose a pickup option from a map "
@@ -1655,12 +1801,12 @@ msgstr ""
1655
  "anhand einer Karten in der Kasse zu ermöglichen. Wenn diese Option "
1656
  "deaktiviert ist, wird stattdessen auf die DHL Website verwiesen."
1657
 
1658
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1117
1659
  msgctxt "dhl"
1660
  msgid "Google Maps Key"
1661
  msgstr "Google Maps Schlüssel"
1662
 
1663
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1121
1664
  #, php-format
1665
  msgctxt "dhl"
1666
  msgid ""
@@ -1670,33 +1816,171 @@ msgstr ""
1670
  "Um eine Karte integrieren zu können, benötigen Siee du einen gültigen API-"
1671
  "Schlüssel für Google Maps. Sie können %s."
1672
 
1673
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1121
1674
  msgctxt "dhl"
1675
  msgid "retrieve a new one"
1676
  msgstr "hier einen neuen erstellen"
1677
 
1678
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1126
1679
  msgctxt "dhl"
1680
  msgid "Limit results"
1681
  msgstr "Suchergebnisse begrenzen"
1682
 
1683
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1130
1684
  msgctxt "dhl"
1685
  msgid "Limit the number of DHL locations shown on the map"
1686
  msgstr "Begrenzt die Anzahl der angezeigten DHL Standorte auf der Karte"
1687
 
1688
  # @ woocommerce-germanized
1689
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1159
1690
  msgctxt "dhl"
1691
- msgid "General"
1692
- msgstr "Allgemein"
1693
 
1694
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1161
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1695
  msgctxt "dhl"
1696
  msgid "Preferred Services"
1697
  msgstr "Wunschpaket"
1698
 
1699
- #: woocommerce-germanized-dhl/src/Admin/Settings.php:1162
1700
  msgctxt "dhl"
1701
  msgid "Parcel Pickup"
1702
  msgstr "Standorte"
@@ -1718,6 +2002,198 @@ msgctxt "dhl location name"
1718
  msgid "%s %s"
1719
  msgstr "%s %s"
1720
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1721
  #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:99
1722
  msgctxt "dhl"
1723
  msgid ""
@@ -1726,13 +2202,24 @@ msgstr ""
1726
  "Ihre DHL API Zugangsdaten scheinen fehlerhaft zu sein. Bitte prüfen Sie Ihre "
1727
  "DHL Einstellungen."
1728
 
1729
- #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:109
 
 
 
 
 
 
 
 
 
 
 
1730
  #, php-format
1731
  msgctxt "dhl"
1732
  msgid "There was an error contacting the DHL API: %s."
1733
  msgstr "Beim Aufruf der DHL API gab es einen Fehler: %s."
1734
 
1735
- #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:112
1736
  msgctxt "dhl"
1737
  msgid ""
1738
  "An error ocurred while contacting the DHL API. Please consider enabling the "
@@ -1741,7 +2228,7 @@ msgstr ""
1741
  "Beim Aufruf der DHL API ist ein Fehler aufgetreten. Bitte erwägen Sie den "
1742
  "Wechsel in den Sandbox-Modus."
1743
 
1744
- #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:134
1745
  msgctxt "dhl"
1746
  msgid ""
1747
  "There was an error generating the label. Please try again or consider "
@@ -1750,32 +2237,25 @@ msgstr ""
1750
  "Beim Erzeugen des Labels gab es einen Fehler. Bitte versuchen Sie es erneut "
1751
  "oder erwägen Sie den Wechsel in den Sandbox-Modus."
1752
 
1753
- #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:237
1754
- #: woocommerce-germanized-dhl/src/Api/ReturnRest.php:150
1755
  msgctxt "dhl"
1756
  msgid "Error while creating and uploading the label"
1757
  msgstr "Fehler beim Erstellen und hochladen des Labels"
1758
 
1759
- #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:323
1760
  #, php-format
1761
  msgctxt "dhl"
1762
  msgid "Could not delete label - %s"
1763
  msgstr "Das Label konnte nicht gelöscht werden - %s"
1764
 
1765
- #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:354
1766
  msgctxt "dhl"
1767
  msgid "Could not create account number - no product number."
1768
  msgstr ""
1769
  "Die Abrechnungsnummer konnte nicht erzeugt werden. Die Teilnahmenummer fehlt."
1770
 
1771
- #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:375
1772
- #: woocommerce-germanized-dhl/src/Api/ReturnRest.php:34
1773
- #, php-format
1774
- msgctxt "dhl"
1775
- msgid "Could not fetch shipment %d."
1776
- msgstr "Sendung %d konnte nicht gefunden werden."
1777
-
1778
- #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:644
1779
  #, php-format
1780
  msgctxt "dhl"
1781
  msgid "Only %s shipment items can be processed, your shipment has %s items."
@@ -1784,60 +2264,67 @@ msgstr ""
1784
  "Sendung beinhaltet %s Positionen."
1785
 
1786
  # @ woocommerce-germanized
1787
- #: woocommerce-germanized-dhl/src/Api/Paket.php:56
 
 
 
 
 
 
 
1788
  msgctxt "dhl"
1789
  msgid "Label API not available"
1790
  msgstr "Label API ist nicht erreichbar"
1791
 
1792
- #: woocommerce-germanized-dhl/src/Api/Paket.php:72
1793
  msgctxt "dhl"
1794
  msgid "Parcel Finder API not available"
1795
  msgstr "API der Standortsuche ist nicht verfügbar"
1796
 
1797
  # @ woocommerce-germanized
1798
- #: woocommerce-germanized-dhl/src/Api/Paket.php:88
1799
  msgctxt "dhl"
1800
  msgid "Return API not available"
1801
  msgstr "Retoure API ist nicht erreichbar"
1802
 
1803
  # @ woocommerce-germanized
1804
- #: woocommerce-germanized-dhl/src/Api/Paket.php:104
1805
  msgctxt "dhl"
1806
  msgid "Parcel API not available"
1807
  msgstr "Paket API ist nicht erreichbar"
1808
 
1809
- #: woocommerce-germanized-dhl/src/Api/Paket.php:250
1810
  msgctxt "dhl"
1811
  msgid "Mon"
1812
  msgstr "Mo"
1813
 
1814
- #: woocommerce-germanized-dhl/src/Api/Paket.php:251
1815
  msgctxt "dhl"
1816
  msgid "Tue"
1817
  msgstr "Di"
1818
 
1819
- #: woocommerce-germanized-dhl/src/Api/Paket.php:252
1820
  msgctxt "dhl"
1821
  msgid "Wed"
1822
  msgstr "Mi"
1823
 
1824
- #: woocommerce-germanized-dhl/src/Api/Paket.php:253
1825
  msgctxt "dhl"
1826
  msgid "Thu"
1827
  msgstr "Do"
1828
 
1829
- #: woocommerce-germanized-dhl/src/Api/Paket.php:254
1830
  msgctxt "dhl"
1831
  msgid "Fri"
1832
  msgstr "Fr"
1833
 
1834
  # @ woocommerce-germanized
1835
- #: woocommerce-germanized-dhl/src/Api/Paket.php:255
1836
  msgctxt "dhl"
1837
  msgid "Sat"
1838
  msgstr "Sa"
1839
 
1840
- #: woocommerce-germanized-dhl/src/Api/Paket.php:256
1841
  msgctxt "dhl"
1842
  msgid "Sun"
1843
  msgstr "So"
@@ -1858,44 +2345,44 @@ msgctxt "dhl"
1858
  msgid "Please provide the shipment start date."
1859
  msgstr "Bitte geben Sie das Startdatum der Sendung an."
1860
 
1861
- #: woocommerce-germanized-dhl/src/Api/Rest.php:91
1862
  msgctxt "dhl"
1863
  msgid "400 - "
1864
  msgstr "400 - "
1865
 
1866
- #: woocommerce-germanized-dhl/src/Api/Rest.php:94
1867
  msgctxt "dhl"
1868
  msgid ""
1869
  "401 - Unauthorized Access - Invalid token or Authentication Header parameter"
1870
  msgstr ""
1871
  "401 - Unauthorized Access - Invalid token or Authentication Header parameter"
1872
 
1873
- #: woocommerce-germanized-dhl/src/Api/Rest.php:97
1874
  msgctxt "dhl"
1875
  msgid "408 - Request Timeout"
1876
  msgstr "408 - Request Timeout"
1877
 
1878
- #: woocommerce-germanized-dhl/src/Api/Rest.php:100
1879
  msgctxt "dhl"
1880
  msgid "429 - Too many requests in given amount of time"
1881
  msgstr "429 - Too many requests in given amount of time"
1882
 
1883
- #: woocommerce-germanized-dhl/src/Api/Rest.php:103
1884
  msgctxt "dhl"
1885
  msgid "503 - Service Unavailable"
1886
  msgstr "503 - Service Unavailable"
1887
 
1888
- #: woocommerce-germanized-dhl/src/Api/Rest.php:107
1889
  msgctxt "dhl"
1890
  msgid "GET error or timeout occured. Please try again later."
1891
  msgstr "GET Fehler oder Zeitüberschreitung. Bitte später erneut versuchen."
1892
 
1893
- #: woocommerce-germanized-dhl/src/Api/Rest.php:152
1894
  msgctxt "dhl"
1895
  msgid "POST error or timeout occured. Please try again later."
1896
  msgstr "POST Fehler oder Zeitüberschreitung. Bitte später erneut versuchen."
1897
 
1898
- #: woocommerce-germanized-dhl/src/DataStores/Label.php:307
1899
  msgctxt "dhl"
1900
  msgid "Invalid label."
1901
  msgstr "Ungültiges Label."
@@ -1907,7 +2394,7 @@ msgctxt "dhl time-span"
1907
  msgid "%s-%s"
1908
  msgstr "%s-%s"
1909
 
1910
- #: woocommerce-germanized-dhl/src/Package.php:252
1911
  msgctxt "dhl"
1912
  msgid ""
1913
  "Please check the street field and make sure to provide a valid street number."
@@ -1916,31 +2403,31 @@ msgstr ""
1916
  "angegeben wurde."
1917
 
1918
  # @ woocommerce-germanized
1919
- #: woocommerce-germanized-dhl/src/Package.php:832
1920
  msgctxt "dhl"
1921
  msgid "Germany"
1922
  msgstr "Deutschland"
1923
 
1924
  # @ woocommerce-germanized
1925
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:89
1926
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:848
1927
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:877
1928
  msgctxt "dhl"
1929
  msgid "Address Type"
1930
  msgstr "Adresstyp"
1931
 
1932
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:92
1933
  msgctxt "dhl"
1934
  msgid "Select whether delivery to DHL locations should be enabled."
1935
  msgstr ""
1936
  "Wählen Sie aus, ob die Lieferung an DHL Standorte aktiviert werden soll."
1937
 
1938
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:97
1939
  msgctxt "dhl"
1940
  msgid "Postnumber"
1941
  msgstr "Postnummer"
1942
 
1943
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:99
1944
  msgctxt "dhl"
1945
  msgid ""
1946
  "In case delivery to packstation is selected please fill in the corresponding "
@@ -1949,31 +2436,31 @@ msgstr ""
1949
  "Insofern die Lieferung an eine Packstation erfolgt, bitte die Postnummer "
1950
  "eintragen."
1951
 
1952
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:185
1953
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:564
1954
  msgctxt "dhl"
1955
  msgid "Invalid address type."
1956
  msgstr "Ungültiger Adresstyp."
1957
 
1958
  # @ woocommerce-germanized
1959
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:636
1960
  msgctxt "dhl"
1961
  msgid "Sorry, but delivery to packstation is not available."
1962
  msgstr ""
1963
  "Entschuldigung, die Lieferung an eine Packstation steht nicht zur Verfügung."
1964
 
1965
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:641
1966
  msgctxt "dhl"
1967
  msgid "Sorry, but delivery to parcel shops is not available."
1968
  msgstr ""
1969
  "Entschuldigung, die Lieferung an einen Paketshop steht nicht zur Verfügung."
1970
 
1971
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:645
1972
  msgctxt "dhl"
1973
  msgid "Sorry, but delivery to post offices is not available."
1974
  msgstr "Entschuldigung, die Lieferung an Postfilialen ist nicht verfügbar."
1975
 
1976
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:652
1977
  #, php-format
1978
  msgctxt "dhl"
1979
  msgid "Please indicate shipment to %s by one of the following values: %s."
@@ -1981,7 +2468,7 @@ msgstr ""
1981
  "Bitte identifizieren Sie die Lieferung an %s durch die Eingabe einer der "
1982
  "folgenden Werte: %s."
1983
 
1984
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:660
1985
  msgctxt "dhl"
1986
  msgid ""
1987
  "Your DHL customer number (Post number) is not valid. Please check your "
@@ -1990,7 +2477,7 @@ msgstr ""
1990
  "Ihre DHL Kundennummer (Postnummer) ist nicht gültig. Bitte überprüfen Sie "
1991
  "Ihre Eingabe."
1992
 
1993
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:663
1994
  msgctxt "dhl"
1995
  msgid ""
1996
  "Your DHL customer number (Post number) is needed to ship to a packstation."
@@ -1998,64 +2485,64 @@ msgstr ""
1998
  "Ihre DHL Kundennummer (Postnummer) wird für den Versand an eine Packstation "
1999
  "benötigt."
2000
 
2001
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:712
2002
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:839
2003
  msgctxt "dhl"
2004
  msgid "Branch"
2005
  msgstr "Filiale"
2006
 
2007
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:713
2008
  msgctxt "dhl"
2009
  msgid "Postnumber "
2010
  msgstr "Postnummer "
2011
 
2012
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:814
2013
  #, php-format
2014
  msgctxt "dhl"
2015
  msgid "e.g. %s 456"
2016
  msgstr "z.B. %s 456"
2017
 
2018
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:839
2019
  msgctxt "dhl"
2020
  msgid "Branches"
2021
  msgstr "Filialen"
2022
 
2023
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:855
2024
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:887
2025
  msgctxt "dhl"
2026
  msgid "DHL customer number (Post number)"
2027
  msgstr "DHL Kundennummer (Postnummer)"
2028
 
2029
  # @ woocommerce-germanized
2030
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:865
2031
  msgctxt "dhl"
2032
  msgid "Regular Address"
2033
  msgstr "Normale Adresse"
2034
 
2035
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:891
2036
  msgctxt "dhl"
2037
  msgid "Not yet a DHL customer?"
2038
  msgstr "Noch kein DHL Kunde?"
2039
 
2040
  # @ woocommerce-germanized
2041
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:891
2042
  msgctxt "dhl"
2043
  msgid "Register now"
2044
  msgstr "Jetzt registrieren"
2045
 
2046
  # @ woocommerce-germanized
2047
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:940
2048
  #, php-format
2049
  msgctxt "dhl"
2050
  msgid "Search %s"
2051
  msgstr "%s suchen"
2052
 
2053
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:1045
2054
  msgctxt "dhl"
2055
  msgid "No DHL locations found"
2056
  msgstr "Keine DHL Standorte gefunden"
2057
 
2058
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:1060
2059
  #, php-format
2060
  msgctxt "dhl"
2061
  msgid ""
@@ -2066,12 +2553,12 @@ msgstr ""
2066
  "einen %s oder %s."
2067
 
2068
  # @ woocommerce-germanized
2069
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:1060
2070
  msgctxt "dhl"
2071
  msgid "DHL location"
2072
  msgstr "DHL Standort"
2073
 
2074
- #: woocommerce-germanized-dhl/src/ParcelLocator.php:1060
2075
  msgctxt "dhl"
2076
  msgid "retry"
2077
  msgstr "Erneut versuchen"
@@ -2099,14 +2586,14 @@ msgctxt "dhl"
2099
  msgid "Please choose name and address of your preferred neighbor."
2100
  msgstr "Bitte wählen Sie einen Namen und die Adresse Ihres Wunschnachbars."
2101
 
2102
- #: woocommerce-germanized-dhl/src/ReturnLabel.php:125
2103
  #: woocommerce-germanized-dhl/src/SimpleLabel.php:86
2104
  #, php-format
2105
  msgctxt "dhl full name"
2106
  msgid "%1$s"
2107
  msgstr "%1$s"
2108
 
2109
- #: woocommerce-germanized-dhl/src/ShippingProviderDHL.php:42
2110
  msgctxt "dhl"
2111
  msgid ""
2112
  "Complete DHL integration supporting labels, preferred services and "
@@ -2115,6 +2602,16 @@ msgstr ""
2115
  "DHL Integration die das Erzeugen von Labels, Wunsch-Services und Lieferung "
2116
  "an Packstationen unterstützt."
2117
 
 
 
 
 
 
 
 
 
 
 
2118
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder-result.php:31
2119
  msgctxt "dhl"
2120
  msgid "Opening Times"
@@ -2286,25 +2783,32 @@ msgstr ""
2286
  "Ihre Installation des Germanized DHL Plugins ist unvollständig. Bitte führen "
2287
  "Sie %1$s im %2$s Verzeichnis aus."
2288
 
2289
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:30
2290
  #, php-format
2291
  msgctxt "shipments"
2292
- msgid "Weight (%s)"
2293
- msgstr "Gewicht (%s)"
2294
 
2295
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:35
2296
  #, php-format
2297
  msgctxt "shipments"
2298
  msgid "Dimensions (%s)"
2299
  msgstr "Abmessungen (%s)"
2300
 
2301
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:35
2302
  msgctxt "shipments"
2303
  msgid "LxWxH in decimal form."
2304
  msgstr "LxBxH in dezimaler Form."
2305
 
2306
  # @ woocommerce-germanized
2307
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:47
 
 
 
 
 
 
 
2308
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:1027
2309
  #: woocommerce-germanized-shipments/src/Admin/ReturnTable.php:24
2310
  #: woocommerce-germanized-shipments/src/Admin/Table.php:688
@@ -2313,52 +2817,52 @@ msgid "Status"
2313
  msgstr "Status"
2314
 
2315
  # @ woocommerce-germanized
2316
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:57
2317
  msgctxt "shipments"
2318
  msgid "Shipping method"
2319
  msgstr "Versandmethode"
2320
 
2321
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:67
2322
  msgctxt "shipments"
2323
  msgid "Shipping provider"
2324
  msgstr "Versanddienstleister"
2325
 
2326
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:78
2327
  msgctxt "shipments"
2328
  msgid "Tracking Number"
2329
  msgstr "Sendungsnummer"
2330
 
2331
  # @ woocommerce-germanized
2332
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:144
2333
  msgctxt "shipments"
2334
  msgid "Add item"
2335
  msgstr "Position hinzufügen"
2336
 
2337
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:148
2338
  msgctxt "shipments"
2339
  msgid "Automatically adjust items and quantities based on order item data."
2340
  msgstr "Bestimmt Positionen und Anzahlen automatisch anhand der Bestelldaten."
2341
 
2342
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:148
2343
  msgctxt "shipments"
2344
  msgid "Sync items"
2345
  msgstr "Positionen synchronisieren"
2346
 
2347
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:168
2348
  msgctxt "shipments"
2349
  msgid "Add Item"
2350
  msgstr "Position hinzufügen"
2351
 
2352
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:178
2353
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipments.php:45
2354
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:84
2355
  msgctxt "shipments"
2356
  msgid "Item"
2357
  msgstr "Position"
2358
 
2359
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:179
2360
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipments.php:46
2361
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:89
2362
  #: woocommerce-germanized-shipments/templates/emails/email-shipment-details.php:55
2363
  #: woocommerce-germanized-shipments/templates/myaccount/add-return-shipment.php:37
2364
  #: woocommerce-germanized-shipments/templates/shipment/shipment-details.php:60
@@ -2366,13 +2870,13 @@ msgctxt "shipments"
2366
  msgid "Quantity"
2367
  msgstr "Anzahl"
2368
 
2369
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:197
2370
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipments.php:55
2371
  msgctxt "shipments"
2372
  msgid "Add"
2373
  msgstr "Hinzufügen"
2374
 
2375
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:221
2376
  msgctxt "shipments"
2377
  msgid ""
2378
  "Send return instructions to your customer via email including return label "
@@ -2381,17 +2885,17 @@ msgstr ""
2381
  "Informationen zur Rücksendung inkl. Label, falls verfügbar an Kunden via E-"
2382
  "Mail senden."
2383
 
2384
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:221
2385
  msgctxt "shipments"
2386
  msgid "Resend notification"
2387
  msgstr "Benachrichtigung erneut versenden"
2388
 
2389
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:221
2390
  msgctxt "shipments"
2391
  msgid "Notify customer"
2392
  msgstr "Notify customer"
2393
 
2394
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:223
2395
  msgctxt "shipments"
2396
  msgid ""
2397
  "Confirm the return request to the customer. The customer receives an email "
@@ -2402,13 +2906,13 @@ msgstr ""
2402
  "enthält."
2403
 
2404
  # @ woocommerce-germanized
2405
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:223
2406
  #: woocommerce-germanized-shipments/src/Admin/ReturnTable.php:66
2407
  msgctxt "shipments"
2408
  msgid "Confirm return request"
2409
  msgstr "Rücksendeantrag bestätigen"
2410
 
2411
- #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:227
2412
  #, php-format
2413
  msgctxt "shipments"
2414
  msgid "Delete %s"
@@ -2438,9 +2942,9 @@ msgstr "Löschen"
2438
 
2439
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-list.php:22
2440
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:76
2441
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:71
2442
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:325
2443
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:446
2444
  #: woocommerce-germanized-shipments/src/Admin/Settings.php:80
2445
  #: woocommerce-germanized-shipments/src/Admin/Settings.php:177
2446
  #: woocommerce-germanized-shipments/templates/myaccount/order-shipments.php:36
@@ -2448,6 +2952,19 @@ msgctxt "shipments"
2448
  msgid "Returns"
2449
  msgstr "Retouren"
2450
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2451
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment.php:16
2452
  #, php-format
2453
  msgctxt "shipment admin title"
@@ -2457,10 +2974,10 @@ msgstr "%s #%s"
2457
  # @ woocommerce-germanized
2458
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipments.php:19
2459
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:69
2460
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:255
2461
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:324
2462
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:412
2463
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:479
2464
  #: woocommerce-germanized-shipments/templates/myaccount/order-shipments.php:20
2465
  msgctxt "shipments"
2466
  msgid "Shipments"
@@ -2491,14 +3008,15 @@ msgstr "Speichern"
2491
  #: woocommerce-germanized-shipments/includes/admin/views/html-settings-provider-list.php:11
2492
  #: woocommerce-germanized-shipments/src/Admin/ReturnTable.php:22
2493
  #: woocommerce-germanized-shipments/src/Admin/Table.php:686
2494
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:551
2495
  msgctxt "shipments"
2496
  msgid "Title"
2497
  msgstr "Titel"
2498
 
2499
  # @ woocommerce-germanized
2500
  #: woocommerce-germanized-shipments/includes/admin/views/html-settings-provider-list.php:12
2501
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:560
 
2502
  msgctxt "shipments"
2503
  msgid "Description"
2504
  msgstr "Beschreibung"
@@ -2554,7 +3072,7 @@ msgid "Download"
2554
  msgstr "Download"
2555
 
2556
  #: woocommerce-germanized-shipments/includes/admin/views/label/html-shipment-label.php:39
2557
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:537
2558
  msgctxt "shipments"
2559
  msgid "Create new label"
2560
  msgstr "Neues Label erstellen"
@@ -2775,6 +3293,16 @@ msgid "Enter recipients (comma separated) for this email. Defaults to %s."
2775
  msgstr ""
2776
  "Fügen Sie Empfänger (kommasepariert) für diese E-Mail ein. Standard: %s."
2777
 
 
 
 
 
 
 
 
 
 
 
2778
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:68
2779
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:1025
2780
  msgctxt "shipments"
@@ -2863,9 +3391,9 @@ msgstr "Fehler beim Erstellen der Sendungsinstanz"
2863
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:413
2864
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:417
2865
  #: woocommerce-germanized-shipments/src/ReturnShipment.php:420
2866
- #: woocommerce-germanized-shipments/src/ReturnShipment.php:480
2867
  #: woocommerce-germanized-shipments/src/SimpleShipment.php:118
2868
- #: woocommerce-germanized-shipments/src/SimpleShipment.php:202
2869
  msgctxt "shipments"
2870
  msgid "Invalid shipment order"
2871
  msgstr "Ungültige Bestellung zur Sendung"
@@ -2907,7 +3435,7 @@ msgstr "Sendungsverfolgung"
2907
 
2908
  # @ woocommerce-germanized
2909
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:1029
2910
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:94
2911
  #: woocommerce-germanized-shipments/src/Admin/ReturnTable.php:30
2912
  #: woocommerce-germanized-shipments/src/Admin/Table.php:694
2913
  msgctxt "shipments"
@@ -2922,7 +3450,7 @@ msgstr "Anzeigen"
2922
  # @ woocommerce-germanized
2923
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:1272
2924
  #: woocommerce-germanized-shipments/src/Admin/Table.php:865
2925
- #: woocommerce-germanized-shipments/src/Ajax.php:336
2926
  msgctxt "shipments"
2927
  msgid "Download label"
2928
  msgstr "Label downloaden"
@@ -2936,7 +3464,7 @@ msgid "My account"
2936
  msgstr "Mein Konto"
2937
 
2938
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipments-template-functions.php:115
2939
- #: woocommerce-germanized-shipments/src/DataStores/Shipment.php:351
2940
  msgctxt "shipments"
2941
  msgid "Invalid shipment."
2942
  msgstr "Ungültige Sendung."
@@ -2959,25 +3487,25 @@ msgid "View order"
2959
  msgstr "Bestellung ansehen"
2960
 
2961
  # @ woocommerce-germanized
2962
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:102
2963
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:176
2964
  #: woocommerce-germanized-shipments/templates/myaccount/add-return-shipment.php:36
2965
  msgctxt "shipments"
2966
  msgid "Reason"
2967
  msgstr "Rücksendegrund"
2968
 
2969
  # @ woocommerce-germanized
2970
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:168
2971
  msgctxt "shipments"
2972
  msgid "Return reasons"
2973
  msgstr "Rücksendegründe"
2974
 
2975
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:175
2976
  msgctxt "shipments"
2977
  msgid "Reason code"
2978
  msgstr "Rücksendegrund (Code)"
2979
 
2980
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:175
2981
  msgctxt "shipments"
2982
  msgid "The reason code is used to identify the reason."
2983
  msgstr ""
@@ -2985,56 +3513,132 @@ msgstr ""
2985
  "identifizieren zu können."
2986
 
2987
  # @ woocommerce-germanized
2988
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:176
2989
  msgctxt "shipments"
2990
  msgid "Choose a reason text."
2991
  msgstr "Beschreibung für den Grund."
2992
 
2993
  # @ woocommerce-germanized
2994
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:195
2995
  msgctxt "shipments"
2996
  msgid "+ Add reason"
2997
  msgstr "+ Grund hinzufügen"
2998
 
2999
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:195
3000
  msgctxt "shipments"
3001
  msgid "Remove selected reason(s)"
3002
  msgstr "Ausgewählte Gründe löschen"
3003
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3004
  # @ woocommerce-germanized
3005
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:309
3006
  msgctxt "shipments"
3007
  msgid "Create shipments"
3008
  msgstr "Sendungen erstellen"
3009
 
3010
  # @ woocommerce-germanized
3011
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:424
3012
  msgctxt "shipments"
3013
  msgid "Search shipments"
3014
  msgstr "Sendungen suchen"
3015
 
3016
  # @ woocommerce-germanized
3017
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:458
3018
  msgctxt "shipments"
3019
  msgid "Search returns"
3020
  msgstr "Retouren suchen"
3021
 
3022
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:531
3023
  msgctxt "shipments"
3024
  msgid "Do you really want to delete the shipment?"
3025
  msgstr "Möchten Sie die Sendung wirklich löschen?"
3026
 
3027
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:536
3028
  msgctxt "shipments"
3029
  msgid "Do you really want to delete the label?"
3030
  msgstr "Möchten Sie das Label wirklich löschen?"
3031
 
3032
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:538
3033
  msgctxt "shipments"
3034
  msgid "Please save the shipment before creating a new label"
3035
  msgstr "Bitte speichern Sie die Sendung bevor Sie ein neues Label erstellen"
3036
 
3037
- #: woocommerce-germanized-shipments/src/Admin/Admin.php:588
3038
  msgctxt "shipments"
3039
  msgid ""
3040
  "Do you really want to delete the shipping provider? Some of your existing "
@@ -3436,29 +4040,44 @@ msgctxt "shipments"
3436
  msgid "List shipments on customer account order screen."
3437
  msgstr "Liste Sendungen im Kundenkonto in den Bestelldetails auf."
3438
 
3439
- #: woocommerce-germanized-shipments/src/Admin/Settings.php:353
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3440
  msgctxt "shipments"
3441
  msgid "New provider"
3442
  msgstr "Neuer Dienstleister"
3443
 
3444
  # @ woocommerce-germanized
3445
- #: woocommerce-germanized-shipments/src/Admin/Settings.php:363
3446
  msgctxt "shipments"
3447
  msgid "Additional settings"
3448
  msgstr "Weiterführende Einstellungen"
3449
 
3450
- #: woocommerce-germanized-shipments/src/Admin/Settings.php:389
3451
  msgctxt "shipments"
3452
  msgid "Add provider"
3453
  msgstr "Dienstleister hinzufügen"
3454
 
3455
  # @ woocommerce-germanized
3456
- #: woocommerce-germanized-shipments/src/Admin/Settings.php:397
3457
  msgctxt "shipments"
3458
  msgid "General"
3459
  msgstr "Allgemein"
3460
 
3461
- #: woocommerce-germanized-shipments/src/Admin/Settings.php:398
3462
  #: woocommerce-germanized-shipments/src/ShippingProviderMethod.php:56
3463
  msgctxt "shipments"
3464
  msgid "Shipping Provider"
@@ -3529,7 +4148,7 @@ msgstr "Filtern"
3529
 
3530
  # @ woocommerce-germanized
3531
  #: woocommerce-germanized-shipments/src/Admin/Table.php:664
3532
- #: woocommerce-germanized-shipments/src/Ajax.php:815
3533
  #, php-format
3534
  msgctxt "shipments"
3535
  msgid "Order #%s"
@@ -3614,85 +4233,86 @@ msgctxt "shipments"
3614
  msgid "Generate and download labels"
3615
  msgstr "Labels erstellen und downloaden"
3616
 
3617
- #: woocommerce-germanized-shipments/src/Ajax.php:94
3618
  msgctxt "shipments"
3619
  msgid "Notification successfully sent to customer."
3620
  msgstr "Kunde erfolgreich benachrichtigt."
3621
 
3622
- #: woocommerce-germanized-shipments/src/Ajax.php:101
3623
  msgctxt "shipments"
3624
  msgid "There was an error while sending the notification."
3625
  msgstr "Beim Versendes der Benachrichtigung ist ein Fehler aufgetreten."
3626
 
3627
- #: woocommerce-germanized-shipments/src/Ajax.php:141
3628
  msgctxt "shipments"
3629
  msgid "Return request confirmed successfully."
3630
  msgstr "Rücksendeantrag erfolgreich bestätigt."
3631
 
3632
- #: woocommerce-germanized-shipments/src/Ajax.php:153
3633
  msgctxt "shipments"
3634
  msgid "There was an error while confirming the request."
3635
  msgstr "Bei der Bestätigung des Antrags ist ein Fehler aufgetreten."
3636
 
3637
- #: woocommerce-germanized-shipments/src/Ajax.php:173
3638
  msgctxt "shipments"
3639
  msgid "There was an error creating the label."
3640
  msgstr "Beim Erstellen des Labels ist ein Fehler aufgetreten."
3641
 
3642
- #: woocommerce-germanized-shipments/src/Ajax.php:209
3643
  msgctxt "shipments"
3644
  msgid "There was an error deleting the label."
3645
  msgstr "Beim Löschen des Labels ist ein Fehler aufgetreten."
3646
 
3647
- #: woocommerce-germanized-shipments/src/Ajax.php:250
3648
  msgctxt "shipments"
3649
  msgid "There was an error processing the label."
3650
  msgstr "Bei der Verarbeitung des Labels ist ein Fehler aufgetreten."
3651
 
3652
- #: woocommerce-germanized-shipments/src/Ajax.php:348
3653
  msgctxt "shipments"
3654
  msgid "There was an error while trying to save the shipping provider status."
3655
  msgstr ""
3656
  "Beim Speichern des Status des Versanddienstleisters trat ein Fehler auf."
3657
 
3658
- #: woocommerce-germanized-shipments/src/Ajax.php:386
3659
  msgctxt "shipments"
3660
  msgid "There was an error while trying to delete the shipping provider."
3661
  msgstr "Beim Löschen des Versanddienstleisters trat ein Fehler auf."
3662
 
3663
- #: woocommerce-germanized-shipments/src/Ajax.php:419
3664
  msgctxt "shipments"
3665
  msgid "There was an error while bulk processing shipments."
3666
  msgstr ""
3667
  "Bei der Verarbeitung der Mehrfachaktionen von Sendungen trat ein Fehler auf."
3668
 
3669
- #: woocommerce-germanized-shipments/src/Ajax.php:531
3670
- #: woocommerce-germanized-shipments/src/Ajax.php:632
3671
- #: woocommerce-germanized-shipments/src/Ajax.php:689
3672
- #: woocommerce-germanized-shipments/src/Ajax.php:726
3673
- #: woocommerce-germanized-shipments/src/Ajax.php:853
3674
- #: woocommerce-germanized-shipments/src/Ajax.php:920
3675
- #: woocommerce-germanized-shipments/src/Ajax.php:953
3676
- #: woocommerce-germanized-shipments/src/Ajax.php:1002
3677
- #: woocommerce-germanized-shipments/src/Ajax.php:1070
3678
- #: woocommerce-germanized-shipments/src/Ajax.php:1111
3679
- #: woocommerce-germanized-shipments/src/Ajax.php:1166
3680
- #: woocommerce-germanized-shipments/src/Ajax.php:1210
 
3681
  msgctxt "shipments"
3682
  msgid "There was an error processing the shipment"
3683
  msgstr "Fehler bei der Verarbeitung der Sendung"
3684
 
3685
- #: woocommerce-germanized-shipments/src/Ajax.php:573
3686
  msgctxt "shipments"
3687
  msgid "There was an error while adding the shipment"
3688
  msgstr "Beim Hinzufügen der Sendung ist ein Fehler aufgetreten"
3689
 
3690
- #: woocommerce-germanized-shipments/src/Ajax.php:594
3691
  msgctxt "shipments"
3692
  msgid "This order contains enough shipments already."
3693
  msgstr "Diese Bestellung beinhaltet bereits genug Sendungen."
3694
 
3695
- #: woocommerce-germanized-shipments/src/Ajax.php:651
3696
  msgctxt "shipments"
3697
  msgid "This order contains enough returns already."
3698
  msgstr "Diese Bestellung beinhaltet bereits genügend Retouren."
@@ -3879,11 +4499,16 @@ msgid "Quantity."
3879
  msgstr "Anzahl."
3880
 
3881
  # @ woocommerce-germanized
3882
- #: woocommerce-germanized-shipments/src/Automation.php:106
3883
  msgctxt "shipments"
3884
  msgid "Order is fully shipped."
3885
  msgstr "Bestellung ist vollständig versandt."
3886
 
 
 
 
 
 
3887
  #: woocommerce-germanized-shipments/src/DataStores/ShipmentItem.php:195
3888
  msgctxt "shipments"
3889
  msgid "Invalid shipment item."
@@ -3989,35 +4614,66 @@ msgstr ""
3989
  "Es gab ein Problem beim Erstellen der Rücksendung. Bitte kontaktieren Sie "
3990
  "uns für weitere Informationen."
3991
 
3992
- #: woocommerce-germanized-shipments/src/Install.php:28
3993
  msgctxt "shipments"
3994
  msgid "Wrong product or size ordered"
3995
  msgstr "Falsches Produkt oder Größe bestellt"
3996
 
3997
- #: woocommerce-germanized-shipments/src/Install.php:33
3998
  msgctxt "shipments"
3999
  msgid "Product no longer needed"
4000
  msgstr "Produkt wird nicht länger benötigt"
4001
 
4002
- #: woocommerce-germanized-shipments/src/Install.php:38
4003
  msgctxt "shipments"
4004
  msgid "Don't like the look"
4005
  msgstr "Optik nicht wie erwartet"
4006
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4007
  # @ woocommerce-germanized
4008
- #: woocommerce-germanized-shipments/src/Package.php:78
4009
  msgctxt "shipments"
4010
  msgid "Sorry, this order is invalid and cannot be returned."
4011
  msgstr "Sorry, diese Bestellung existiert nicht."
4012
 
 
 
 
 
 
 
4013
  #: woocommerce-germanized-shipments/src/ReturnShipment.php:356
4014
- #: woocommerce-germanized-shipments/src/Shipment.php:864
4015
  #, php-format
4016
  msgctxt "full name"
4017
  msgid "%1$s %2$s"
4018
  msgstr "%1$s %2$s"
4019
 
4020
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:266
4021
  msgctxt "shipments"
4022
  msgid ""
4023
  "Your shipment is being processed by {shipping_provider}. If you want to "
@@ -4031,34 +4687,34 @@ msgstr ""
4031
  "die Paketverfolgungsdaten zum Zeitpunkt des Erhalts dieser E-Mail noch nicht "
4032
  "den neuesten Stand wiedergeben."
4033
 
4034
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:539
4035
  #, php-format
4036
  msgctxt "shipments"
4037
  msgid "%s supports many more options. Explore %s."
4038
  msgstr "%s unterstützt viele weitere Einstellungen. Schauen Sie sich %s an."
4039
 
4040
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:539
4041
  #, php-format
4042
  msgctxt "shipments"
4043
  msgid "%s specific settings"
4044
  msgstr "%s spezifische Einstellungen"
4045
 
4046
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:552
4047
  msgctxt "shipments"
4048
  msgid "Choose a title for the shipping provider."
4049
  msgstr "Wählen Sie einen Titel für den Versanddienstleister."
4050
 
4051
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:561
4052
  msgctxt "shipments"
4053
  msgid "Choose a description for the shipping provider."
4054
  msgstr "Wählen Sie eine Beschreibung für den Versanddienstleister."
4055
 
4056
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:575
4057
  msgctxt "shipments"
4058
  msgid "Tracking URL"
4059
  msgstr "Sendungsverfolgung URL"
4060
 
4061
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:576
4062
  #, php-format
4063
  msgctxt "shipments"
4064
  msgid ""
@@ -4072,12 +4728,12 @@ msgstr ""
4072
  "einzufügen: %s"
4073
 
4074
  # @ woocommerce-germanized
4075
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:586
4076
  msgctxt "shipments"
4077
  msgid "Tracking description"
4078
  msgstr "Sendungsverfolgung Hinweis"
4079
 
4080
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:587
4081
  #, php-format
4082
  msgctxt "shipments"
4083
  msgid ""
@@ -4092,17 +4748,17 @@ msgstr ""
4092
  "dynamische Daten einzufügen: %s"
4093
 
4094
  # @ woocommerce-germanized
4095
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:600
4096
  msgctxt "shipments"
4097
  msgid "Customer returns"
4098
  msgstr "Rücksendungen"
4099
 
4100
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:601
4101
  msgctxt "shipments"
4102
  msgid "Allow customers to submit return requests to shipments."
4103
  msgstr "Erlauben Sie Kunden eine Rücksendung zu einer Sendung zu beantragen."
4104
 
4105
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:601
4106
  #, php-format
4107
  msgctxt "shipments"
4108
  msgid ""
@@ -4116,27 +4772,27 @@ msgstr ""
4116
  "Gästen zu erfahren, lesen Sie bitte die %s."
4117
 
4118
  # @ woocommerce-germanized
4119
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:601
4120
  msgctxt "shipments"
4121
  msgid "Return Dashboard"
4122
  msgstr "Retouren-Dashboard"
4123
 
4124
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:601
4125
  msgctxt "shipments"
4126
  msgid "docs"
4127
  msgstr "Dokumentation"
4128
 
4129
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:610
4130
  msgctxt "shipments"
4131
  msgid "Guest returns"
4132
  msgstr "Retouren für Gäste"
4133
 
4134
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:611
4135
  msgctxt "shipments"
4136
  msgid "Allow guests to submit return requests to shipments."
4137
  msgstr "Erlauben Sie Gästen Rücksendeanträge zu Bestellungen zu beantragen."
4138
 
4139
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:611
4140
  #, php-format
4141
  msgctxt "shipments"
4142
  msgid ""
@@ -4150,18 +4806,18 @@ msgstr ""
4150
  "Rücksende-Formular für Gäste auf Ihrer Seite zu platzieren."
4151
 
4152
  # @ woocommerce-germanized
4153
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:622
4154
  msgctxt "shipments"
4155
  msgid "Manual confirmation"
4156
  msgstr "Manuelle Bestätigung"
4157
 
4158
  # @ woocommerce-germanized
4159
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:623
4160
  msgctxt "shipments"
4161
  msgid "Return requests need manual confirmation."
4162
  msgstr "Rücksendeanträge benötigen eine manuelle Bestätigung."
4163
 
4164
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:623
4165
  msgctxt "shipments"
4166
  msgid ""
4167
  "By default return request need manual confirmation e.g. a shop manager needs "
@@ -4178,12 +4834,12 @@ msgstr ""
4178
  "Mail-Bestätigung samt Retouren-Label."
4179
 
4180
  # @ woocommerce-germanized
4181
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:635
4182
  msgctxt "shipments"
4183
  msgid "Return instructions"
4184
  msgstr "Rücksende-Anweisungen"
4185
 
4186
- #: woocommerce-germanized-shipments/src/ShippingProvider.php:636
4187
  msgctxt "shipments"
4188
  msgid ""
4189
  "Provide your customer with instructions on how to return the shipment after "
@@ -4561,7 +5217,7 @@ msgstr "l"
4561
  # @ woocommerce-germanized
4562
  #: woocommerce-germanized/includes/abstracts/abstract-wc-gzd-product.php:549
4563
  #: woocommerce-germanized/includes/abstracts/abstract-wc-gzd-product.php:559
4564
- #: woocommerce-germanized/includes/wc-gzd-core-functions.php:448
4565
  #: woocommerce-germanized/includes/wc-gzd-template-functions.php:546
4566
  #: woocommerce-germanized/includes/wc-gzd-template-functions.php:554
4567
  msgid "incl. VAT"
@@ -4574,7 +5230,7 @@ msgstr "exkl. MwSt."
4574
 
4575
  # @ woocommerce-germanized
4576
  #: woocommerce-germanized/includes/abstracts/abstract-wc-gzd-product.php:551
4577
- #: woocommerce-germanized/includes/wc-gzd-core-functions.php:448
4578
  #, php-format
4579
  msgid "incl. %s%% VAT"
4580
  msgstr "inkl. %s %% MwSt."
@@ -4816,9 +5472,9 @@ msgstr "Germanize"
4816
  # @ woocommerce-germanized
4817
  # @ woocommerce
4818
  #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:73
4819
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:141
4820
  #: woocommerce-germanized/includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:79
4821
- #: woocommerce-germanized/woocommerce-germanized.php:859
4822
  msgid "Settings"
4823
  msgstr "Einstellungen"
4824
 
@@ -4835,66 +5491,71 @@ msgid "Start tutorial"
4835
  msgstr "Tutorial starten"
4836
 
4837
  #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:92
4838
- #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-dhl.php:33
4839
  #: woocommerce-germanized/includes/admin/views/setup/dhl.php:10
4840
  msgid "DHL"
4841
  msgstr "DHL"
4842
 
4843
  # @ woocommerce-germanized
4844
  #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:100
 
4845
  msgid "Import settings"
4846
  msgstr "Einstellungen importieren"
4847
 
 
 
 
 
 
4848
  # @ woocommerce-germanized
4849
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:131
4850
  msgid "Pages"
4851
  msgstr "Rechtlich relevante Seiten"
4852
 
4853
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:132
4854
  msgid "Create legal pages placeholders e.g. terms & conditions."
4855
  msgstr "Legen Sie rechtlich relevante Seiten an, z.B. AGB."
4856
 
4857
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:142
4858
  msgid "Germanize WooCommerce settings (e.g. currency, tax display)."
4859
  msgstr "WooCommerce Einstellungen eindeutschen (z.B. Währung)"
4860
 
4861
  # @ woocommerce-germanized
4862
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:149
4863
  msgctxt "install"
4864
  msgid "VAT"
4865
  msgstr "USt."
4866
 
4867
  # @ woocommerce-germanized
4868
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:150
4869
  msgid "Let Germanized insert EU VAT rates."
4870
  msgstr "Lassen Sie Germanized EU-Steuersätze importieren."
4871
 
4872
  # @ woocommerce-germanized
4873
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:156
4874
  msgctxt "install"
4875
  msgid "Virtual VAT"
4876
  msgstr "Virtuelle USt."
4877
 
4878
  # @ woocommerce-germanized
4879
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:157
4880
  msgid "Let Germanized insert virtual EU VAT rates."
4881
  msgstr "Lassen Sie Germanized virtuelle EU-Steuersätze importieren."
4882
 
4883
  # @ woocommerce-germanized
4884
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:168
4885
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-general.php:202
4886
  #: woocommerce-germanized/includes/admin/views/html-page-status-germanized.php:43
4887
  msgid "Small-Enterprise-Regulation"
4888
  msgstr "Kleinunternehmerregelung"
4889
 
4890
  # @ woocommerce-germanized
4891
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:169
4892
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-general.php:203
4893
  msgid "VAT based on &#167;19 UStG"
4894
  msgstr "Umsatzsteuerbefreit nach &#167;19 UStG"
4895
 
4896
  # @ woocommerce-germanized
4897
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:169
4898
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-general.php:203
4899
  #, php-format
4900
  msgid ""
@@ -4906,18 +5567,18 @@ msgstr ""
4906
  "Gebrauch machen wollen."
4907
 
4908
  # @ woocommerce-germanized
4909
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:175
4910
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-doi.php:21
4911
  msgid "Double Opt In"
4912
  msgstr "Double-Opt-In"
4913
 
4914
  # @ woocommerce-germanized
4915
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:176
4916
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-doi.php:38
4917
  msgid "Enable customer double opt in during registration."
4918
  msgstr "Double-Opt-In Verfahren für Kundenkonten aktivieren."
4919
 
4920
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:176
4921
  #, php-format
4922
  msgid ""
4923
  "Sends an email to the customer after registration to verify his account. "
@@ -4931,25 +5592,25 @@ msgstr ""
4931
  "\">Einstellungen</a> können nachträglich angepasst werden."
4932
 
4933
  # @ woocommerce-germanized
4934
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:194
4935
  msgid "Setup"
4936
  msgstr "Setup"
4937
 
4938
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:292
4939
  msgid "Germanized &rsaquo; Setup Wizard"
4940
  msgstr "Germanized &rsaquo; Setup"
4941
 
4942
  # @ woocommerce-germanized
4943
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:361
4944
  msgid "Skip Step"
4945
  msgstr "Schritt überspringen"
4946
 
4947
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:365
4948
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:367
4949
  msgid "Continue"
4950
  msgstr "Weiter"
4951
 
4952
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:373
4953
  msgid "Return to WP Admin"
4954
  msgstr "Zurück zu WP Admin"
4955
 
@@ -4998,7 +5659,7 @@ msgid "Welcome to Germanized"
4998
  msgstr "Willkommen bei Germanized"
4999
 
5000
  # @ woocommerce-germanized
5001
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-welcome.php:264
5002
  msgid "Go to Germanized Settings"
5003
  msgstr "Germanized Einstellungen"
5004
 
@@ -5016,6 +5677,8 @@ msgstr "Germanized Einstellungen"
5016
  #: woocommerce-germanized/includes/class-wc-gzd-dependencies.php:65
5017
  #: woocommerce-germanized/includes/class-wc-gzd-hook-priorities.php:35
5018
  #: woocommerce-germanized/includes/class-wc-gzd-hook-priorities.php:44
 
 
5019
  #: woocommerce-germanized/includes/class-wc-gzd-product-attribute-helper.php:21
5020
  #: woocommerce-germanized/includes/class-wc-gzd-product-attribute-helper.php:30
5021
  #: woocommerce-germanized/includes/export/class-wc-gzd-product-export.php:23
@@ -5027,55 +5690,57 @@ msgstr "Germanized Einstellungen"
5027
  msgid "Cheatin&#8217; huh?"
5028
  msgstr "So geht das leider nicht.."
5029
 
5030
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:113
 
5031
  msgctxt "dhl"
5032
  msgid "Action failed. Please refresh the page and retry."
5033
  msgstr ""
5034
  "Aktion fehlgeschlagen. Bitte aktualisieren Sie die Seite und versuchen es "
5035
  "erneut."
5036
 
5037
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:117
 
5038
  msgctxt "dhl"
5039
  msgid "You don't have permission to do this."
5040
  msgstr "Sie sind leider nicht berechtigt, diese Aktion durchzuführen."
5041
 
5042
  # @ woocommerce-germanized
5043
  #. Plugin Name of the plugin/theme
5044
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:194
5045
  msgid "Germanized for WooCommerce"
5046
  msgstr "Germanized für WooCommerce"
5047
 
5048
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:304
5049
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:45
5050
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:58
5051
  msgid "Yes"
5052
  msgstr "Ja"
5053
 
5054
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:304
5055
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:58
5056
  msgid "No"
5057
  msgstr "Nein"
5058
 
5059
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:376
5060
  msgid "Paid for order notification manually sent to customer."
5061
  msgstr "Bestellung bezahlt manuell an den Kunden versendet."
5062
 
5063
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:396
5064
  msgid "Order confirmation manually sent to customer."
5065
  msgstr "Bestellbestätigung manuell an den Kunden versendet."
5066
 
5067
  # @ woocommerce-germanized
5068
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:416
5069
  msgid "Resend order confirmation"
5070
  msgstr "Bestellbestätigung erneut versenden"
5071
 
5072
  # @ woocommerce-germanized
5073
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:417
5074
  msgid "Send paid for order notification"
5075
  msgstr "Bestellung bezahlt manuell versenden"
5076
 
5077
  # @ woocommerce-germanized
5078
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:427
5079
  #: woocommerce-germanized/includes/admin/settings/abstract-wc-gzd-settings-tab.php:114
5080
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-germanized.php:23
5081
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:9
@@ -5083,38 +5748,38 @@ msgstr "Bestellung bezahlt manuell versenden"
5083
  msgid "Germanized"
5084
  msgstr "Germanized"
5085
 
5086
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:441
5087
  msgid "Parcel Delivery Data Transfer:"
5088
  msgstr "Paketdienstleister Datenweitergabe:"
5089
 
5090
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:442
5091
  msgid "allowed"
5092
  msgstr "akzeptiert"
5093
 
5094
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:442
5095
  msgid "not allowed"
5096
  msgstr "nicht akzeptiert"
5097
 
5098
  # @ woocommerce-germanized
5099
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:525
5100
  msgid "Optional Email Content"
5101
  msgstr "Optionaler E-Mail Inhalt"
5102
 
5103
  # @ woocommerce-germanized
5104
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:543
5105
  msgid "Add content which will be replacing default page content within emails."
5106
  msgstr ""
5107
  "Füllen Sie dieses Feld aus um einen abweichenden E-Mail Anhangstext für "
5108
  "diese Seite zu bestimmen."
5109
 
5110
  # @ woocommerce-germanized
5111
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:557
5112
  #: woocommerce-germanized/includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php:152
5113
  msgid "Optional Mini Description"
5114
  msgstr "Warenkorb Kurzbeschreibung"
5115
 
5116
  # @ woocommerce-germanized
5117
- #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:579
5118
  msgid ""
5119
  "This content will be shown as short product description within checkout and "
5120
  "emails."
@@ -5337,6 +6002,7 @@ msgstr ""
5337
  "Einstellungen importieren."
5338
 
5339
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:35
 
5340
  msgctxt "dhl"
5341
  msgid "No need to use an external plugin which might lead to incompatibilities"
5342
  msgstr ""
@@ -5344,6 +6010,7 @@ msgstr ""
5344
  "bessere Performance"
5345
 
5346
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:36
 
5347
  #, php-format
5348
  msgctxt "dhl"
5349
  msgid ""
@@ -5354,6 +6021,7 @@ msgstr ""
5354
  "Services pro Versandart und %s"
5355
 
5356
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:36
 
5357
  msgctxt "dhl"
5358
  msgid "many more"
5359
  msgstr "und viele mehr"
@@ -5367,15 +6035,47 @@ msgstr ""
5367
  "für Sendungen und Retouren"
5368
 
5369
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:47
 
5370
  msgctxt "dhl"
5371
  msgid "Import settings and activate"
5372
  msgstr "Einstellungen importieren und loslegen"
5373
 
5374
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:53
 
5375
  msgctxt "dhl"
5376
  msgid "Learn more"
5377
  msgstr "Mehr erfahren"
5378
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5379
  # @ woocommerce-germanized
5380
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-pro.php:23
5381
  msgid "For professionals: Upgrade to Pro-Version"
@@ -5530,11 +6230,11 @@ msgstr ""
5530
  msgid "Run the updater"
5531
  msgstr "Update starten"
5532
 
5533
- #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note.php:174
5534
  msgid "Not now"
5535
  msgstr "Nicht jetzt"
5536
 
5537
- #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note.php:178
5538
  msgctxt "woocommerce-germanized"
5539
  msgid "Deactivate"
5540
  msgstr "Deaktivieren"
@@ -5571,6 +6271,7 @@ msgid "Upgrade now"
5571
  msgstr "Jetzt upgraden"
5572
 
5573
  #: woocommerce-germanized/includes/admin/settings/abstract-wc-gzd-settings-tab.php:152
 
5574
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-invoices.php:61
5575
  msgid "Learn more"
5576
  msgstr "Mehr erfahren"
@@ -5591,7 +6292,7 @@ msgstr ""
5591
 
5592
  # @ woocommerce-germanized
5593
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-pointers.php:92
5594
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:773
5595
  msgid "Status"
5596
  msgstr "Status"
5597
 
@@ -5875,7 +6576,7 @@ msgstr ""
5875
  "Checkbox bearbeiten indem Sie auf den Link klicken."
5876
 
5877
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-checkboxes.php:62
5878
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:809
5879
  msgid "Label"
5880
  msgstr "Beschriftung"
5881
 
@@ -5945,17 +6646,14 @@ msgid "pro"
5945
  msgstr "pro"
5946
 
5947
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-dhl.php:19
5948
- msgid ""
5949
- "Integrate DHL Services such as Labels for Shipments and Returns and Delivery "
5950
- "to Packstations."
5951
  msgstr ""
5952
- "Erstellen Sie bequem DHL Label für Sendungen und Retouren und mehr über das "
5953
  "Admin-Panel."
5954
 
5955
- #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-dhl.php:26
5956
- msgctxt "dhl"
5957
- msgid "Not yet a customer?"
5958
- msgstr "Noch kein Geschäftskunde?"
5959
 
5960
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-doi.php:17
5961
  msgid "Extend the WooCommerce registration process with a double opt in."
@@ -6109,8 +6807,8 @@ msgstr ""
6109
  #: woocommerce-germanized/includes/api/class-wc-gzd-rest-customers-controller.php:144
6110
  #: woocommerce-germanized/includes/api/class-wc-gzd-rest-orders-controller.php:138
6111
  #: woocommerce-germanized/includes/api/class-wc-gzd-rest-orders-controller.php:145
6112
- #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:587
6113
- #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:598
6114
  #: woocommerce-germanized/includes/class-wc-gzd-customer-helper.php:131
6115
  #: woocommerce-germanized/includes/class-wc-gzd-customer-helper.php:139
6116
  msgid "Title"
@@ -6578,7 +7276,7 @@ msgstr ""
6578
  "Platzhalter für den höchsten Preis."
6579
 
6580
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-general.php:294
6581
- #: woocommerce-germanized/includes/wc-gzd-core-functions.php:845
6582
  msgid "{min_price} &ndash; {max_price}"
6583
  msgstr "{min_price} &ndash; {max_price}"
6584
 
@@ -7199,6 +7897,7 @@ msgstr "Steuern"
7199
 
7200
  # @ woocommerce-germanized
7201
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-taxes.php:30
 
7202
  msgid "VAT"
7203
  msgstr "Umsatzsteuer"
7204
 
@@ -7453,14 +8152,14 @@ msgstr ""
7453
  # @ woocommerce-germanized
7454
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-page-checkboxes.php:11
7455
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:27
7456
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:781
7457
  msgid "Name"
7458
  msgstr "Name"
7459
 
7460
  # @ woocommerce-germanized
7461
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-page-checkboxes.php:12
7462
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:29
7463
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:800
7464
  #: woocommerce-germanized/includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:888
7465
  #: woocommerce-germanized/includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:124
7466
  msgid "Description"
@@ -7473,7 +8172,7 @@ msgstr "Aktiviert"
7473
 
7474
  # @ woocommerce-germanized
7475
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-page-checkboxes.php:14
7476
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:837
7477
  msgid "Mandatory"
7478
  msgstr "Pflichtfeld"
7479
 
@@ -7849,6 +8548,26 @@ msgstr ""
7849
  "Lassen Sie Germanized Ihre WooCommerce-Einstellungen speziell für %s "
7850
  "anpassen."
7851
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7852
  # @ woocommerce-germanized
7853
  #: woocommerce-germanized/includes/admin/views/setup/settings.php:7
7854
  msgid "Adjust Germanized"
@@ -8099,31 +8818,31 @@ msgid "Number of published products for the resource."
8099
  msgstr "Anzahl der veröffentlichten Produkte für die Ressource."
8100
 
8101
  # @ woocommerce-germanized
8102
- #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:188
8103
  #, php-format
8104
  msgid "%s [new]"
8105
  msgstr "%s [neu]"
8106
 
8107
  # @ woocommerce-germanized
8108
- #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:215
8109
  msgctxt "revocation-form"
8110
  msgid "is not a valid email address."
8111
  msgstr "ist leider keine valide E-Mail Adresse."
8112
 
8113
  # @ woocommerce-germanized
8114
- #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:219
8115
  msgctxt "revocation-form"
8116
  msgid "Please enter a valid postcode/ZIP"
8117
  msgstr "Bitte geben Sie eine echte Postleitzahl ein"
8118
 
8119
  # @ woocommerce-germanized
8120
- #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:227
8121
  msgctxt "revocation-form"
8122
  msgid "is not valid."
8123
  msgstr "ist leider nicht korrekt."
8124
 
8125
  # @ woocommerce-germanized
8126
- #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:248
8127
  msgctxt "revocation-form"
8128
  msgid ""
8129
  "Thank you. We have received your Revocation Request. You will receive a "
@@ -8132,7 +8851,7 @@ msgstr ""
8132
  "Vielen Dank. Wir haben Ihren Widerruf erhalten. Sie bekommen in Kürze eine E-"
8133
  "Mail mit Ihren Daten als Bestätigung."
8134
 
8135
- #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:173
8136
  msgid ""
8137
  "Sorry, but differential taxed products cannot be purchased with normal "
8138
  "products at the same time."
@@ -8140,7 +8859,7 @@ msgstr ""
8140
  "Entschuldigung, differenzbesteuerte Produkte können nicht gemeinsam mit "
8141
  "normalen Produkten gekauft werden."
8142
 
8143
- #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:179
8144
  msgid ""
8145
  "Sorry, but normal products cannot be purchased together with differential "
8146
  "taxed products at the same time."
@@ -8149,23 +8868,23 @@ msgstr ""
8149
  "differenzbesteuerten Produkten gekauft werden."
8150
 
8151
  # @ woocommerce-germanized
8152
- #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:921
8153
  #: woocommerce-germanized/includes/class-wc-gzd-revocation.php:52
8154
- #: woocommerce-germanized/includes/wc-gzd-core-functions.php:599
8155
  msgid "Mr."
8156
  msgstr "Herr"
8157
 
8158
  # @ woocommerce-germanized
8159
- #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:922
8160
  msgctxt "customer-title-male-address"
8161
  msgid "Mr."
8162
  msgstr "Herrn"
8163
 
8164
- #: woocommerce-germanized/includes/class-wc-gzd-coupon-helper.php:314
8165
  msgid "Is voucher?"
8166
  msgstr "Wertgutschein?"
8167
 
8168
- #: woocommerce-germanized/includes/class-wc-gzd-coupon-helper.php:315
8169
  #, php-format
8170
  msgid ""
8171
  "Whether or not this coupon is a voucher which has been sold to a customer "
@@ -8216,29 +8935,29 @@ msgstr "Sorry, dieser Aktivierungscode ist uns leider nicht bekannt."
8216
  msgid "Thank you. You have successfully activated your account."
8217
  msgstr "Vielen Dank. Ihr Benutzerkonto wurde erfolgreich aktiviert."
8218
 
8219
- #: woocommerce-germanized/includes/class-wc-gzd-customer-helper.php:573
8220
  msgid "Expired activation key"
8221
  msgstr "Abgelaufener Aktivierungscode"
8222
 
8223
- #: woocommerce-germanized/includes/class-wc-gzd-customer-helper.php:578
8224
  msgid "Invalid activation key"
8225
  msgstr "Aktivierungscode ungültig"
8226
 
8227
- #: woocommerce-germanized/includes/class-wc-gzd-emails.php:166
8228
  msgid "BCC recipients"
8229
  msgstr "BCC Empfänger"
8230
 
8231
- #: woocommerce-germanized/includes/class-wc-gzd-emails.php:168
8232
  msgid "Enter blind-copy recipients (comma separated) for this email."
8233
  msgstr ""
8234
  "Fügen Sie Empfänger (kommasepariert) einer Blindkopie für diese E-Mail ein."
8235
 
8236
  # @ woocommerce-germanized
8237
- #: woocommerce-germanized/includes/class-wc-gzd-emails.php:207
8238
  msgid "Confirmation text"
8239
  msgstr "Bestätigung Text"
8240
 
8241
- #: woocommerce-germanized/includes/class-wc-gzd-emails.php:208
8242
  msgid ""
8243
  "Your order has been received and is now being processed. Your order details "
8244
  "are shown below for your reference:"
@@ -8247,7 +8966,7 @@ msgstr ""
8247
  "Ihrer Bestellung können Sie der nachfolgenden Tabelle entnehmen:"
8248
 
8249
  # @ woocommerce-germanized
8250
- #: woocommerce-germanized/includes/class-wc-gzd-emails.php:209
8251
  msgid ""
8252
  "This text will be inserted within the order confirmation email. Use "
8253
  "{order_number}, {site_title} or {order_date} as placeholder."
@@ -8255,7 +8974,7 @@ msgstr ""
8255
  "Dieser Text wird in die Bestellbestätigung eingefügt. Verwenden Sie "
8256
  "{order_number}, {site_title} oder {order_date} als Platzhalter."
8257
 
8258
- #: woocommerce-germanized/includes/class-wc-gzd-emails.php:327
8259
  msgid ""
8260
  "Your order has been received and is now being processed. Your order details "
8261
  "are shown below for your reference."
@@ -8263,17 +8982,17 @@ msgstr ""
8263
  "Ihre Bestellung ist eingegangen und wird nun bearbeitet. Die Einzelheiten "
8264
  "Ihrer Bestellung können Sie der nachfolgenden Tabelle entnehmen."
8265
 
8266
- #: woocommerce-germanized/includes/class-wc-gzd-emails.php:375
8267
  msgid "Someone requested a password reset for your account."
8268
  msgstr "Jemand hat das Zurücksetzen des Passworts für Ihren Account beantragt."
8269
 
8270
- #: woocommerce-germanized/includes/class-wc-gzd-emails.php:390
8271
  #, php-format
8272
  msgid "Thanks for creating an account on %s."
8273
  msgstr "Danke, dass Sie ein Konto bei %s erstellt haben."
8274
 
8275
  # @ woocommerce-germanized
8276
- #: woocommerce-germanized/includes/class-wc-gzd-emails.php:1073
8277
  msgctxt "revocation-form"
8278
  msgid "Forward your Revocation online"
8279
  msgstr "Widerruf online erklären"
@@ -8288,85 +9007,85 @@ msgstr ""
8288
  "Bitte installieren Sie <a href=\"%s\" target=\"_blank\">WooCommerce</a> "
8289
  "bevor Sie WooCommerce Germanized installieren. Vielen Dank!"
8290
 
8291
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:481
8292
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:495
8293
  msgid "Reduced rate"
8294
  msgstr "Ermäßigter Steuersatz"
8295
 
8296
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:537
8297
  #, php-format
8298
  msgctxt "vat-rate-import"
8299
  msgid "VAT %s"
8300
  msgstr "MwSt. %s"
8301
 
8302
  # @ woocommerce-germanized
8303
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:650
8304
  msgctxt "Page slug"
8305
  msgid "data-security"
8306
  msgstr "datenschutzerklaerung"
8307
 
8308
  # @ woocommerce-germanized
8309
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:651
8310
  msgctxt "Page title"
8311
  msgid "Data Security Statement"
8312
  msgstr "Datenschutzerklärung"
8313
 
8314
  # @ woocommerce-germanized
8315
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:655
8316
  msgctxt "Page slug"
8317
  msgid "imprint"
8318
  msgstr "impressum"
8319
 
8320
  # @ woocommerce-germanized
8321
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:656
8322
  msgctxt "Page title"
8323
  msgid "Imprint"
8324
  msgstr "Impressum"
8325
 
8326
  # @ woocommerce-germanized
8327
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:660
8328
  msgctxt "Page slug"
8329
  msgid "terms"
8330
  msgstr "agb"
8331
 
8332
  # @ woocommerce-germanized
8333
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:661
8334
  msgctxt "Page title"
8335
  msgid "Terms & Conditions"
8336
  msgstr "AGB"
8337
 
8338
  # @ woocommerce-germanized
8339
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:665
8340
  msgctxt "Page slug"
8341
  msgid "revocation"
8342
  msgstr "widerrufsbelehrung"
8343
 
8344
  # @ woocommerce-germanized
8345
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:666
8346
  msgctxt "Page title"
8347
  msgid "Power of Revocation"
8348
  msgstr "Widerrufsbelehrung"
8349
 
8350
  # @ woocommerce-germanized
8351
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:670
8352
  msgctxt "Page slug"
8353
  msgid "shipping-methods"
8354
  msgstr "versandarten"
8355
 
8356
  # @ woocommerce-germanized
8357
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:671
8358
  msgctxt "Page title"
8359
  msgid "Shipping Methods"
8360
  msgstr "Versandarten"
8361
 
8362
  # @ woocommerce-germanized
8363
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:675
8364
  msgctxt "Page slug"
8365
  msgid "payment-methods"
8366
  msgstr "bezahlmoeglichkeiten"
8367
 
8368
  # @ woocommerce-germanized
8369
- #: woocommerce-germanized/includes/class-wc-gzd-install.php:676
8370
  msgctxt "Page title"
8371
  msgid "Payment Methods"
8372
  msgstr "Zahlungsarten"
@@ -8585,12 +9304,18 @@ msgstr "Kontrollieren Sie bitte %s. Hier fehlt eine Einwilligung."
8585
  msgid "Checkbox with name %s does already exist."
8586
  msgstr "Eine Checkbox mit dem Namen %s existiert bereits."
8587
 
 
 
 
 
 
 
8588
  # @ woocommerce-germanized
8589
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:776
8590
  msgid "Enable checkbox"
8591
  msgstr "Checkbox aktivieren"
8592
 
8593
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:785
8594
  msgid ""
8595
  "Choose a name to identify your checkbox. Upon creating a new checkbox, this "
8596
  "value is being used to generate the Id."
@@ -8598,11 +9323,11 @@ msgstr ""
8598
  "Wähle einen Namen um die Checkbox zu identifizieren. Bei Erstellung einer "
8599
  "neuen Checkbox wird dieser Wert verwendet um eine Id zu erstellen."
8600
 
8601
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:790
8602
  msgid "Id"
8603
  msgstr "Id"
8604
 
8605
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:794
8606
  msgid ""
8607
  "The checkbox Id is the unique indentifier which is used to identify the "
8608
  "checkbox within the code. Cannot be edited after creating the checkbox."
@@ -8611,26 +9336,26 @@ msgstr ""
8611
  "Code heraus zugreifbar zu machen. Kann nach dem Erstellen einer Checkbox "
8612
  "nicht mehr verändert werden."
8613
 
8614
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:803
8615
  msgid "Describe the use case of your checkbox."
8616
  msgstr "Beschreibe hier den Use-Case der Checkbox."
8617
 
8618
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:813
8619
  msgid "Choose a label to be inserted next to the checkbox."
8620
  msgstr ""
8621
  "Wählen Sie eine Beschriftung aus, die neben der Checkbox platziert wird."
8622
 
8623
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:814
8624
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:824
8625
  #, php-format
8626
  msgid "You may use one of the following placeholders within the text: %s"
8627
  msgstr "Sie können einen der folgenden Platzhalter im Text verwenden: %s"
8628
 
8629
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:819
8630
  msgid "Error Message"
8631
  msgstr "Fehlermeldung"
8632
 
8633
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:823
8634
  msgid ""
8635
  "Choose an error message to be shown when the user has not confirmed the "
8636
  "checkbox."
@@ -8639,25 +9364,25 @@ msgstr ""
8639
  "Nutzer die Checkbox nicht bestätigt hat."
8640
 
8641
  # @ woocommerce-germanized
8642
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:829
8643
  msgid "Hide input"
8644
  msgstr "Ausblenden"
8645
 
8646
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:832
8647
  msgid "Do only show a label and hide the actual checkbox."
8648
  msgstr ""
8649
  "Zeige lediglich die Beschriftung und entferne die eigentliche Checkbox."
8650
 
8651
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:840
8652
  msgid "Mark the checkbox as mandatory."
8653
  msgstr "Checkbox zum Pflichtfeld machen."
8654
 
8655
  # @ woocommerce-germanized
8656
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:845
8657
  msgid "Locations"
8658
  msgstr "Orte"
8659
 
8660
- #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:849
8661
  msgid "Choose where to display your checkbox."
8662
  msgstr "Wählen Sie einen Ort aus, an dem die Checkbox platziert werden soll."
8663
 
@@ -8934,8 +9659,8 @@ msgstr "Anrede"
8934
 
8935
  # @ woocommerce-germanized
8936
  #: woocommerce-germanized/includes/class-wc-gzd-revocation.php:53
8937
- #: woocommerce-germanized/includes/wc-gzd-core-functions.php:600
8938
- #: woocommerce-germanized/includes/wc-gzd-core-functions.php:617
8939
  msgid "Ms."
8940
  msgstr "Frau"
8941
 
@@ -9796,6 +10521,24 @@ msgstr "Widerrufsrecht"
9796
  msgid "Data Security"
9797
  msgstr "Datenschutzerklärung"
9798
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9799
  # @ woocommerce-germanized
9800
  #: woocommerce-germanized/includes/wc-gzd-template-functions.php:225
9801
  #: woocommerce-germanized/templates/checkout/edit-data-notice.php:25
@@ -10149,7 +10892,7 @@ msgctxt "revocation-form"
10149
  msgid "Forward Revocation"
10150
  msgstr "Widerruf erklären"
10151
 
10152
- #: woocommerce-germanized/templates/global/complaints.php:21
10153
  msgid ""
10154
  "Alternative Dispute Resolution in accordance with Art. 14 (1) ODR-VO and § "
10155
  "36 VSBG:"
@@ -10171,7 +10914,7 @@ msgstr "Germanized benötigt mindestens PHP 5.6. Bitte %s Sie Ihre PHP-Version."
10171
  msgid "upgrade"
10172
  msgstr "aktualisieren"
10173
 
10174
- #: woocommerce-germanized/woocommerce-germanized.php:331
10175
  #, php-format
10176
  msgid ""
10177
  "This version of the Corona Helper Plugin includes a bug which could lead to "
@@ -11425,6 +12168,29 @@ msgstr "vendidero"
11425
  msgid "https://vendidero.de"
11426
  msgstr "https://vendidero.de"
11427
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11428
  #~ msgid "PDF Layout"
11429
  #~ msgstr "PDF Layout"
11430
 
@@ -11677,10 +12443,6 @@ msgstr "https://vendidero.de"
11677
  #~ msgid "Invalid shipment"
11678
  #~ msgstr "Ungültige Sendung"
11679
 
11680
- #~ msgctxt "dhl"
11681
- #~ msgid "Tracking"
11682
- #~ msgstr "Sendungsverfolgung"
11683
-
11684
  #, php-format
11685
  #~ msgctxt "dhl"
11686
  #~ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: WooCommerce Germanized\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2020-12-07 11:56+0100\n"
6
+ "PO-Revision-Date: 2020-12-07 11:56+0100\n"
7
  "Last-Translator: holzhannes <holzhannes@posteo.de>\n"
8
  "Language-Team: \n"
9
  "Language: de_DE@formal\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14
+ "X-Generator: Poedit 2.4.2\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
  "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
17
  "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
39
  "X-Poedit-SearchPathExcluded-12: woocommerce-trusted-shops/build\n"
40
  "X-Poedit-SearchPathExcluded-13: woocommerce-germanized/assets\n"
41
 
42
+ # @ woocommerce-germanized
43
+ #: woocommerce-germanized-dhl/includes/admin/views/html-deutsche-post-additional-services.php:14
44
+ msgctxt "dhl"
45
+ msgid "Additional Services"
46
+ msgstr "Zusätzliche Leistungen"
47
+
48
+ #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-deutsche-post-label-backbone-form.php:30
49
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:494
50
+ #, php-format
51
+ msgid ""
52
+ "Sorry but none of your selected <a href=\"%s\">Deutsche Post Products</a> is "
53
+ "available for this shipment. Please verify your shipment data (e.g. weight) "
54
+ "and try again."
55
+ msgstr ""
56
+ "Leider sind keine der von Ihnen ausgewählten <a href=\"%s\">Deutsche Post "
57
+ "Produkte</a> verfügbar für diese Sendung. Bitte prüfen Sie die Sendungsdaten "
58
+ "(z.B. Gewicht) und versuchen Sie es erneut."
59
+
60
+ # @ woocommerce-germanized
61
+ #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-deutsche-post-label-backbone-form.php:37
62
+ msgctxt "dhl"
63
+ msgid "Product"
64
+ msgstr "Produkt"
65
+
66
+ # @ woocommerce-germanized
67
+ #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-deutsche-post-label-backbone-form.php:55
68
+ msgctxt "dhl"
69
+ msgid "Page Format"
70
+ msgstr "Seitenformat"
71
+
72
  # @ woocommerce-germanized
73
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:18
74
  msgctxt "dhl"
86
  msgstr "Zollabgabe"
87
 
88
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:65
89
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:141
90
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:974
91
  #: woocommerce-germanized-dhl/src/ParcelServices.php:29
92
  msgctxt "dhl"
93
  msgid "Preferred Day"
101
 
102
  # @ woocommerce-germanized
103
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:87
104
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:169
105
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:994
106
  #: woocommerce-germanized-dhl/src/ParcelServices.php:43
107
  msgctxt "dhl"
108
  msgid "Preferred Location"
109
  msgstr "Wunschort"
110
 
111
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:98
112
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1002
113
  #: woocommerce-germanized-dhl/src/ParcelServices.php:48
114
  msgctxt "dhl"
115
  msgid "Preferred Neighbor"
122
 
123
  # @ woocommerce-germanized
124
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:121
125
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:761
126
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:830
127
  msgctxt "dhl"
128
  msgid "Name"
129
  msgstr "Name"
130
 
131
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:130
132
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:768
133
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:837
134
  msgctxt "dhl"
135
  msgid "Company"
136
  msgstr "Firma"
137
 
138
  # @ woocommerce-germanized
139
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:139
140
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:590
141
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:775
142
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:844
143
  msgctxt "dhl"
144
  msgid "Street"
145
  msgstr "Straße"
152
 
153
  # @ woocommerce-germanized
154
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:159
155
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:591
156
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:796
157
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:865
158
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder.php:27
159
  msgctxt "dhl"
160
  msgid "Postcode"
162
 
163
  # @ woocommerce-germanized
164
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:168
165
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:592
166
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:789
167
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:858
168
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder.php:30
169
  msgctxt "dhl"
170
  msgid "City"
171
  msgstr "Stadt"
172
 
173
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:179
174
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:812
175
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:881
176
  msgctxt "dhl"
177
  msgid "Phone"
178
  msgstr "Telefon"
179
 
180
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:188
181
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:819
182
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:888
183
  msgctxt "dhl"
184
  msgid "Email"
185
  msgstr "E-Mail"
207
 
208
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:228
209
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:331
210
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:534
211
  msgctxt "dhl"
212
  msgid "GoGreen"
213
  msgstr "GoGreen"
229
  msgstr "Keine Nachbarschaftszustellung"
230
 
231
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:272
232
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:562
233
  msgctxt "dhl"
234
  msgid "Named person only"
235
  msgstr "Persönliche Übergabe"
256
  msgstr "Mindestalter"
257
 
258
  #: woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php:322
259
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:606
260
  msgctxt "dhl"
261
  msgid "Premium"
262
  msgstr "Premium"
268
  msgstr "Empfänger"
269
 
270
  #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:15
271
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1461
272
  msgctxt "dhl"
273
  msgid "DHL Labels"
274
  msgstr "DHL Labels"
301
 
302
  # @ woocommerce-germanized
303
  #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:41
304
+ #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:106
305
  msgctxt "dhl"
306
+ msgid "Label Automation"
307
+ msgstr "Label Automatisierung"
308
 
309
  #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:44
310
+ #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:109
311
  #, php-format
312
  msgctxt "dhl"
313
  msgid ""
347
  "überschreiben die <a href=\"%s\">globalen Einstellungen</a>."
348
 
349
  # @ woocommerce-germanized
350
+ #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:81
351
+ msgctxt "dhl"
352
+ msgid "Deutsche Post Labels"
353
+ msgstr "Deutsche Post Labels"
354
+
355
+ #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:84
356
+ #, php-format
357
+ msgctxt "dhl"
358
+ msgid ""
359
+ "Adjust Deutsche Post label settings. Changes override <a href=\"%s\">global "
360
+ "settings</a>."
361
+ msgstr ""
362
+ "Deutsche Post Label Einstellungen anpassen. Änderungen überschreiben die <a "
363
+ "href=\"%s\">globalen Einstellungen</a>."
364
+
365
+ #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:94
366
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1352
367
+ msgctxt "dhl"
368
+ msgid "Printing"
369
+ msgstr "Druck"
370
+
371
+ #: woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php:97
372
+ #, php-format
373
+ msgctxt "dhl"
374
+ msgid ""
375
+ "Adjust label printing settings. Changes override <a href=\"%s\">global "
376
+ "settings</a>."
377
+ msgstr ""
378
+ "Druck-Einstellungen für Label anpassen. Änderungen überschreiben die <a href="
379
+ "\"%s\">globalen Einstellungen</a>."
380
+
381
+ # @ woocommerce-germanized
382
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:160
383
  msgctxt "dhl time context"
384
  msgid "None"
385
  msgstr "Keine"
386
 
387
  # @ woocommerce-germanized
388
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:170
389
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:280
390
  msgctxt "dhl day context"
391
  msgid "None"
392
  msgstr "Keiner"
393
 
394
  # @ woocommerce-germanized
395
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:195
396
  msgctxt "dhl"
397
  msgid "Delivery Duty Unpaid"
398
  msgstr "Delivery Duty Unpaid"
399
 
400
  # @ woocommerce-germanized
401
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:196
402
  msgctxt "dhl"
403
  msgid "Delivery Duty Paid"
404
  msgstr "Delivery Duty Paid"
405
 
406
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:197
407
  msgctxt "dhl"
408
  msgid "Delivery Duty Paid (excl. VAT )"
409
  msgstr "Delivered Duty Paid (exkl. MwSt.)"
410
 
411
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:198
412
  msgctxt "dhl"
413
  msgid "Delivery Duty Paid (excl. Duties, taxes and VAT)"
414
  msgstr "Delivery Duty Paid (exkl. Zölle, Steuern und MwSt.)"
415
 
416
  # @ woocommerce-germanized
417
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:226
418
  msgctxt "age context"
419
  msgid "None"
420
  msgstr "Keine"
421
 
422
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:227
423
  msgctxt "dhl"
424
  msgid "Minimum age of 16"
425
  msgstr "Mindestens 16 Jahre"
426
 
427
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:228
428
  msgctxt "dhl"
429
  msgid "Minimum age of 18"
430
  msgstr "Mindestens 18 Jahre"
431
 
432
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:253
433
  msgctxt "dhl"
434
  msgid "Shipment #{shipment_id} to order {order_id}"
435
  msgstr "Sendung #{shipment_id} zur Bestellung {order_id}"
436
 
437
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:269
438
  msgctxt "dhl"
439
  msgid "Return #{shipment_id} to order {order_id}"
440
  msgstr "Retoure #{shipment_id} zur Bestellung {order_id}"
441
 
442
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:285
443
  msgctxt "dhl"
444
  msgid "Return shipment #{shipment_id} to order #{order_id}"
445
  msgstr "Retourensendung #{shipment_id} zur Bestellung #{order_id}"
446
 
447
  # @ woocommerce-germanized
448
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:365
449
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:188
450
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:496
451
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:836
452
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder.php:38
453
  msgctxt "dhl"
454
  msgid "Packstation"
455
  msgstr "Packstation"
456
 
457
  # @ woocommerce-germanized
458
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:366
459
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:367
460
  msgctxt "dhl"
461
  msgid "Postfiliale"
462
  msgstr "Postfiliale"
463
 
464
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:451
465
  msgctxt "dhl"
466
  msgid "Receiver is missing or does not exist."
467
  msgstr "Empfänger fehlt oder existiert nicht."
468
 
469
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:470
470
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:555
471
  #, php-format
472
  msgctxt "dhl"
473
  msgid "Shipment order #%s does not exist"
474
  msgstr "Bestellung zur Sendung #%s existiert nicht"
475
 
476
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:481
477
+ msgctxt "dhl"
478
+ msgid "The services chosen are not available for the current product."
479
+ msgstr "Die ausgewählten Services sind für dieses Produkt nicht verfügbar."
480
+
481
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:521
482
+ #, php-format
483
+ msgctxt "dhl"
484
+ msgid "Deutsche Post product is missing for %s."
485
+ msgstr "Deutsche Post Produkt fehlt oder ist nicht verfügbar für %s."
486
+
487
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:597
488
  #, php-format
489
  msgctxt "dhl"
490
  msgid "%s of the return address is a mandatory field."
491
  msgstr "%s der Rücksendeadresse ist ein Pflichtfeld."
492
 
493
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:602
494
  msgctxt "dhl"
495
  msgid "Please either add a return company or name."
496
  msgstr ""
497
  "Bitte geben Sie entweder einen Firmennamen oder Namen für die "
498
  "Rücksendeadresse an."
499
 
500
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:621
501
  msgctxt "dhl"
502
  msgid "Error while parsing preferred day."
503
  msgstr "Fehler beim Einlesen des Wunschtags."
504
 
505
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:632
506
  msgctxt "dhl"
507
  msgid "Error while parsing preferred time."
508
  msgstr "Fehler beim Einlesen der Wunschzeit."
509
 
510
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:657
511
  msgctxt "dhl"
512
  msgid "The visual min age check is invalid."
513
  msgstr "Das Alter der Alterssichtprüfung ist ungültig."
514
 
515
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:681
516
  msgctxt "dhl"
517
  msgid "The ident min age check is invalid."
518
  msgstr "Das Alter des Ident-Checks ist ungültig."
519
 
520
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:688
521
  msgctxt "dhl"
522
  msgid "There was an error parsing the date of birth for the identity check."
523
  msgstr ""
524
  "Beim Einlesen des Geburtsdatums für den Ident-Check trat ein Problem auf."
525
 
526
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:693
527
  msgctxt "dhl"
528
  msgid ""
529
  "Either a minimum age or a date of birth must be added to the ident check."
532
  "hinzugefügt werden."
533
 
534
  # @ woocommerce-germanized
535
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:707
536
  #, php-format
537
  msgctxt "dhl"
538
  msgid "%s duties element does not exist."
539
  msgstr "%s Zollabgabe existiert nicht."
540
 
541
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1299
542
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1383
543
  msgctxt "dhl"
544
  msgid "Invalid shipment"
545
  msgstr "Ungültige Sendung"
546
 
547
  # @ woocommerce-germanized
548
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1303
549
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1387
550
  msgctxt "dhl"
551
  msgid "Order does not exist"
552
  msgstr "Bestellung existiert nicht"
553
 
554
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1335
555
  msgctxt "dhl"
556
  msgid "Error while creating the label instance"
557
  msgstr "Fehler beim Erstellen der Label-Instanz"
558
 
559
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1455
560
  msgctxt "dhl"
561
  msgid "Invalid label"
562
  msgstr "Ungültiges Label"
563
 
564
  # @ woocommerce-germanized
565
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1543
566
  msgctxt "dhl"
567
  msgid "DHL Retoure International A"
568
  msgstr "DHL Retoure International A"
569
 
570
  # @ woocommerce-germanized
571
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1544
572
  msgctxt "dhl"
573
  msgid "DHL Retoure International B"
574
  msgstr "DHL Retoure International B"
575
 
576
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1553
577
  msgctxt "dhl"
578
  msgid "DHL Retoure Online"
579
  msgstr "DHL Retoure Online"
580
 
581
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1570
582
  msgctxt "dhl"
583
  msgid "DHL Paket Connect"
584
  msgstr "DHL Paket Connect"
585
 
586
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1571
587
  msgctxt "dhl"
588
  msgid "DHL Europaket (B2B)"
589
  msgstr "DHL Europaket (B2B)"
590
 
591
  # @ woocommerce-germanized
592
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1572
593
  msgctxt "dhl"
594
  msgid "DHL Paket International"
595
  msgstr "DHL Paket International"
596
 
597
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1647
598
  msgctxt "dhl"
599
  msgid "DHL Paket"
600
  msgstr "DHL Paket"
601
 
602
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1648
603
  msgctxt "dhl"
604
  msgid "DHL Paket PRIO"
605
  msgstr "DHL Paket PRIO"
606
 
607
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1649
608
  msgctxt "dhl"
609
  msgid "DHL Paket Taggleich"
610
  msgstr "DHL Paket Taggleich"
611
 
612
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1650
613
  msgctxt "dhl"
614
+ msgid "DHL Warenpost"
615
+ msgstr "DHL Warenpost"
616
 
617
+ #: woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php:1737
618
  msgctxt "dhl"
619
  msgid "Error while uploading label."
620
  msgstr "Fehler beim Hochladen des Labels."
621
 
622
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:57
623
+ msgctxt "dhl"
624
+ msgid "Refreshed data successfully."
625
+ msgstr "Daten erfolgreich aktualisiert."
626
+
627
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:57
628
+ #, php-format
629
+ msgctxt "dhl"
630
+ msgid ""
631
+ "Error while refreshing data. Please check your Internetmarke <a href=\"%s"
632
+ "\">logs</a>."
633
+ msgstr ""
634
+ "Fehler beim Datenabruf. Bitte prüfen Sie Ihre Internetmarke <a href=\"%s"
635
+ "\">Logs</a>."
636
+
637
  # @ woocommerce-germanized
638
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:174
639
  msgctxt "dhl"
640
  msgid "Receiver Ids"
641
  msgstr "Empfänger IDs"
642
 
643
  # @ woocommerce-germanized
644
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:181
645
  msgctxt "dhl"
646
  msgid "Receiver Id"
647
  msgstr "Empfänger ID"
648
 
649
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:181
650
  msgctxt "dhl"
651
  msgid "Find your Receiver Ids within your DHL contract data."
652
  msgstr "Die Empfänger IDs finden Sie im DHL Geschäftskundenportal."
653
 
654
  # @ woocommerce-germanized
655
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:182
656
  msgctxt "dhl"
657
  msgid "Country Code"
658
  msgstr "Ländercode"
659
 
660
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:182
661
  msgctxt "dhl"
662
  msgid "Leave empty to use the Receiver Id as fallback."
663
  msgstr "Leer lassen, um diese Empfänger ID als Fallback zu verwenden."
664
 
665
  # @ woocommerce-germanized
666
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:202
667
  msgctxt "dhl"
668
  msgid "+ Add receiver"
669
  msgstr "+ Empfänger hinzufügen"
670
 
671
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:202
672
  msgctxt "dhl"
673
  msgid "Remove selected receiver(s)"
674
  msgstr "Ausgewählte Empfänger löschen"
675
 
676
  # @ woocommerce-germanized
677
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:238
678
  msgctxt "dhl"
679
  msgid "Select a country"
680
  msgstr "Land auswählen"
681
 
682
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:240
683
  msgctxt "dhl"
684
+ msgid "HS-Code (DHL)"
685
+ msgstr "Zolltarifnummer (HS-Code, DHL)"
686
 
687
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:240
688
  msgctxt "dhl"
689
+ msgid ""
690
+ "The HS Code is a number assigned to every possible commodity that can be "
691
+ "imported or exported from any country."
692
  msgstr ""
693
+ "Das Harmonisierte System (HS) der Zollnomenklatur ist ein international "
694
+ "standardisiertes System von Namen und Nummern zur Klassifizierung "
695
+ "gehandelter Produkte."
696
 
697
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:241
698
  msgctxt "dhl"
699
  msgid "Country of manufacture (DHL)"
700
  msgstr "Herstellungsland (DHL)"
701
 
702
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:241
703
  msgctxt "dhl"
704
  msgid ""
705
  "The country of manufacture is needed for customs of international shipping."
707
  "Das Herstellungsland wird für die Zollabwicklung bei internationalen "
708
  "Sendungen benötigt."
709
 
710
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:262
711
  #, php-format
712
  msgctxt "dhl"
713
  msgid ""
717
  "Das Verzeichnis zum Speichern von DHL Labels fehlt. Bitte erstellen Sie den "
718
  "Ordner %s manuell und stellen Sie sicher, dass der Ordner beschreibbar ist."
719
 
720
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:269
721
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1460
722
+ #: woocommerce-germanized-dhl/src/ShippingProvider/DHL.php:39
723
  msgctxt "dhl"
724
  msgid "DHL"
725
  msgstr "DHL"
726
 
727
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:284
728
  msgctxt "dhl"
729
  msgid "DHL Label"
730
  msgstr "DHL Label"
731
 
732
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:296
733
  msgctxt "dhl"
734
  msgid ""
735
  "This label has been generated by the DHL for WooCommerce Plugin and is shown "
739
  "Kompatibilitäts-Gründen angezeigt."
740
 
741
  # @ woocommerce-germanized
742
+ #: woocommerce-germanized-dhl/src/Admin/Admin.php:297
743
  msgctxt "dhl"
744
  msgid "Download label"
745
  msgstr "Label downloaden"
746
 
747
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:33
748
  msgctxt "dhl"
749
  msgid "Enable DHL"
750
  msgstr "DHL aktivieren"
751
 
752
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:34
753
  msgctxt "dhl"
754
  msgid ""
755
  "If you want to ship your shipments via DHL and create labels to your "
758
  "Wenn Sie Ihre Sendungen mit DHL verschicken und Labels zu Ihren Sendungen "
759
  "erzeugen möchten, aktivieren Sie die DHL Integration."
760
 
761
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:47
762
  msgctxt "dhl"
763
  msgid "Customer Number"
764
  msgstr "Kundennummer"
765
 
766
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:48
767
  msgctxt "dhl"
768
  msgid ""
769
  "Insert your DHL business customer number (EKP) here. If you are not yet a "
773
  "Geschäftskunde sind, sollten Sie sich zuerst als Geschäftskunde bei DHL "
774
  "registrieren."
775
 
776
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:61
777
  msgctxt "dhl"
778
  msgid "API Access"
779
  msgstr "API Versionen"
780
 
781
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:62
782
  msgctxt "dhl"
783
  msgid ""
784
  "To create labels and embed DHL services, our software needs access to the "
788
  "Software Zugang zur API. Sie sollten hier Ihre Zugangsdaten zum DHL "
789
  "Geschäftskundenportal eingeben."
790
 
791
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:80
792
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:328
793
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:477
794
  msgctxt "dhl"
795
  msgid "Inlay Returns"
796
  msgstr "Beilageretouren"
797
 
798
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:81
799
  msgctxt "dhl"
800
  msgid ""
801
  "If you want to provide your customers with inlay return labels for your "
804
  "Wenn Sie Beilageretouren-Labels zu Ihren Sendungen hinzufügen möchten, "
805
  "sollten Sie diese Funktion standardmäßig aktivieren."
806
 
807
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:94
808
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:723
809
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:953
810
  msgctxt "dhl"
811
  msgid "Retoure"
812
  msgstr "Retoure"
813
 
814
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:95
815
  msgctxt "dhl"
816
  msgid ""
817
  "If you want to create DHL labels to returns you should activate this "
822
  "aktivieren. Stellen Sie sicher, dass DHL Online Retoure in Ihrem Vertrag "
823
  "freigeschaltet ist."
824
 
825
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:108
826
  msgctxt "dhl"
827
  msgid "Age verification"
828
  msgstr "Altersverifikation"
829
 
830
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:109
831
  msgctxt "dhl"
832
  msgid ""
833
  "Use this feature to sync the Germanized age verification checkbox with the "
840
  "„Alterssichtprüfung“ von DHL automatisch aktiviert."
841
 
842
  # @ woocommerce-germanized
843
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:122
844
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:747
845
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1369
846
  msgctxt "dhl"
847
  msgid "Automation"
848
  msgstr "Automatisierung"
849
 
850
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:123
851
  msgctxt "dhl"
852
  msgid ""
853
  "You might want to save some time and let Germanized generate labels "
857
  "automatisch erzeugen lassen, sobald eine Sendung in einen bestimmten Status "
858
  "wechselt."
859
 
860
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:142
861
  msgctxt "dhl"
862
  msgid ""
863
  "Let your customers choose a preferred day (if the service is available at "
867
  "Kundenadresse zur Verfügung steht) für die Lieferung in der Kasse auswählen."
868
 
869
  # @ woocommerce-germanized
870
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:155
871
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:982
872
  msgctxt "dhl"
873
  msgid "Fee"
874
  msgstr "Gebühr"
875
 
876
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:156
877
  msgctxt "dhl"
878
  msgid ""
879
  "Optionally charge your customers an additional fee for preferred services "
882
  "Optional können Sie die Gebühr für die Auswahl des Wunschtags oder anderer "
883
  "Wunschpaket-Services an Ihre Kunden weiterreichen."
884
 
885
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:170
886
  msgctxt "dhl"
887
  msgid ""
888
  "Allow your customers to send their parcels to a preferred location e.g. a "
891
  "Lassen Sie Ihre Kunden einen Wunschort für die Abgabe ihres Pakets in der "
892
  "Kasse auswählen. Dieser Service wird von DHL nicht zusätzlich berechnet."
893
 
894
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:189
895
  msgctxt "dhl"
896
  msgid ""
897
  "Allow your customers to choose packstation (and/or other DHL location types "
900
  "Lassen Sie Ihre Kunden eine Packstation (und/oder andere DHL Standorte, wie "
901
  "im Folgenden konfiguriert) als Lieferadresse auswählen."
902
 
903
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:202
904
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1130
905
  msgctxt "dhl"
906
  msgid "Map"
907
  msgstr "Karte"
908
 
909
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:203
910
  msgctxt "dhl"
911
  msgid ""
912
  "This option adds a map overlay view to let your customers choose a DHL "
917
  "DHL Standortes in der Nähe noch einfacher zu machen. Sie benötigen für die "
918
  "Kartenansicht einen gültigen Google Maps API Schlüssel."
919
 
920
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:223
921
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1167
922
  msgctxt "dhl"
923
  msgid "Enable"
924
  msgstr "Aktivieren"
925
 
926
  # @ woocommerce-germanized
927
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:224
928
  msgctxt "dhl"
929
  msgid "Enable DHL integration."
930
  msgstr "DHL Integration aktivieren."
931
 
932
  # @ woocommerce-germanized
933
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:231
934
  msgctxt "dhl"
935
  msgid "Customer Number (EKP)"
936
  msgstr "Kundennummer (EKP)"
937
 
938
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:233
939
  #, php-format
940
  msgctxt "dhl"
941
  msgid ""
945
  "Ihre 10-stellige DHL Kundennummer (EKP). Finden Sie Ihre %s im DHL "
946
  "Geschäftskundenportal."
947
 
948
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:233
949
  msgctxt "dhl"
950
  msgid "customer number"
951
  msgstr "Kundennummer"
952
 
953
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:242
954
  msgctxt "dhl"
955
  msgid "API"
956
  msgstr "API"
957
 
958
  # @ woocommerce-germanized
959
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:245
960
  msgctxt "dhl"
961
  msgid "Enable Sandbox"
962
  msgstr "Sandbox aktivieren"
963
 
964
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:246
965
  msgctxt "dhl"
966
  msgid "Activate Sandbox mode for testing purposes."
967
  msgstr "Aktiviere den Sandbox Modus."
968
 
969
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:253
970
  msgctxt "dhl"
971
  msgid "Live Username"
972
  msgstr "Benutzer"
973
 
974
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:255
975
  #, php-format
976
  msgctxt "dhl"
977
  msgid ""
981
  "Ihr Benutzername zum DHL Geschäftskundenportal. Bitte beachten Sie die "
982
  "Kleinschreibung und testen Sie Ihre Zugangsdaten vorab %s."
983
 
984
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:255
985
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:264
986
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:273
987
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:282
988
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:299
989
  msgctxt "dhl"
990
  msgid "here"
991
  msgstr "hier"
992
 
993
  # @ woocommerce-germanized
994
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:262
995
  msgctxt "dhl"
996
  msgid "Live Password"
997
  msgstr "Passwort"
998
 
999
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:264
1000
  #, php-format
1001
  msgctxt "dhl"
1002
  msgid ""
1008
  "der Gültigkeit des Passworts nach 3 (Standard-Benutzer) bzw. 12 (System-"
1009
  "Benutzer) Monaten und testen Sie Ihre Zugangsdaten vorab %s."
1010
 
1011
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:271
1012
  msgctxt "dhl"
1013
  msgid "Sandbox Username"
1014
  msgstr "Sandbox Benutzername"
1015
 
1016
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:273
1017
  #, php-format
1018
  msgctxt "dhl"
1019
  msgid ""
1023
  "Ihr Benutzername zum DHL Entwicklerportal. Bitte beachten Sie die "
1024
  "Kleinschreibung und testen Sie Ihre Zugangsdaten vorab %s."
1025
 
1026
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:280
1027
  msgctxt "dhl"
1028
  msgid "Sandbox Password"
1029
  msgstr "Sandbox Passwort"
1030
 
1031
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:282
1032
  #, php-format
1033
  msgctxt "dhl"
1034
  msgid ""
1038
  "Ihr Passwort zum DHL Entwicklerportal. Bitte testen Sie Ihre Zugangsdaten "
1039
  "vorab %s."
1040
 
1041
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:295
1042
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:338
1043
  msgctxt "dhl"
1044
  msgid "Products and Participation Numbers"
1045
  msgstr "Produkte und Teilnahmenummern"
1046
 
1047
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:299
1048
  #, php-format
1049
  msgctxt "dhl"
1050
  msgid ""
1054
  "Bitte fügen Sie Ihre Teilnahmenummer für das dazugehörige Produkt ein. Sie "
1055
  "können die anderen Teilnahmenummern später %s anpassen."
1056
 
1057
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:338
1058
  #, php-format
1059
  msgctxt "dhl"
1060
  msgid ""
1068
  "letzten beiden Zeichen der dazugehörigen Abrechnungsnummer, die Sie in Ihren "
1069
  "%s finden (z.B.: 01)."
1070
 
1071
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:338
1072
  msgctxt "dhl"
1073
  msgid "contract data"
1074
  msgstr "Vertragsdaten"
1075
 
1076
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:392
1077
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1200
1078
  msgctxt "dhl"
1079
  msgid "Domestic Default Service"
1080
  msgstr "Nationaler Standard Service"
1081
 
1082
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:396
1083
  msgctxt "dhl"
1084
  msgid ""
1085
  "Please select your default DHL shipping service for domestic shipments that "
1090
  "für Ihre Kunden anbieten (Sie können das Produkt für jede einzelne Sendung "
1091
  "nachträglich ändern)."
1092
 
1093
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:402
1094
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1220
1095
  msgctxt "dhl"
1096
  msgid "Int. Default Service"
1097
  msgstr "Internationaler Standard Service"
1098
 
1099
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:406
1100
  msgctxt "dhl"
1101
  msgid ""
1102
  "Please select your default DHL shipping service for cross-border shipments "
1108
  "Sendung nachträglich ändern)."
1109
 
1110
  # @ woocommerce-germanized
1111
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:412
1112
  msgctxt "dhl"
1113
  msgid "Default Duty"
1114
  msgstr "Standard Zoll"
1115
 
1116
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:416
1117
  msgctxt "dhl"
1118
  msgid "Please select a default duty type."
1119
  msgstr "Bitte wählen Sie eine Standard-Zollabrechnung aus."
1120
 
1121
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:423
1122
  msgctxt "dhl"
1123
  msgid "Codeable"
1124
  msgstr "Leitcodierbar"
1125
 
1126
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:424
1127
  msgctxt "dhl"
1128
  msgid "Generate label only if address can be automatically retrieved DHL."
1129
  msgstr "Erzeuge Labels nur dann, wenn die Adresse von DHL erkannt wird."
1130
 
1131
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:428
1132
  msgctxt "dhl"
1133
  msgid ""
1134
  "Choose this option if you want to make sure that by default labels are only "
1139
  "ist."
1140
 
1141
  # @ woocommerce-germanized
1142
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:432
1143
  msgctxt "dhl"
1144
  msgid "Default weight (kg)"
1145
  msgstr "Standardgewicht (kg)"
1146
 
1147
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:434
1148
  msgctxt "dhl"
1149
  msgid ""
1150
  "Choose a default shipment weight to be used for labels if no weight has been "
1153
  "Wählen Sie ein Standard Sendungsgewicht aus das für Labels verwendet wird, "
1154
  "für die das Gewicht nicht automatisch bestimmt werden kann."
1155
 
1156
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:443
1157
  msgctxt "dhl"
1158
  msgid "Minimum weight (kg)"
1159
  msgstr "Mindestgewicht (kg)"
1160
 
1161
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:445
1162
  msgctxt "dhl"
1163
  msgid ""
1164
  "Choose a minimum weight to be used for labels e.g. to prevent low shipment "
1168
  "wegen eines zu geringen Gewichts Fehler zurückgibt."
1169
 
1170
  # @ woocommerce-germanized
1171
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:457
1172
  msgctxt "dhl"
1173
  msgid "Force email"
1174
  msgstr "E-Mail übertragen"
1175
 
1176
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:458
1177
  msgctxt "dhl"
1178
  msgid "Force transferring customer email to DHL."
1179
  msgstr "E-Mail-Adresse des Kunden immer an DHL übertragen."
1180
 
1181
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:458
1182
  msgctxt "dhl"
1183
  msgid ""
1184
  "By default the customer email address is only transferred in case explicit "
1195
  "bevor Sie diese Option aktivieren."
1196
 
1197
  # @ woocommerce-germanized
1198
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:464
1199
  msgctxt "dhl"
1200
  msgid "Street number"
1201
  msgstr "Hausnummer"
1202
 
1203
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:465
1204
  msgctxt "dhl"
1205
  msgid ""
1206
  "Force existence of a street number within the first address field during "
1209
  "Hausnummer im ersten Adressfeld verpflichtend abfragen, falls es sich um ein "
1210
  "EU-Land handelt."
1211
 
1212
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:466
1213
  msgctxt "dhl"
1214
  msgid ""
1215
  "Enabling this option will force a street number to be provided during "
1220
  "Adressfeld in der Kasse abgefragt wird. Damit verhindern Sie fehlende oder "
1221
  "falsche Datensätze."
1222
 
1223
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:478
1224
  msgctxt "dhl"
1225
  msgid ""
1226
  "Additionally create inlay return labels for shipments that support returns."
1228
  "Erzeuge zusätzlich Beilage-Retourenlabels für Sendungen die Retouren "
1229
  "unterstützen."
1230
 
1231
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:497
1232
  msgctxt "dhl"
1233
  msgid "Enable delivery to Packstation."
1234
  msgstr "Aktiviere den Versand an Packstationen."
1235
 
1236
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:498
1237
  msgctxt "dhl"
1238
  msgid "Let customers choose a Packstation as delivery address."
1239
  msgstr "Kunden eine Packstation als Lieferadresse auswählen lassen."
1240
 
1241
  # @ woocommerce-germanized
1242
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:505
1243
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder.php:50
1244
  msgctxt "dhl"
1245
  msgid "Postoffice"
1246
  msgstr "Postfiliale"
1247
 
1248
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:506
1249
  msgctxt "dhl"
1250
  msgid "Enable delivery to Post Offices."
1251
  msgstr "Aktiviere den Versand an Postfilialen."
1252
 
1253
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:507
1254
  msgctxt "dhl"
1255
  msgid "Let customers choose a Post Office as delivery address."
1256
  msgstr "Kunden eine Postfiliale als Lieferadresse auswählen lassen."
1257
 
1258
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:514
1259
  msgctxt "dhl"
1260
  msgid "Parcel Shop"
1261
  msgstr "Paketshop"
1262
 
1263
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:515
1264
  msgctxt "dhl"
1265
  msgid "Enable delivery to Parcel Shops."
1266
  msgstr "Lieferung an Paketshops aktivieren."
1267
 
1268
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:516
1269
  msgctxt "dhl"
1270
  msgid "Let customers choose a Parcel Shop as delivery address."
1271
  msgstr "Kunden einen Paketshop als Lieferadresse auswählen lassen."
1272
 
 
 
 
 
 
1273
  #: woocommerce-germanized-dhl/src/Admin/Settings.php:535
1274
  msgctxt "dhl"
 
 
 
 
 
 
 
1275
  msgid "Enable the GoGreen Service by default."
1276
  msgstr "Buche den GoGreen Service hinzu."
1277
 
1278
  # @ woocommerce-germanized
1279
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:541
1280
  msgctxt "dhl"
1281
  msgid "Additional Insurance"
1282
  msgstr "Transportversicherung"
1283
 
1284
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:542
1285
  msgctxt "dhl"
1286
  msgid "Add an additional insurance to labels."
1287
  msgstr "Füge eine Transportversicherung zur Sendung hinzu."
1288
 
1289
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:548
1290
  msgctxt "dhl"
1291
  msgid "Retail Outlet Routing"
1292
  msgstr "Filialrouting"
1293
 
1294
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:549
1295
  msgctxt "dhl"
1296
  msgid ""
1297
  "Send undeliverable items to nearest retail outlet instead of immediate "
1300
  "Sende unzustellbare Sendungen in die nächstgelegene Filiale zur Abholung "
1301
  "anstelle diese direkt zurückzusenden."
1302
 
1303
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:555
1304
  msgctxt "dhl"
1305
  msgid "No Neighbor"
1306
  msgstr "Keine Nachbarschaftszustellung"
1307
 
1308
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:556
1309
  msgctxt "dhl"
1310
  msgid "Do not deliver to neighbors."
1311
  msgstr "Schließe eine Ersatzzustellung beim Nachbarn aus."
1312
 
1313
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:563
1314
  msgctxt "dhl"
1315
  msgid "Do only delivery to named person."
1316
  msgstr ""
1317
  "Lasse Pakete nur an den Empfänger persönlich oder an eine bevollmächtigte "
1318
  "Person übergeben."
1319
 
1320
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:569
1321
  msgctxt "dhl"
1322
  msgid "Bulky Goods"
1323
  msgstr "Sperrgut"
1324
 
1325
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:570
1326
  msgctxt "dhl"
1327
  msgid "Deliver as bulky goods."
1328
  msgstr "Sende Pakete als Sperrgut."
1329
 
1330
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:576
1331
  msgctxt "dhl"
1332
+ msgid "Minimum age (Visual check)"
1333
+ msgstr "Mindestalter (Visuell)"
1334
 
1335
  #: woocommerce-germanized-dhl/src/Admin/Settings.php:581
1336
  msgctxt "dhl"
1337
+ msgid "Choose this option if you want to let DHL check your customer's age."
1338
+ msgstr ""
1339
+ "Wählen Sie diese Option aus, wenn Sie das Alter durch DHL prüfen lassen "
1340
+ "möchten."
1341
+
1342
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:584
1343
+ msgctxt "dhl"
1344
+ msgid "Sync (Visual Check)"
1345
+ msgstr "Synchronisation (Visuell)"
1346
+
1347
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:585
1348
+ msgctxt "dhl"
1349
+ msgid "Visually verify age if shipment contains applicable items."
1350
  msgstr ""
1351
  "Aktiviere die Alterssichtprüfung, falls die Sendung zu prüfende Positionen "
1352
  "beinhaltet."
1353
 
1354
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:585
1355
  #, php-format
1356
  msgctxt "dhl"
1357
  msgid ""
1364
  "Alterssichtprüfung automatisch aktiviert, falls eine Sendung zu prüfenden "
1365
  "Produkte beinhaltet."
1366
 
1367
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:585
1368
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:600
1369
  msgctxt "dhl"
1370
  msgid "age verification checkbox"
1371
  msgstr "Checkbox zur Altersprüfung"
1372
 
1373
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:591
1374
+ msgctxt "dhl"
1375
+ msgid "Minimum age (Ident check)"
1376
+ msgstr "Mindestalter (Identität)"
1377
+
1378
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:596
1379
+ msgctxt "dhl"
1380
+ msgid ""
1381
+ "Choose this option if you want to let DHL check your customer's identity and "
1382
+ "age."
1383
+ msgstr ""
1384
+ "Wählen Sie diese Option aus, wenn Sie die Identität und das Alter durch DHL "
1385
+ "prüfen lassen möchten."
1386
+
1387
+ # @ woocommerce-germanized
1388
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:599
1389
+ msgctxt "dhl"
1390
+ msgid "Sync (Ident Check)"
1391
+ msgstr "Synchronisation (Identität)"
1392
+
1393
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:600
1394
+ msgctxt "dhl"
1395
+ msgid "Verify identity and age if shipment contains applicable items."
1396
+ msgstr ""
1397
+ "Aktiviere die Identitätsprüfung, falls die Sendung zu prüfende Positionen "
1398
+ "beinhaltet."
1399
+
1400
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:600
1401
+ #, php-format
1402
+ msgctxt "dhl"
1403
+ msgid ""
1404
+ "Germanized offers an %s to be enabled for certain products and/or product "
1405
+ "categories. By checking this option labels for shipments with applicable "
1406
+ "items will automatically have the identity check service enabled."
1407
+ msgstr ""
1408
+ "Germanized bietet eine %s an, die für spezielle Produkte aktiviert werden "
1409
+ "kann. Nach Aktivierung dieser Option, wird der Service für die "
1410
+ "Identitätsprüfung automatisch aktiviert, falls eine Sendung zu prüfenden "
1411
+ "Produkte beinhaltet."
1412
+
1413
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:607
1414
  msgctxt "dhl"
1415
  msgid "Premium delivery for international shipments."
1416
  msgstr "Premium Lieferung für internationale Sendungen."
1417
 
1418
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:626
1419
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1242
1420
  msgctxt "dhl"
1421
  msgid "Labels"
1422
  msgstr "Labels"
1423
 
1424
  # @ woocommerce-germanized
1425
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:627
1426
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1243
1427
  msgctxt "dhl"
1428
  msgid "Automatically create labels for shipments."
1429
  msgstr "Automatisch Labels zu Sendungen erstellen."
1430
 
1431
  # @ woocommerce-germanized
1432
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:634
1433
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:661
1434
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1250
1435
  msgctxt "dhl"
1436
  msgid "Status"
1437
  msgstr "Status"
1438
 
1439
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:638
1440
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1254
1441
  msgctxt "dhl"
1442
  msgid "Choose a shipment status which should trigger generation of a label."
1443
  msgstr ""
1445
  "soll."
1446
 
1447
  # @ woocommerce-germanized
1448
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:645
1449
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1261
1450
  msgctxt "dhl"
1451
  msgid "Shipment Status"
1452
  msgstr "Sendungsstatus"
1453
 
1454
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:646
1455
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1262
1456
  msgctxt "dhl"
1457
  msgid "Mark shipment as shipped after label has been created successfully."
1458
  msgstr ""
1459
  "Sendung als versandt markieren, sobald ein Label erfolgreich erstellt wurde."
1460
 
1461
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:653
1462
  msgctxt "dhl"
1463
  msgid "Returns"
1464
  msgstr "Retouren"
1465
 
1466
  # @ woocommerce-germanized
1467
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:654
1468
  msgctxt "dhl"
1469
  msgid "Automatically create labels for returns."
1470
  msgstr "Automatisch Retourenlabels zu Retourensendungen erstellen."
1471
 
1472
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:665
1473
  msgctxt "dhl"
1474
  msgid ""
1475
  "Choose a shipment status which should trigger generation of a return label."
1477
  "Wählen Sie einen Sendungsstatus aus, der die Erzeugung eines Retourenlabels "
1478
  "auslösen soll."
1479
 
1480
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:713
1481
  #, php-format
1482
  msgctxt "dhl"
1483
  msgid ""
1489
  "werden."
1490
 
1491
  # @ woocommerce-germanized
1492
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:713
1493
  msgctxt "dhl"
1494
  msgid "shipping method"
1495
  msgstr "Versandmethode"
1496
 
1497
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:723
1498
  #, php-format
1499
  msgctxt "dhl"
1500
  msgid ""
1505
  "API an. Stellen Sie sicher, dass Ihr %s DHL Retoure Online enthält."
1506
 
1507
  # @ woocommerce-germanized
1508
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:723
1509
  msgctxt "dhl"
1510
  msgid "contract"
1511
  msgstr "Vertrag"
1512
 
1513
  # @ woocommerce-germanized
1514
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:735
1515
  msgctxt "dhl"
1516
  msgid "Default Services"
1517
  msgstr "Standard-Services"
1518
 
1519
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:735
1520
  #, php-format
1521
  msgctxt "dhl"
1522
  msgid ""
1526
  "Passen Sie hier an, welche der Services als Standard für Ihre Labels gebucht "
1527
  "werden sollen. Finden Sie mehr über diese %s heraus."
1528
 
1529
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:735
1530
  msgctxt "dhl"
1531
  msgid "nationwide services"
1532
  msgstr "nationalen Services"
1533
 
1534
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:747
1535
  msgctxt "dhl"
1536
  msgid ""
1537
  "Choose whether and under which conditions labels for your shipments shall be "
1541
  "automatisch erzeugt werden sollen."
1542
 
1543
  # @ woocommerce-germanized
1544
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:758
1545
  msgctxt "dhl"
1546
  msgid "Shipper Address"
1547
  msgstr "Absenderadresse"
1548
 
1549
  # @ woocommerce-germanized
1550
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:782
1551
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:851
1552
  msgctxt "dhl"
1553
  msgid "Street Number"
1554
  msgstr "Hausnummer"
1555
 
1556
  # @ woocommerce-germanized
1557
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:803
1558
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:872
1559
  msgctxt "dhl"
1560
  msgid "Country"
1561
  msgstr "Land"
1562
 
1563
  # @ woocommerce-germanized
1564
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:827
1565
  msgctxt "dhl"
1566
  msgid "Inlay Return Address"
1567
  msgstr "Beilageretouren Adresse"
1568
 
1569
  # @ woocommerce-germanized
1570
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:896
1571
  msgctxt "dhl"
1572
  msgid "Bank Account"
1573
  msgstr "Bankkonto"
1574
 
1575
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:896
1576
  msgctxt "dhl"
1577
  msgid "Enter your bank details needed for services that use COD."
1578
  msgstr ""
1580
  "verwendet werden sollen."
1581
 
1582
  # @ woocommerce-germanized
1583
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:899
1584
  msgctxt "dhl"
1585
  msgid "Holder"
1586
  msgstr "Kontoinhaber"
1587
 
1588
  # @ woocommerce-germanized
1589
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:906
1590
  msgctxt "dhl"
1591
  msgid "Bank Name"
1592
  msgstr "Name der Bank"
1593
 
1594
  # @ woocommerce-germanized
1595
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:913
1596
  msgctxt "dhl"
1597
  msgid "IBAN"
1598
  msgstr "IBAN"
1599
 
1600
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:920
1601
  msgctxt "dhl"
1602
  msgid "BIC"
1603
  msgstr "BIC"
1604
 
1605
  # @ woocommerce-germanized
1606
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:927
1607
  msgctxt "dhl"
1608
  msgid "Payment Reference"
1609
  msgstr "Zahlungsreferenz"
1610
 
1611
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:931
1612
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:940
1613
  #, php-format
1614
  msgctxt "dhl"
1615
  msgid ""
1620
  "hinzufügen: %s. Der Text ist auf 35 Zeichen begrenzt."
1621
 
1622
  # @ woocommerce-germanized
1623
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:936
1624
  msgctxt "dhl"
1625
  msgid "Payment Reference 2"
1626
  msgstr "Zahlungsreferenz 2"
1627
 
1628
  # @ woocommerce-germanized
1629
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:954
1630
  msgctxt "dhl"
1631
  msgid "Enable creating labels for return shipments."
1632
  msgstr "Automatisch Retourenlabels zu Retourensendungen erstellen."
1633
 
1634
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:954
1635
  msgctxt "dhl"
1636
  msgid ""
1637
  "By enabling this option you might generate retoure labels for return "
1640
  "Mit der Aktivierung dieser Option können Sie Retourenlabels zu "
1641
  "Retourensendungen erstellen und diese per E-Mail an den Kunden weiterleiten."
1642
 
1643
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:975
1644
  msgctxt "dhl"
1645
  msgid "Enable preferred day delivery."
1646
  msgstr "Aktiviere die Lieferung am Wunschtag."
1647
 
1648
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:975
1649
  msgctxt "dhl"
1650
  msgid ""
1651
  "Enabling this option will display options for the user to select their "
1654
  "Diese Option aktiviert die Auswahl eines Wunschtags durch den Kunden in der "
1655
  "Kasse."
1656
 
1657
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:984
1658
  msgctxt "dhl"
1659
  msgid ""
1660
  "Insert gross value as surcharge for preferred day delivery. Insert 0 to "
1664
  "Setzen Sie den Wert auf 0 um den Service kostenlos anzubieten."
1665
 
1666
  # @ woocommerce-germanized
1667
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:995
1668
  msgctxt "dhl"
1669
  msgid "Enable preferred location delivery."
1670
  msgstr "Lieferung an einen Wunschort aktivieren."
1671
 
1672
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:995
1673
  msgctxt "dhl"
1674
  msgid ""
1675
  "Enabling this option will display options for the user to select their "
1678
  "Diese Option aktiviert die Auswahl eines Wunschorts durch den Kunden in der "
1679
  "Kasse ."
1680
 
1681
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1003
1682
  msgctxt "dhl"
1683
  msgid "Enable preferred neighbor delivery."
1684
  msgstr "Aktiviere die Lieferung an einen Wunschnachbarn."
1685
 
1686
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1003
1687
  msgctxt "dhl"
1688
  msgid ""
1689
  "Enabling this option will display options for the user to deliver to their "
1692
  "Diese Option aktiviert die Auswahl eines Wunschnachbarn durch den Kunden in "
1693
  "der Kasse."
1694
 
1695
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1029
1696
  msgctxt "dhl"
1697
  msgid "Cut-off time"
1698
  msgstr "Cut-off-Zeit"
1699
 
1700
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1032
1701
  msgctxt "dhl"
1702
  msgid ""
1703
  "The cut-off time is the latest possible order time up to which the minimum "
1710
  "Nach Überschreitung dieses Zeitpunktes, wird der früheste verfügbare "
1711
  "Wunschtag in der Kasse um einen Tag erhöht (Tag der Bestellung + 3 Werktage)."
1712
 
1713
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1038
1714
  msgctxt "dhl"
1715
  msgid "Preparation days"
1716
  msgstr "Bearbeitungstage"
1717
 
1718
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1041
1719
  msgctxt "dhl"
1720
  msgid ""
1721
  "If you need more time to prepare your shipments you might want to add a "
1726
  "hier eine statische Anzahl an Tagen hinterlegen, die zum frühesten "
1727
  "auswählbaren Wunschtag hinzugefügt werden."
1728
 
1729
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1048
1730
  msgctxt "dhl"
1731
  msgid "Exclude days of transfer"
1732
  msgstr "Übergabetage ausschließen"
1733
 
1734
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1049
1735
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:31
1736
  msgctxt "dhl"
1737
  msgid "Monday"
1738
  msgstr "Montag"
1739
 
1740
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1050
1741
  msgctxt "dhl"
1742
  msgid "Exclude days from transferring shipments to DHL."
1743
  msgstr "Schließen Sie bestimmte Wochentage für die Übergabe an DHL aus."
1744
 
1745
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1059
1746
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:32
1747
  msgctxt "dhl"
1748
  msgid "Tuesday"
1749
  msgstr "Dienstag"
1750
 
1751
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1068
1752
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:33
1753
  msgctxt "dhl"
1754
  msgid "Wednesday"
1755
  msgstr "Mittwoch"
1756
 
1757
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1077
1758
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:34
1759
  msgctxt "dhl"
1760
  msgid "Thursday"
1761
  msgstr "Donnerstag"
1762
 
1763
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1086
1764
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:35
1765
  msgctxt "dhl"
1766
  msgid "Friday"
1767
  msgstr "Freitag"
1768
 
1769
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1095
1770
  #: woocommerce-germanized-dhl/src/Api/FinderSoap.php:36
1771
  msgctxt "dhl"
1772
  msgid "Saturday"
1773
  msgstr "Samstag"
1774
 
1775
  # @ woocommerce-germanized
1776
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1104
1777
  msgctxt "dhl"
1778
  msgid "Exclude gateways"
1779
  msgstr "Zahlungsarten ausschließen"
1780
 
1781
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1106
1782
  msgctxt "dhl"
1783
  msgid "Select payment gateways to be excluded from showing preferred services."
1784
  msgstr ""
1785
  "Wählen Sie Zahlungsarten aus, für die die Wunschpaket-Services nicht zur "
1786
  "Verfügung stehen sollen."
1787
 
1788
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1131
1789
  msgctxt "dhl"
1790
  msgid "Let customers find a DHL location on a map."
1791
  msgstr "Lasse Kunden einen DHL Standort auf der Karte auswählen."
1792
 
1793
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1131
1794
  msgctxt "dhl"
1795
  msgid ""
1796
  "Enable this option to let your customers choose a pickup option from a map "
1801
  "anhand einer Karten in der Kasse zu ermöglichen. Wenn diese Option "
1802
  "deaktiviert ist, wird stattdessen auf die DHL Website verwiesen."
1803
 
1804
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1138
1805
  msgctxt "dhl"
1806
  msgid "Google Maps Key"
1807
  msgstr "Google Maps Schlüssel"
1808
 
1809
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1142
1810
  #, php-format
1811
  msgctxt "dhl"
1812
  msgid ""
1816
  "Um eine Karte integrieren zu können, benötigen Siee du einen gültigen API-"
1817
  "Schlüssel für Google Maps. Sie können %s."
1818
 
1819
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1142
1820
  msgctxt "dhl"
1821
  msgid "retrieve a new one"
1822
  msgstr "hier einen neuen erstellen"
1823
 
1824
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1147
1825
  msgctxt "dhl"
1826
  msgid "Limit results"
1827
  msgstr "Suchergebnisse begrenzen"
1828
 
1829
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1151
1830
  msgctxt "dhl"
1831
  msgid "Limit the number of DHL locations shown on the map"
1832
  msgstr "Begrenzt die Anzahl der angezeigten DHL Standorte auf der Karte"
1833
 
1834
  # @ woocommerce-germanized
1835
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1168
1836
  msgctxt "dhl"
1837
+ msgid "Enable Internetmarke integration."
1838
+ msgstr "Internetmarke Integration aktivieren."
1839
 
1840
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1175
1841
+ msgctxt "dhl"
1842
+ msgid "Username"
1843
+ msgstr "Benutzer"
1844
+
1845
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1177
1846
+ #, php-format
1847
+ msgctxt "dhl"
1848
+ msgid ""
1849
+ "Your credentials to the <a href=\"%s\" target=\"_blank\">Portokasse</a>. "
1850
+ "Please test your credentials before connecting."
1851
+ msgstr ""
1852
+ "Ihre Zugangsdaten zur <a href=\"%s\" target=\"_blank\">Portokasse</a>. Bitte "
1853
+ "testen Sie Ihre Zugangsdaten bevor Sie eine Verbindung aufbauen."
1854
+
1855
+ # @ woocommerce-germanized
1856
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1184
1857
+ msgctxt "dhl"
1858
+ msgid "Password"
1859
+ msgstr "Passwort"
1860
+
1861
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1204
1862
+ msgctxt "dhl"
1863
+ msgid ""
1864
+ "Please select your default shipping service for domestic shipments that you "
1865
+ "want to offer to your customers (you can always change this within each "
1866
+ "individual shipment afterwards)."
1867
+ msgstr ""
1868
+ "Bitte wählen Sie das Standard-Produkt für nationale Sendungen aus, das Sie "
1869
+ "für Ihre Kunden anbieten."
1870
+
1871
+ # @ woocommerce-germanized
1872
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1210
1873
+ msgctxt "dhl"
1874
+ msgid "EU Default Service"
1875
+ msgstr "Standard Service (EU)"
1876
+
1877
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1214
1878
+ msgctxt "dhl"
1879
+ msgid ""
1880
+ "Please select your default shipping service for EU shipments that you want "
1881
+ "to offer to your customers."
1882
+ msgstr ""
1883
+ "Bitte wählen Sie das Standard-Produkt für EU Sendungen aus, das Sie für Ihre "
1884
+ "Kunden anbieten."
1885
+
1886
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1224
1887
+ msgctxt "dhl"
1888
+ msgid ""
1889
+ "Please select your default shipping service for cross-border shipments that "
1890
+ "you want to offer to your customers."
1891
+ msgstr ""
1892
+ "Bitte wählen Sie das Standard-Produkt für internationale Sendungen aus, das "
1893
+ "Sie für Ihre Kunden anbieten."
1894
+
1895
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1281
1896
+ msgctxt "dhl"
1897
+ msgid "Default Format"
1898
+ msgstr "Standardformat"
1899
+
1900
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1284
1901
+ #, php-format
1902
+ msgctxt "dhl"
1903
+ msgid ""
1904
+ "Choose a print format which will be selected by default when creating "
1905
+ "labels. Manually <a href=\"%s\">refresh</a> available print formats to make "
1906
+ "sure the list is up-to-date."
1907
+ msgstr ""
1908
+ "Wählen Sie ein Seitenformat aus, das für den Druck der Labels standardmäßig "
1909
+ "verwendet wird. Sie können die Liste auch manuell <a href=\"%s"
1910
+ "\">aktualisieren</a>, falls notwendig."
1911
+
1912
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1311
1913
+ msgctxt "dhl"
1914
+ msgid "Portokasse"
1915
+ msgstr "Portokasse"
1916
+
1917
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1314
1918
+ msgctxt "dhl"
1919
+ msgid "Balance"
1920
+ msgstr "Guthaben"
1921
+
1922
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1321
1923
+ msgctxt "dhl"
1924
+ msgid "Charge (€)"
1925
+ msgstr "Aufladen (€)"
1926
+
1927
+ # @ woocommerce-germanized
1928
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1331
1929
+ msgctxt "dhl"
1930
+ msgid "Products"
1931
+ msgstr "Produkte"
1932
+
1933
+ # @ woocommerce-germanized
1934
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1334
1935
+ msgctxt "dhl"
1936
+ msgid "Available Products"
1937
+ msgstr "Verfügbare Produkte"
1938
+
1939
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1337
1940
+ #, php-format
1941
+ msgctxt "dhl"
1942
+ msgid ""
1943
+ "Choose the products you want to be available for your shipments from the "
1944
+ "list above. Manually <a href=\"%s\">refresh</a> the product list to make "
1945
+ "sure it is up-to-date."
1946
+ msgstr ""
1947
+ "Wählen Sie die Produkte aus die beim Erzeugen der Labels zur Verfügung "
1948
+ "stehen sollen. Sie können die Produktliste auch manuell <a href=\"%s"
1949
+ "\">aktualisieren</a>, falls notwendig."
1950
+
1951
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1362
1952
+ msgctxt "dhl"
1953
+ msgid "API Error"
1954
+ msgstr "API Fehler"
1955
+
1956
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1421
1957
+ msgctxt "dhl"
1958
+ msgid "Charge Portokasse"
1959
+ msgstr "Portokasse aufladen"
1960
+
1961
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1422
1962
+ #, php-format
1963
+ msgctxt "dhl"
1964
+ msgid "The minimum amount is %s"
1965
+ msgstr "Der Minimalbetrag beträgt %s"
1966
+
1967
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1432
1968
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1434
1969
+ msgctxt "dhl"
1970
+ msgid "Not yet a customer?"
1971
+ msgstr "Noch kein Geschäftskunde?"
1972
+
1973
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1462
1974
+ msgctxt "dhl"
1975
+ msgid "Internetmarke"
1976
+ msgstr "Internetmarke"
1977
+
1978
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1463
1979
  msgctxt "dhl"
1980
  msgid "Preferred Services"
1981
  msgstr "Wunschpaket"
1982
 
1983
+ #: woocommerce-germanized-dhl/src/Admin/Settings.php:1464
1984
  msgctxt "dhl"
1985
  msgid "Parcel Pickup"
1986
  msgstr "Standorte"
2002
  msgid "%s %s"
2003
  msgstr "%s %s"
2004
 
2005
+ #: woocommerce-germanized-dhl/src/Api/ImProductList.php:280
2006
+ msgctxt "dhl"
2007
+ msgid "PRIO"
2008
+ msgstr "PRIO"
2009
+
2010
+ #: woocommerce-germanized-dhl/src/Api/ImProductList.php:281
2011
+ msgctxt "dhl"
2012
+ msgid "Einschreiben (Einwurf)"
2013
+ msgstr "Einschreiben (Einwurf)"
2014
+
2015
+ #: woocommerce-germanized-dhl/src/Api/ImProductList.php:282
2016
+ msgctxt "dhl"
2017
+ msgid "Einschreiben"
2018
+ msgstr "Einschreiben"
2019
+
2020
+ #: woocommerce-germanized-dhl/src/Api/ImProductList.php:283
2021
+ msgctxt "dhl"
2022
+ msgid "Einschreiben (Eigenhändig)"
2023
+ msgstr "Einschreiben (Eigenhändig)"
2024
+
2025
+ #: woocommerce-germanized-dhl/src/Api/ImProductList.php:284
2026
+ msgctxt "dhl"
2027
+ msgid "Alterssichtprüfung 16"
2028
+ msgstr "Alterssichtprüfung 16"
2029
+
2030
+ #: woocommerce-germanized-dhl/src/Api/ImProductList.php:285
2031
+ msgctxt "dhl"
2032
+ msgid "Alterssichtprüfung 18"
2033
+ msgstr "Alterssichtprüfung 18"
2034
+
2035
+ #: woocommerce-germanized-dhl/src/Api/ImProductList.php:286
2036
+ msgctxt "dhl"
2037
+ msgid "Zusatzentgelt MBf"
2038
+ msgstr "Zusatzentgelt MBf"
2039
+
2040
+ #: woocommerce-germanized-dhl/src/Api/ImProductList.php:287
2041
+ msgctxt "dhl"
2042
+ msgid "Unterschrift"
2043
+ msgstr "Unterschrift"
2044
+
2045
+ #: woocommerce-germanized-dhl/src/Api/ImProductList.php:288
2046
+ msgctxt "dhl"
2047
+ msgid "Tracked"
2048
+ msgstr "Tracked"
2049
+
2050
+ #: woocommerce-germanized-dhl/src/Api/ImWarenpostIntRest.php:43
2051
+ #: woocommerce-germanized-dhl/src/Api/ImWarenpostIntRest.php:52
2052
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:484
2053
+ msgctxt "dhl"
2054
+ msgid "Error while fetching label PDF"
2055
+ msgstr "Fehler beim Download des PDF Labels"
2056
+
2057
+ # @ woocommerce-germanized
2058
+ #: woocommerce-germanized-dhl/src/Api/ImWarenpostIntRest.php:77
2059
+ msgctxt "dhl"
2060
+ msgid "Missing shipment"
2061
+ msgstr "Fehlende Sendung"
2062
+
2063
+ #: woocommerce-germanized-dhl/src/Api/ImWarenpostIntRest.php:168
2064
+ msgctxt "dhl"
2065
+ msgid "Invalid API response"
2066
+ msgstr "Fehlerhafte API Rückmeldung"
2067
+
2068
+ #: woocommerce-germanized-dhl/src/Api/ImWarenpostIntRest.php:192
2069
+ msgctxt "dhl"
2070
+ msgid "Error while authenticating user."
2071
+ msgstr "Fehler beim Autorisieren des Benutzers."
2072
+
2073
+ #: woocommerce-germanized-dhl/src/Api/ImWarenpostIntRest.php:278
2074
+ msgctxt "dhl"
2075
+ msgid "Error during Warenpost International request."
2076
+ msgstr "Fehler beim Aufruf der Warenpost International API."
2077
+
2078
+ # @ woocommerce-germanized
2079
+ #: woocommerce-germanized-dhl/src/Api/ImWarenpostIntRest.php:296
2080
+ #, php-format
2081
+ msgctxt "dhl"
2082
+ msgid "Error during request: %s"
2083
+ msgstr "Fehler beim API Zugriff: %s"
2084
+
2085
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:64
2086
+ #: woocommerce-germanized-dhl/src/Api/Soap.php:54
2087
+ #: woocommerce-germanized-dhl/src/Package.php:84
2088
+ #, php-format
2089
+ msgctxt "dhl"
2090
+ msgid ""
2091
+ "To enable communication between your shop and DHL, the PHP <a href=\"%s"
2092
+ "\">SOAPClient</a> is required. Please contact your host and make sure that "
2093
+ "SOAPClient is <a href=\"%s\">installed</a>."
2094
+ msgstr ""
2095
+ "Um die Kommunikation zwischen DHL und Ihrem Shop zu ermöglichen, ist der PHP "
2096
+ "<a href=\"%s\">SOAPClient</a> notwendig. Bitte kontaktieren Sie dazu im "
2097
+ "Zweifel Ihren Hoster und stellen Sie sicher, dass der SOAPClient <a href=\"%s"
2098
+ "\">installiert</a> ist."
2099
+
2100
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:69
2101
+ #, php-format
2102
+ msgctxt "dhl"
2103
+ msgid "Error while instantiating main Internetmarke API: %s"
2104
+ msgstr "Fehler beim Aufruf der Internetmarke API: %s"
2105
+
2106
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:73
2107
+ msgctxt "dhl"
2108
+ msgid "Internetmarke is disabled. Please enable Internetmarke."
2109
+ msgstr "Internetmarke ist deaktiviert. Bitte aktivieren Sie die Internetmarke."
2110
+
2111
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:84
2112
+ msgctxt "dhl"
2113
+ msgid "Wrong username or password"
2114
+ msgstr "Falscher Benutzername oder Passwort"
2115
+
2116
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:246
2117
+ #, php-format
2118
+ msgctxt "dhl"
2119
+ msgid "until %s"
2120
+ msgstr "bis %s"
2121
+
2122
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:331
2123
+ #, php-format
2124
+ msgctxt "dhl"
2125
+ msgid "Length: %s"
2126
+ msgstr "Länge: %s"
2127
+
2128
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:335
2129
+ #, php-format
2130
+ msgctxt "dhl"
2131
+ msgid "Width: %s"
2132
+ msgstr "Breite: %s"
2133
+
2134
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:339
2135
+ #, php-format
2136
+ msgctxt "dhl"
2137
+ msgid "Height: %s"
2138
+ msgstr "Höhe: %s"
2139
+
2140
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:343
2141
+ #, php-format
2142
+ msgctxt "dhl"
2143
+ msgid "Weight: %s"
2144
+ msgstr "Gewicht: %s"
2145
+
2146
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:348
2147
+ msgctxt "dhl"
2148
+ msgid "Total"
2149
+ msgstr "Gesamt"
2150
+
2151
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:538
2152
+ #, php-format
2153
+ msgctxt "dhl"
2154
+ msgid "Could not refund post label: %s"
2155
+ msgstr "Deutsche Post Label konnte nicht rückerstattet werden: %s"
2156
+
2157
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:552
2158
+ msgctxt "dhl"
2159
+ msgid "Refund API could not be instantiated"
2160
+ msgstr "Die API für Rückerstattungen konnte nicht initialisiert werden"
2161
+
2162
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:641
2163
+ #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:379
2164
+ #: woocommerce-germanized-dhl/src/Api/ReturnRest.php:34
2165
+ #, php-format
2166
+ msgctxt "dhl"
2167
+ msgid "Could not fetch shipment %d."
2168
+ msgstr "Sendung %d konnte nicht gefunden werden."
2169
+
2170
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:681
2171
+ msgctxt "dhl"
2172
+ msgid "Error while generating shop order id."
2173
+ msgstr "Fehler beim Erzeugen der Shop Order Id."
2174
+
2175
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:691
2176
+ #, php-format
2177
+ msgctxt "dhl"
2178
+ msgid ""
2179
+ "Error while trying to purchase the stamp. Please manually <a href=\"%s"
2180
+ "\">refresh</a> your product database and try again."
2181
+ msgstr ""
2182
+ "Fehler beim Kauf des Labels. Bitte <a href=\"%s\">aktualisieren</a>Sie die "
2183
+ "Produktliste manuell und versuchen Sie es erneut."
2184
+
2185
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:734
2186
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:741
2187
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:769
2188
+ msgctxt "dhl"
2189
+ msgid "Error while downloading the PDF stamp."
2190
+ msgstr "Fehler beim Download des PDF Labels."
2191
+
2192
+ #: woocommerce-germanized-dhl/src/Api/Internetmarke.php:776
2193
+ msgctxt "dhl"
2194
+ msgid "Invalid stamp response."
2195
+ msgstr "Fehlerhafte Label Rückmeldung."
2196
+
2197
  #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:99
2198
  msgctxt "dhl"
2199
  msgid ""
2202
  "Ihre DHL API Zugangsdaten scheinen fehlerhaft zu sein. Bitte prüfen Sie Ihre "
2203
  "DHL Einstellungen."
2204
 
2205
+ #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:103
2206
+ msgctxt "dhl"
2207
+ msgid ""
2208
+ "Your products are missing data relevant for custom declarations. Please "
2209
+ "provide missing DHL fields (country of origin, HS code) in your product data "
2210
+ "> shipping tab."
2211
+ msgstr ""
2212
+ "Ihren Produkten fehlen Daten, die für die Zollerklärung relevant sind. Bitte "
2213
+ "füllen Sie die fehlenden DHL Felder (HS Code, Herstellerland) in Ihren "
2214
+ "Produktdaten unter Versand aus."
2215
+
2216
+ #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:113
2217
  #, php-format
2218
  msgctxt "dhl"
2219
  msgid "There was an error contacting the DHL API: %s."
2220
  msgstr "Beim Aufruf der DHL API gab es einen Fehler: %s."
2221
 
2222
+ #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:116
2223
  msgctxt "dhl"
2224
  msgid ""
2225
  "An error ocurred while contacting the DHL API. Please consider enabling the "
2228
  "Beim Aufruf der DHL API ist ein Fehler aufgetreten. Bitte erwägen Sie den "
2229
  "Wechsel in den Sandbox-Modus."
2230
 
2231
+ #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:138
2232
  msgctxt "dhl"
2233
  msgid ""
2234
  "There was an error generating the label. Please try again or consider "
2237
  "Beim Erzeugen des Labels gab es einen Fehler. Bitte versuchen Sie es erneut "
2238
  "oder erwägen Sie den Wechsel in den Sandbox-Modus."
2239
 
2240
+ #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:241
2241
+ #: woocommerce-germanized-dhl/src/Api/ReturnRest.php:156
2242
  msgctxt "dhl"
2243
  msgid "Error while creating and uploading the label"
2244
  msgstr "Fehler beim Erstellen und hochladen des Labels"
2245
 
2246
+ #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:327
2247
  #, php-format
2248
  msgctxt "dhl"
2249
  msgid "Could not delete label - %s"
2250
  msgstr "Das Label konnte nicht gelöscht werden - %s"
2251
 
2252
+ #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:358
2253
  msgctxt "dhl"
2254
  msgid "Could not create account number - no product number."
2255
  msgstr ""
2256
  "Die Abrechnungsnummer konnte nicht erzeugt werden. Die Teilnahmenummer fehlt."
2257
 
2258
+ #: woocommerce-germanized-dhl/src/Api/LabelSoap.php:648
 
 
 
 
 
 
 
2259
  #, php-format
2260
  msgctxt "dhl"
2261
  msgid "Only %s shipment items can be processed, your shipment has %s items."
2264
  "Sendung beinhaltet %s Positionen."
2265
 
2266
  # @ woocommerce-germanized
2267
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:61
2268
+ #, php-format
2269
+ msgctxt "dhl"
2270
+ msgid "Label API not available: %s"
2271
+ msgstr "Label API ist nicht erreichbar: %s"
2272
+
2273
+ # @ woocommerce-germanized
2274
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:63
2275
  msgctxt "dhl"
2276
  msgid "Label API not available"
2277
  msgstr "Label API ist nicht erreichbar"
2278
 
2279
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:80
2280
  msgctxt "dhl"
2281
  msgid "Parcel Finder API not available"
2282
  msgstr "API der Standortsuche ist nicht verfügbar"
2283
 
2284
  # @ woocommerce-germanized
2285
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:96
2286
  msgctxt "dhl"
2287
  msgid "Return API not available"
2288
  msgstr "Retoure API ist nicht erreichbar"
2289
 
2290
  # @ woocommerce-germanized
2291
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:112
2292
  msgctxt "dhl"
2293
  msgid "Parcel API not available"
2294
  msgstr "Paket API ist nicht erreichbar"
2295
 
2296
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:258
2297
  msgctxt "dhl"
2298
  msgid "Mon"
2299
  msgstr "Mo"
2300
 
2301
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:259
2302
  msgctxt "dhl"
2303
  msgid "Tue"
2304
  msgstr "Di"
2305
 
2306
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:260
2307
  msgctxt "dhl"
2308
  msgid "Wed"
2309
  msgstr "Mi"
2310
 
2311
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:261
2312
  msgctxt "dhl"
2313
  msgid "Thu"
2314
  msgstr "Do"
2315
 
2316
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:262
2317
  msgctxt "dhl"
2318
  msgid "Fri"
2319
  msgstr "Fr"
2320
 
2321
  # @ woocommerce-germanized
2322
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:263
2323
  msgctxt "dhl"
2324
  msgid "Sat"
2325
  msgstr "Sa"
2326
 
2327
+ #: woocommerce-germanized-dhl/src/Api/Paket.php:264
2328
  msgctxt "dhl"
2329
  msgid "Sun"
2330
  msgstr "So"
2345
  msgid "Please provide the shipment start date."
2346
  msgstr "Bitte geben Sie das Startdatum der Sendung an."
2347
 
2348
+ #: woocommerce-germanized-dhl/src/Api/Rest.php:101
2349
  msgctxt "dhl"
2350
  msgid "400 - "
2351
  msgstr "400 - "
2352
 
2353
+ #: woocommerce-germanized-dhl/src/Api/Rest.php:104
2354
  msgctxt "dhl"
2355
  msgid ""
2356
  "401 - Unauthorized Access - Invalid token or Authentication Header parameter"
2357
  msgstr ""
2358
  "401 - Unauthorized Access - Invalid token or Authentication Header parameter"
2359
 
2360
+ #: woocommerce-germanized-dhl/src/Api/Rest.php:107
2361
  msgctxt "dhl"
2362
  msgid "408 - Request Timeout"
2363
  msgstr "408 - Request Timeout"
2364
 
2365
+ #: woocommerce-germanized-dhl/src/Api/Rest.php:110
2366
  msgctxt "dhl"
2367
  msgid "429 - Too many requests in given amount of time"
2368
  msgstr "429 - Too many requests in given amount of time"
2369
 
2370
+ #: woocommerce-germanized-dhl/src/Api/Rest.php:113
2371
  msgctxt "dhl"
2372
  msgid "503 - Service Unavailable"
2373
  msgstr "503 - Service Unavailable"
2374
 
2375
+ #: woocommerce-germanized-dhl/src/Api/Rest.php:117
2376
  msgctxt "dhl"
2377
  msgid "GET error or timeout occured. Please try again later."
2378
  msgstr "GET Fehler oder Zeitüberschreitung. Bitte später erneut versuchen."
2379
 
2380
+ #: woocommerce-germanized-dhl/src/Api/Rest.php:170
2381
  msgctxt "dhl"
2382
  msgid "POST error or timeout occured. Please try again later."
2383
  msgstr "POST Fehler oder Zeitüberschreitung. Bitte später erneut versuchen."
2384
 
2385
+ #: woocommerce-germanized-dhl/src/DataStores/Label.php:316
2386
  msgctxt "dhl"
2387
  msgid "Invalid label."
2388
  msgstr "Ungültiges Label."
2394
  msgid "%s-%s"
2395
  msgstr "%s-%s"
2396
 
2397
+ #: woocommerce-germanized-dhl/src/Package.php:274
2398
  msgctxt "dhl"
2399
  msgid ""
2400
  "Please check the street field and make sure to provide a valid street number."
2403
  "angegeben wurde."
2404
 
2405
  # @ woocommerce-germanized
2406
+ #: woocommerce-germanized-dhl/src/Package.php:961
2407
  msgctxt "dhl"
2408
  msgid "Germany"
2409
  msgstr "Deutschland"
2410
 
2411
  # @ woocommerce-germanized
2412
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:90
2413
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:849
2414
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:878
2415
  msgctxt "dhl"
2416
  msgid "Address Type"
2417
  msgstr "Adresstyp"
2418
 
2419
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:93
2420
  msgctxt "dhl"
2421
  msgid "Select whether delivery to DHL locations should be enabled."
2422
  msgstr ""
2423
  "Wählen Sie aus, ob die Lieferung an DHL Standorte aktiviert werden soll."
2424
 
2425
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:98
2426
  msgctxt "dhl"
2427
  msgid "Postnumber"
2428
  msgstr "Postnummer"
2429
 
2430
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:100
2431
  msgctxt "dhl"
2432
  msgid ""
2433
  "In case delivery to packstation is selected please fill in the corresponding "
2436
  "Insofern die Lieferung an eine Packstation erfolgt, bitte die Postnummer "
2437
  "eintragen."
2438
 
2439
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:186
2440
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:565
2441
  msgctxt "dhl"
2442
  msgid "Invalid address type."
2443
  msgstr "Ungültiger Adresstyp."
2444
 
2445
  # @ woocommerce-germanized
2446
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:637
2447
  msgctxt "dhl"
2448
  msgid "Sorry, but delivery to packstation is not available."
2449
  msgstr ""
2450
  "Entschuldigung, die Lieferung an eine Packstation steht nicht zur Verfügung."
2451
 
2452
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:642
2453
  msgctxt "dhl"
2454
  msgid "Sorry, but delivery to parcel shops is not available."
2455
  msgstr ""
2456
  "Entschuldigung, die Lieferung an einen Paketshop steht nicht zur Verfügung."
2457
 
2458
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:646
2459
  msgctxt "dhl"
2460
  msgid "Sorry, but delivery to post offices is not available."
2461
  msgstr "Entschuldigung, die Lieferung an Postfilialen ist nicht verfügbar."
2462
 
2463
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:653
2464
  #, php-format
2465
  msgctxt "dhl"
2466
  msgid "Please indicate shipment to %s by one of the following values: %s."
2468
  "Bitte identifizieren Sie die Lieferung an %s durch die Eingabe einer der "
2469
  "folgenden Werte: %s."
2470
 
2471
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:661
2472
  msgctxt "dhl"
2473
  msgid ""
2474
  "Your DHL customer number (Post number) is not valid. Please check your "
2477
  "Ihre DHL Kundennummer (Postnummer) ist nicht gültig. Bitte überprüfen Sie "
2478
  "Ihre Eingabe."
2479
 
2480
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:664
2481
  msgctxt "dhl"
2482
  msgid ""
2483
  "Your DHL customer number (Post number) is needed to ship to a packstation."
2485
  "Ihre DHL Kundennummer (Postnummer) wird für den Versand an eine Packstation "
2486
  "benötigt."
2487
 
2488
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:713
2489
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:840
2490
  msgctxt "dhl"
2491
  msgid "Branch"
2492
  msgstr "Filiale"
2493
 
2494
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:714
2495
  msgctxt "dhl"
2496
  msgid "Postnumber "
2497
  msgstr "Postnummer "
2498
 
2499
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:815
2500
  #, php-format
2501
  msgctxt "dhl"
2502
  msgid "e.g. %s 456"
2503
  msgstr "z.B. %s 456"
2504
 
2505
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:840
2506
  msgctxt "dhl"
2507
  msgid "Branches"
2508
  msgstr "Filialen"
2509
 
2510
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:856
2511
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:889
2512
  msgctxt "dhl"
2513
  msgid "DHL customer number (Post number)"
2514
  msgstr "DHL Kundennummer (Postnummer)"
2515
 
2516
  # @ woocommerce-germanized
2517
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:866
2518
  msgctxt "dhl"
2519
  msgid "Regular Address"
2520
  msgstr "Normale Adresse"
2521
 
2522
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:893
2523
  msgctxt "dhl"
2524
  msgid "Not yet a DHL customer?"
2525
  msgstr "Noch kein DHL Kunde?"
2526
 
2527
  # @ woocommerce-germanized
2528
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:893
2529
  msgctxt "dhl"
2530
  msgid "Register now"
2531
  msgstr "Jetzt registrieren"
2532
 
2533
  # @ woocommerce-germanized
2534
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:942
2535
  #, php-format
2536
  msgctxt "dhl"
2537
  msgid "Search %s"
2538
  msgstr "%s suchen"
2539
 
2540
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:1047
2541
  msgctxt "dhl"
2542
  msgid "No DHL locations found"
2543
  msgstr "Keine DHL Standorte gefunden"
2544
 
2545
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:1062
2546
  #, php-format
2547
  msgctxt "dhl"
2548
  msgid ""
2553
  "einen %s oder %s."
2554
 
2555
  # @ woocommerce-germanized
2556
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:1062
2557
  msgctxt "dhl"
2558
  msgid "DHL location"
2559
  msgstr "DHL Standort"
2560
 
2561
+ #: woocommerce-germanized-dhl/src/ParcelLocator.php:1062
2562
  msgctxt "dhl"
2563
  msgid "retry"
2564
  msgstr "Erneut versuchen"
2586
  msgid "Please choose name and address of your preferred neighbor."
2587
  msgstr "Bitte wählen Sie einen Namen und die Adresse Ihres Wunschnachbars."
2588
 
2589
+ #: woocommerce-germanized-dhl/src/ReturnLabel.php:124
2590
  #: woocommerce-germanized-dhl/src/SimpleLabel.php:86
2591
  #, php-format
2592
  msgctxt "dhl full name"
2593
  msgid "%1$s"
2594
  msgstr "%1$s"
2595
 
2596
+ #: woocommerce-germanized-dhl/src/ShippingProvider/DHL.php:47
2597
  msgctxt "dhl"
2598
  msgid ""
2599
  "Complete DHL integration supporting labels, preferred services and "
2602
  "DHL Integration die das Erzeugen von Labels, Wunsch-Services und Lieferung "
2603
  "an Packstationen unterstützt."
2604
 
2605
+ #: woocommerce-germanized-dhl/src/ShippingProvider/DeutschePost.php:31
2606
+ msgctxt "dhl"
2607
+ msgid "Deutsche Post"
2608
+ msgstr "Deutsche Post"
2609
+
2610
+ #: woocommerce-germanized-dhl/src/ShippingProvider/DeutschePost.php:39
2611
+ msgctxt "dhl"
2612
+ msgid "Integration for products of the Deutsche Post through Internetmarke."
2613
+ msgstr "Integration von Produkten der Deutschen Post über die Internetmarke."
2614
+
2615
  #: woocommerce-germanized-dhl/templates/checkout/dhl/parcel-finder-result.php:31
2616
  msgctxt "dhl"
2617
  msgid "Opening Times"
2783
  "Ihre Installation des Germanized DHL Plugins ist unvollständig. Bitte führen "
2784
  "Sie %1$s im %2$s Verzeichnis aus."
2785
 
2786
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:32
2787
  #, php-format
2788
  msgctxt "shipments"
2789
+ msgid "Content (%s)"
2790
+ msgstr "Inhalt (%s)"
2791
 
2792
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:38
2793
  #, php-format
2794
  msgctxt "shipments"
2795
  msgid "Dimensions (%s)"
2796
  msgstr "Abmessungen (%s)"
2797
 
2798
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:38
2799
  msgctxt "shipments"
2800
  msgid "LxWxH in decimal form."
2801
  msgstr "LxBxH in dezimaler Form."
2802
 
2803
  # @ woocommerce-germanized
2804
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:50
2805
+ #: woocommerce-germanized-shipments/src/Admin/Settings.php:424
2806
+ msgctxt "shipments"
2807
+ msgid "Packaging"
2808
+ msgstr "Verpackung"
2809
+
2810
+ # @ woocommerce-germanized
2811
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:58
2812
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:1027
2813
  #: woocommerce-germanized-shipments/src/Admin/ReturnTable.php:24
2814
  #: woocommerce-germanized-shipments/src/Admin/Table.php:688
2817
  msgstr "Status"
2818
 
2819
  # @ woocommerce-germanized
2820
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:68
2821
  msgctxt "shipments"
2822
  msgid "Shipping method"
2823
  msgstr "Versandmethode"
2824
 
2825
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:78
2826
  msgctxt "shipments"
2827
  msgid "Shipping provider"
2828
  msgstr "Versanddienstleister"
2829
 
2830
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:89
2831
  msgctxt "shipments"
2832
  msgid "Tracking Number"
2833
  msgstr "Sendungsnummer"
2834
 
2835
  # @ woocommerce-germanized
2836
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:155
2837
  msgctxt "shipments"
2838
  msgid "Add item"
2839
  msgstr "Position hinzufügen"
2840
 
2841
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:159
2842
  msgctxt "shipments"
2843
  msgid "Automatically adjust items and quantities based on order item data."
2844
  msgstr "Bestimmt Positionen und Anzahlen automatisch anhand der Bestelldaten."
2845
 
2846
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:159
2847
  msgctxt "shipments"
2848
  msgid "Sync items"
2849
  msgstr "Positionen synchronisieren"
2850
 
2851
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:179
2852
  msgctxt "shipments"
2853
  msgid "Add Item"
2854
  msgstr "Position hinzufügen"
2855
 
2856
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:189
2857
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipments.php:45
2858
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:88
2859
  msgctxt "shipments"
2860
  msgid "Item"
2861
  msgstr "Position"
2862
 
2863
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:190
2864
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipments.php:46
2865
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:93
2866
  #: woocommerce-germanized-shipments/templates/emails/email-shipment-details.php:55
2867
  #: woocommerce-germanized-shipments/templates/myaccount/add-return-shipment.php:37
2868
  #: woocommerce-germanized-shipments/templates/shipment/shipment-details.php:60
2870
  msgid "Quantity"
2871
  msgstr "Anzahl"
2872
 
2873
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:208
2874
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipments.php:55
2875
  msgctxt "shipments"
2876
  msgid "Add"
2877
  msgstr "Hinzufügen"
2878
 
2879
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:232
2880
  msgctxt "shipments"
2881
  msgid ""
2882
  "Send return instructions to your customer via email including return label "
2885
  "Informationen zur Rücksendung inkl. Label, falls verfügbar an Kunden via E-"
2886
  "Mail senden."
2887
 
2888
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:232
2889
  msgctxt "shipments"
2890
  msgid "Resend notification"
2891
  msgstr "Benachrichtigung erneut versenden"
2892
 
2893
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:232
2894
  msgctxt "shipments"
2895
  msgid "Notify customer"
2896
  msgstr "Notify customer"
2897
 
2898
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:234
2899
  msgctxt "shipments"
2900
  msgid ""
2901
  "Confirm the return request to the customer. The customer receives an email "
2906
  "enthält."
2907
 
2908
  # @ woocommerce-germanized
2909
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:234
2910
  #: woocommerce-germanized-shipments/src/Admin/ReturnTable.php:66
2911
  msgctxt "shipments"
2912
  msgid "Confirm return request"
2913
  msgstr "Rücksendeantrag bestätigen"
2914
 
2915
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php:238
2916
  #, php-format
2917
  msgctxt "shipments"
2918
  msgid "Delete %s"
2942
 
2943
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-list.php:22
2944
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:76
2945
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:75
2946
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:509
2947
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:630
2948
  #: woocommerce-germanized-shipments/src/Admin/Settings.php:80
2949
  #: woocommerce-germanized-shipments/src/Admin/Settings.php:177
2950
  #: woocommerce-germanized-shipments/templates/myaccount/order-shipments.php:36
2952
  msgid "Returns"
2953
  msgstr "Retouren"
2954
 
2955
+ # @ woocommerce-germanized
2956
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-packaging-select.php:17
2957
+ #: woocommerce-germanized-shipments/includes/wc-gzd-packaging-functions.php:52
2958
+ msgctxt "shipments-packaging"
2959
+ msgid "None"
2960
+ msgstr "Keine"
2961
+
2962
+ # @ woocommerce-germanized
2963
+ #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-packaging-select.php:27
2964
+ msgctxt "shipments"
2965
+ msgid "Does not fit"
2966
+ msgstr "Passt nicht"
2967
+
2968
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipment.php:16
2969
  #, php-format
2970
  msgctxt "shipment admin title"
2974
  # @ woocommerce-germanized
2975
  #: woocommerce-germanized-shipments/includes/admin/views/html-order-shipments.php:19
2976
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:69
2977
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:439
2978
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:508
2979
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:596
2980
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:663
2981
  #: woocommerce-germanized-shipments/templates/myaccount/order-shipments.php:20
2982
  msgctxt "shipments"
2983
  msgid "Shipments"
3008
  #: woocommerce-germanized-shipments/includes/admin/views/html-settings-provider-list.php:11
3009
  #: woocommerce-germanized-shipments/src/Admin/ReturnTable.php:22
3010
  #: woocommerce-germanized-shipments/src/Admin/Table.php:686
3011
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:555
3012
  msgctxt "shipments"
3013
  msgid "Title"
3014
  msgstr "Titel"
3015
 
3016
  # @ woocommerce-germanized
3017
  #: woocommerce-germanized-shipments/includes/admin/views/html-settings-provider-list.php:12
3018
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:316
3019
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:564
3020
  msgctxt "shipments"
3021
  msgid "Description"
3022
  msgstr "Beschreibung"
3072
  msgstr "Download"
3073
 
3074
  #: woocommerce-germanized-shipments/includes/admin/views/label/html-shipment-label.php:39
3075
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:722
3076
  msgctxt "shipments"
3077
  msgid "Create new label"
3078
  msgstr "Neues Label erstellen"
3293
  msgstr ""
3294
  "Fügen Sie Empfänger (kommasepariert) für diese E-Mail ein. Standard: %s."
3295
 
3296
+ #: woocommerce-germanized-shipments/includes/wc-gzd-packaging-functions.php:24
3297
+ msgctxt "shipments"
3298
+ msgid "Cardboard"
3299
+ msgstr "Karton"
3300
+
3301
+ #: woocommerce-germanized-shipments/includes/wc-gzd-packaging-functions.php:25
3302
+ msgctxt "shipments"
3303
+ msgid "Letter"
3304
+ msgstr "Brief"
3305
+
3306
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:68
3307
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:1025
3308
  msgctxt "shipments"
3391
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:413
3392
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:417
3393
  #: woocommerce-germanized-shipments/src/ReturnShipment.php:420
3394
+ #: woocommerce-germanized-shipments/src/ReturnShipment.php:479
3395
  #: woocommerce-germanized-shipments/src/SimpleShipment.php:118
3396
+ #: woocommerce-germanized-shipments/src/SimpleShipment.php:214
3397
  msgctxt "shipments"
3398
  msgid "Invalid shipment order"
3399
  msgstr "Ungültige Bestellung zur Sendung"
3435
 
3436
  # @ woocommerce-germanized
3437
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:1029
3438
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:98
3439
  #: woocommerce-germanized-shipments/src/Admin/ReturnTable.php:30
3440
  #: woocommerce-germanized-shipments/src/Admin/Table.php:694
3441
  msgctxt "shipments"
3450
  # @ woocommerce-germanized
3451
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipment-functions.php:1272
3452
  #: woocommerce-germanized-shipments/src/Admin/Table.php:865
3453
+ #: woocommerce-germanized-shipments/src/Ajax.php:337
3454
  msgctxt "shipments"
3455
  msgid "Download label"
3456
  msgstr "Label downloaden"
3464
  msgstr "Mein Konto"
3465
 
3466
  #: woocommerce-germanized-shipments/includes/wc-gzd-shipments-template-functions.php:115
3467
+ #: woocommerce-germanized-shipments/src/DataStores/Shipment.php:354
3468
  msgctxt "shipments"
3469
  msgid "Invalid shipment."
3470
  msgstr "Ungültige Sendung."
3487
  msgstr "Bestellung ansehen"
3488
 
3489
  # @ woocommerce-germanized
3490
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:106
3491
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:241
3492
  #: woocommerce-germanized-shipments/templates/myaccount/add-return-shipment.php:36
3493
  msgctxt "shipments"
3494
  msgid "Reason"
3495
  msgstr "Rücksendegrund"
3496
 
3497
  # @ woocommerce-germanized
3498
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:233
3499
  msgctxt "shipments"
3500
  msgid "Return reasons"
3501
  msgstr "Rücksendegründe"
3502
 
3503
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:240
3504
  msgctxt "shipments"
3505
  msgid "Reason code"
3506
  msgstr "Rücksendegrund (Code)"
3507
 
3508
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:240
3509
  msgctxt "shipments"
3510
  msgid "The reason code is used to identify the reason."
3511
  msgstr ""
3513
  "identifizieren zu können."
3514
 
3515
  # @ woocommerce-germanized
3516
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:241
3517
  msgctxt "shipments"
3518
  msgid "Choose a reason text."
3519
  msgstr "Beschreibung für den Grund."
3520
 
3521
  # @ woocommerce-germanized
3522
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:260
3523
  msgctxt "shipments"
3524
  msgid "+ Add reason"
3525
  msgstr "+ Grund hinzufügen"
3526
 
3527
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:260
3528
  msgctxt "shipments"
3529
  msgid "Remove selected reason(s)"
3530
  msgstr "Ausgewählte Gründe löschen"
3531
 
3532
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:293
3533
+ msgctxt "shipments"
3534
+ msgid "Available Packaging"
3535
+ msgstr "Verfügbare Verpackungen"
3536
+
3537
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:316
3538
+ msgctxt "shipments"
3539
+ msgid "A description to help you identify the packaging."
3540
+ msgstr ""
3541
+ "Eine Beschreibung die Ihnen dabei hilft Verpackungen zu identifizieren."
3542
+
3543
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:317
3544
+ msgctxt "shipments"
3545
+ msgid "Type"
3546
+ msgstr "Typ"
3547
+
3548
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:318
3549
+ #, php-format
3550
+ msgctxt "shipments"
3551
+ msgid "Weight (%s)"
3552
+ msgstr "Gewicht (%s)"
3553
+
3554
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:318
3555
+ msgctxt "shipments"
3556
+ msgid "The weight of the packaging."
3557
+ msgstr "Das Gewicht der Verpackung."
3558
+
3559
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:319
3560
+ #, php-format
3561
+ msgctxt "shipments"
3562
+ msgid "Dimensions (LxWxH, %s)"
3563
+ msgstr "Abmessungen (LxBxH, %s)"
3564
+
3565
+ # @ woocommerce-germanized
3566
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:320
3567
+ msgctxt "shipments"
3568
+ msgid "Max weight (kg)"
3569
+ msgstr "Max. Gewicht (kg)"
3570
+
3571
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:320
3572
+ msgctxt "shipments"
3573
+ msgid ""
3574
+ "The maximum weight this packaging can hold. Leave empty to not restrict "
3575
+ "maximum weight."
3576
+ msgstr ""
3577
+ "Das maximale Gewicht, das diese Verpackung tragen kann. Leer lassen um das "
3578
+ "Gewicht nicht zu begrenzen."
3579
+
3580
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:345
3581
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:386
3582
+ msgctxt "shipments"
3583
+ msgid "Length"
3584
+ msgstr "Länge"
3585
+
3586
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:346
3587
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:387
3588
+ msgctxt "shipments"
3589
+ msgid "Width"
3590
+ msgstr "Breite"
3591
+
3592
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:347
3593
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:388
3594
+ msgctxt "shipments"
3595
+ msgid "Height"
3596
+ msgstr "Höhe"
3597
+
3598
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:360
3599
+ msgctxt "shipments"
3600
+ msgid "+ Add packaging"
3601
+ msgstr "+ Verpackung hinzufügen"
3602
+
3603
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:360
3604
+ msgctxt "shipments"
3605
+ msgid "Remove selected packaging"
3606
+ msgstr "Ausgewählte Verpackung löschen"
3607
+
3608
  # @ woocommerce-germanized
3609
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:493
3610
  msgctxt "shipments"
3611
  msgid "Create shipments"
3612
  msgstr "Sendungen erstellen"
3613
 
3614
  # @ woocommerce-germanized
3615
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:608
3616
  msgctxt "shipments"
3617
  msgid "Search shipments"
3618
  msgstr "Sendungen suchen"
3619
 
3620
  # @ woocommerce-germanized
3621
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:642
3622
  msgctxt "shipments"
3623
  msgid "Search returns"
3624
  msgstr "Retouren suchen"
3625
 
3626
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:715
3627
  msgctxt "shipments"
3628
  msgid "Do you really want to delete the shipment?"
3629
  msgstr "Möchten Sie die Sendung wirklich löschen?"
3630
 
3631
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:721
3632
  msgctxt "shipments"
3633
  msgid "Do you really want to delete the label?"
3634
  msgstr "Möchten Sie das Label wirklich löschen?"
3635
 
3636
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:723
3637
  msgctxt "shipments"
3638
  msgid "Please save the shipment before creating a new label"
3639
  msgstr "Bitte speichern Sie die Sendung bevor Sie ein neues Label erstellen"
3640
 
3641
+ #: woocommerce-germanized-shipments/src/Admin/Admin.php:773
3642
  msgctxt "shipments"
3643
  msgid ""
3644
  "Do you really want to delete the shipping provider? Some of your existing "
4040
  msgid "List shipments on customer account order screen."
4041
  msgstr "Liste Sendungen im Kundenkonto in den Bestelldetails auf."
4042
 
4043
+ # @ woocommerce-germanized
4044
+ #: woocommerce-germanized-shipments/src/Admin/Settings.php:280
4045
+ msgctxt "shipments"
4046
+ msgid "Default packaging"
4047
+ msgstr "Standard-Verpackung"
4048
+
4049
+ #: woocommerce-germanized-shipments/src/Admin/Settings.php:281
4050
+ msgctxt "shipments"
4051
+ msgid ""
4052
+ "Choose a packaging which serves as fallback or default in case no suitable "
4053
+ "packaging could be matched for a certain shipment."
4054
+ msgstr ""
4055
+ "Wählen Sie eine Verpackung aus, die im Zweifel für die Sendung verwendet "
4056
+ "wird, wenn keine passende Verpackung gefunden werden konnte."
4057
+
4058
+ #: woocommerce-germanized-shipments/src/Admin/Settings.php:379
4059
  msgctxt "shipments"
4060
  msgid "New provider"
4061
  msgstr "Neuer Dienstleister"
4062
 
4063
  # @ woocommerce-germanized
4064
+ #: woocommerce-germanized-shipments/src/Admin/Settings.php:389
4065
  msgctxt "shipments"
4066
  msgid "Additional settings"
4067
  msgstr "Weiterführende Einstellungen"
4068
 
4069
+ #: woocommerce-germanized-shipments/src/Admin/Settings.php:415
4070
  msgctxt "shipments"
4071
  msgid "Add provider"
4072
  msgstr "Dienstleister hinzufügen"
4073
 
4074
  # @ woocommerce-germanized
4075
+ #: woocommerce-germanized-shipments/src/Admin/Settings.php:423
4076
  msgctxt "shipments"
4077
  msgid "General"
4078
  msgstr "Allgemein"
4079
 
4080
+ #: woocommerce-germanized-shipments/src/Admin/Settings.php:425
4081
  #: woocommerce-germanized-shipments/src/ShippingProviderMethod.php:56
4082
  msgctxt "shipments"
4083
  msgid "Shipping Provider"
4148
 
4149
  # @ woocommerce-germanized
4150
  #: woocommerce-germanized-shipments/src/Admin/Table.php:664
4151
+ #: woocommerce-germanized-shipments/src/Ajax.php:816
4152
  #, php-format
4153
  msgctxt "shipments"
4154
  msgid "Order #%s"
4233
  msgid "Generate and download labels"
4234
  msgstr "Labels erstellen und downloaden"
4235
 
4236
+ #: woocommerce-germanized-shipments/src/Ajax.php:95
4237
  msgctxt "shipments"
4238
  msgid "Notification successfully sent to customer."
4239
  msgstr "Kunde erfolgreich benachrichtigt."
4240
 
4241
+ #: woocommerce-germanized-shipments/src/Ajax.php:102
4242
  msgctxt "shipments"
4243
  msgid "There was an error while sending the notification."
4244
  msgstr "Beim Versendes der Benachrichtigung ist ein Fehler aufgetreten."
4245
 
4246
+ #: woocommerce-germanized-shipments/src/Ajax.php:142
4247
  msgctxt "shipments"
4248
  msgid "Return request confirmed successfully."
4249
  msgstr "Rücksendeantrag erfolgreich bestätigt."
4250
 
4251
+ #: woocommerce-germanized-shipments/src/Ajax.php:154
4252
  msgctxt "shipments"
4253
  msgid "There was an error while confirming the request."
4254
  msgstr "Bei der Bestätigung des Antrags ist ein Fehler aufgetreten."
4255
 
4256
+ #: woocommerce-germanized-shipments/src/Ajax.php:174
4257
  msgctxt "shipments"
4258
  msgid "There was an error creating the label."
4259
  msgstr "Beim Erstellen des Labels ist ein Fehler aufgetreten."
4260
 
4261
+ #: woocommerce-germanized-shipments/src/Ajax.php:210
4262
  msgctxt "shipments"
4263
  msgid "There was an error deleting the label."
4264
  msgstr "Beim Löschen des Labels ist ein Fehler aufgetreten."
4265
 
4266
+ #: woocommerce-germanized-shipments/src/Ajax.php:251
4267
  msgctxt "shipments"
4268
  msgid "There was an error processing the label."
4269
  msgstr "Bei der Verarbeitung des Labels ist ein Fehler aufgetreten."
4270
 
4271
+ #: woocommerce-germanized-shipments/src/Ajax.php:349
4272
  msgctxt "shipments"
4273
  msgid "There was an error while trying to save the shipping provider status."
4274
  msgstr ""
4275
  "Beim Speichern des Status des Versanddienstleisters trat ein Fehler auf."
4276
 
4277
+ #: woocommerce-germanized-shipments/src/Ajax.php:387
4278
  msgctxt "shipments"
4279
  msgid "There was an error while trying to delete the shipping provider."
4280
  msgstr "Beim Löschen des Versanddienstleisters trat ein Fehler auf."
4281
 
4282
+ #: woocommerce-germanized-shipments/src/Ajax.php:420
4283
  msgctxt "shipments"
4284
  msgid "There was an error while bulk processing shipments."
4285
  msgstr ""
4286
  "Bei der Verarbeitung der Mehrfachaktionen von Sendungen trat ein Fehler auf."
4287
 
4288
+ #: woocommerce-germanized-shipments/src/Ajax.php:532
4289
+ #: woocommerce-germanized-shipments/src/Ajax.php:633
4290
+ #: woocommerce-germanized-shipments/src/Ajax.php:690
4291
+ #: woocommerce-germanized-shipments/src/Ajax.php:727
4292
+ #: woocommerce-germanized-shipments/src/Ajax.php:854
4293
+ #: woocommerce-germanized-shipments/src/Ajax.php:915
4294
+ #: woocommerce-germanized-shipments/src/Ajax.php:982
4295
+ #: woocommerce-germanized-shipments/src/Ajax.php:1015
4296
+ #: woocommerce-germanized-shipments/src/Ajax.php:1064
4297
+ #: woocommerce-germanized-shipments/src/Ajax.php:1132
4298
+ #: woocommerce-germanized-shipments/src/Ajax.php:1173
4299
+ #: woocommerce-germanized-shipments/src/Ajax.php:1228
4300
+ #: woocommerce-germanized-shipments/src/Ajax.php:1272
4301
  msgctxt "shipments"
4302
  msgid "There was an error processing the shipment"
4303
  msgstr "Fehler bei der Verarbeitung der Sendung"
4304
 
4305
+ #: woocommerce-germanized-shipments/src/Ajax.php:574
4306
  msgctxt "shipments"
4307
  msgid "There was an error while adding the shipment"
4308
  msgstr "Beim Hinzufügen der Sendung ist ein Fehler aufgetreten"
4309
 
4310
+ #: woocommerce-germanized-shipments/src/Ajax.php:595
4311
  msgctxt "shipments"
4312
  msgid "This order contains enough shipments already."
4313
  msgstr "Diese Bestellung beinhaltet bereits genug Sendungen."
4314
 
4315
+ #: woocommerce-germanized-shipments/src/Ajax.php:652
4316
  msgctxt "shipments"
4317
  msgid "This order contains enough returns already."
4318
  msgstr "Diese Bestellung beinhaltet bereits genügend Retouren."
4499
  msgstr "Anzahl."
4500
 
4501
  # @ woocommerce-germanized
4502
+ #: woocommerce-germanized-shipments/src/Automation.php:127
4503
  msgctxt "shipments"
4504
  msgid "Order is fully shipped."
4505
  msgstr "Bestellung ist vollständig versandt."
4506
 
4507
+ #: woocommerce-germanized-shipments/src/DataStores/Packaging.php:236
4508
+ msgctxt "shipments"
4509
+ msgid "Invalid packaging."
4510
+ msgstr "Verpackung nicht verfügbar."
4511
+
4512
  #: woocommerce-germanized-shipments/src/DataStores/ShipmentItem.php:195
4513
  msgctxt "shipments"
4514
  msgid "Invalid shipment item."
4614
  "Es gab ein Problem beim Erstellen der Rücksendung. Bitte kontaktieren Sie "
4615
  "uns für weitere Informationen."
4616
 
4617
+ #: woocommerce-germanized-shipments/src/Install.php:31
4618
  msgctxt "shipments"
4619
  msgid "Wrong product or size ordered"
4620
  msgstr "Falsches Produkt oder Größe bestellt"
4621
 
4622
+ #: woocommerce-germanized-shipments/src/Install.php:36
4623
  msgctxt "shipments"
4624
  msgid "Product no longer needed"
4625
  msgstr "Produkt wird nicht länger benötigt"
4626
 
4627
+ #: woocommerce-germanized-shipments/src/Install.php:41
4628
  msgctxt "shipments"
4629
  msgid "Don't like the look"
4630
  msgstr "Optik nicht wie erwartet"
4631
 
4632
+ #: woocommerce-germanized-shipments/src/Install.php:60
4633
+ msgctxt "shipments"
4634
+ msgid "Cardboard S"
4635
+ msgstr "Karton S"
4636
+
4637
+ #: woocommerce-germanized-shipments/src/Install.php:69
4638
+ msgctxt "shipments"
4639
+ msgid "Cardboard M"
4640
+ msgstr "Karton M"
4641
+
4642
+ #: woocommerce-germanized-shipments/src/Install.php:78
4643
+ msgctxt "shipments"
4644
+ msgid "Cardboard L"
4645
+ msgstr "Karton L"
4646
+
4647
+ #: woocommerce-germanized-shipments/src/Install.php:87
4648
+ msgctxt "shipments"
4649
+ msgid "Letter C5/6"
4650
+ msgstr "Brief C5/6"
4651
+
4652
+ #: woocommerce-germanized-shipments/src/Install.php:96
4653
+ msgctxt "shipments"
4654
+ msgid "Letter C4"
4655
+ msgstr "Brief C4"
4656
+
4657
  # @ woocommerce-germanized
4658
+ #: woocommerce-germanized-shipments/src/Package.php:97
4659
  msgctxt "shipments"
4660
  msgid "Sorry, this order is invalid and cannot be returned."
4661
  msgstr "Sorry, diese Bestellung existiert nicht."
4662
 
4663
+ #: woocommerce-germanized-shipments/src/Packaging.php:266
4664
+ #, php-format
4665
+ msgctxt "shipments-packaging-title"
4666
+ msgid "%1$s (%2$s, %3$s)"
4667
+ msgstr "%1$s (%2$s, %3$s)"
4668
+
4669
  #: woocommerce-germanized-shipments/src/ReturnShipment.php:356
4670
+ #: woocommerce-germanized-shipments/src/Shipment.php:882
4671
  #, php-format
4672
  msgctxt "full name"
4673
  msgid "%1$s %2$s"
4674
  msgstr "%1$s %2$s"
4675
 
4676
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:270
4677
  msgctxt "shipments"
4678
  msgid ""
4679
  "Your shipment is being processed by {shipping_provider}. If you want to "
4687
  "die Paketverfolgungsdaten zum Zeitpunkt des Erhalts dieser E-Mail noch nicht "
4688
  "den neuesten Stand wiedergeben."
4689
 
4690
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:543
4691
  #, php-format
4692
  msgctxt "shipments"
4693
  msgid "%s supports many more options. Explore %s."
4694
  msgstr "%s unterstützt viele weitere Einstellungen. Schauen Sie sich %s an."
4695
 
4696
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:543
4697
  #, php-format
4698
  msgctxt "shipments"
4699
  msgid "%s specific settings"
4700
  msgstr "%s spezifische Einstellungen"
4701
 
4702
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:556
4703
  msgctxt "shipments"
4704
  msgid "Choose a title for the shipping provider."
4705
  msgstr "Wählen Sie einen Titel für den Versanddienstleister."
4706
 
4707
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:565
4708
  msgctxt "shipments"
4709
  msgid "Choose a description for the shipping provider."
4710
  msgstr "Wählen Sie eine Beschreibung für den Versanddienstleister."
4711
 
4712
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:579
4713
  msgctxt "shipments"
4714
  msgid "Tracking URL"
4715
  msgstr "Sendungsverfolgung URL"
4716
 
4717
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:580
4718
  #, php-format
4719
  msgctxt "shipments"
4720
  msgid ""
4728
  "einzufügen: %s"
4729
 
4730
  # @ woocommerce-germanized
4731
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:590
4732
  msgctxt "shipments"
4733
  msgid "Tracking description"
4734
  msgstr "Sendungsverfolgung Hinweis"
4735
 
4736
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:591
4737
  #, php-format
4738
  msgctxt "shipments"
4739
  msgid ""
4748
  "dynamische Daten einzufügen: %s"
4749
 
4750
  # @ woocommerce-germanized
4751
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:604
4752
  msgctxt "shipments"
4753
  msgid "Customer returns"
4754
  msgstr "Rücksendungen"
4755
 
4756
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:605
4757
  msgctxt "shipments"
4758
  msgid "Allow customers to submit return requests to shipments."
4759
  msgstr "Erlauben Sie Kunden eine Rücksendung zu einer Sendung zu beantragen."
4760
 
4761
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:605
4762
  #, php-format
4763
  msgctxt "shipments"
4764
  msgid ""
4772
  "Gästen zu erfahren, lesen Sie bitte die %s."
4773
 
4774
  # @ woocommerce-germanized
4775
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:605
4776
  msgctxt "shipments"
4777
  msgid "Return Dashboard"
4778
  msgstr "Retouren-Dashboard"
4779
 
4780
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:605
4781
  msgctxt "shipments"
4782
  msgid "docs"
4783
  msgstr "Dokumentation"
4784
 
4785
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:614
4786
  msgctxt "shipments"
4787
  msgid "Guest returns"
4788
  msgstr "Retouren für Gäste"
4789
 
4790
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:615
4791
  msgctxt "shipments"
4792
  msgid "Allow guests to submit return requests to shipments."
4793
  msgstr "Erlauben Sie Gästen Rücksendeanträge zu Bestellungen zu beantragen."
4794
 
4795
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:615
4796
  #, php-format
4797
  msgctxt "shipments"
4798
  msgid ""
4806
  "Rücksende-Formular für Gäste auf Ihrer Seite zu platzieren."
4807
 
4808
  # @ woocommerce-germanized
4809
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:626
4810
  msgctxt "shipments"
4811
  msgid "Manual confirmation"
4812
  msgstr "Manuelle Bestätigung"
4813
 
4814
  # @ woocommerce-germanized
4815
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:627
4816
  msgctxt "shipments"
4817
  msgid "Return requests need manual confirmation."
4818
  msgstr "Rücksendeanträge benötigen eine manuelle Bestätigung."
4819
 
4820
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:627
4821
  msgctxt "shipments"
4822
  msgid ""
4823
  "By default return request need manual confirmation e.g. a shop manager needs "
4834
  "Mail-Bestätigung samt Retouren-Label."
4835
 
4836
  # @ woocommerce-germanized
4837
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:639
4838
  msgctxt "shipments"
4839
  msgid "Return instructions"
4840
  msgstr "Rücksende-Anweisungen"
4841
 
4842
+ #: woocommerce-germanized-shipments/src/ShippingProvider.php:640
4843
  msgctxt "shipments"
4844
  msgid ""
4845
  "Provide your customer with instructions on how to return the shipment after "
5217
  # @ woocommerce-germanized
5218
  #: woocommerce-germanized/includes/abstracts/abstract-wc-gzd-product.php:549
5219
  #: woocommerce-germanized/includes/abstracts/abstract-wc-gzd-product.php:559
5220
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:449
5221
  #: woocommerce-germanized/includes/wc-gzd-template-functions.php:546
5222
  #: woocommerce-germanized/includes/wc-gzd-template-functions.php:554
5223
  msgid "incl. VAT"
5230
 
5231
  # @ woocommerce-germanized
5232
  #: woocommerce-germanized/includes/abstracts/abstract-wc-gzd-product.php:551
5233
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:449
5234
  #, php-format
5235
  msgid "incl. %s%% VAT"
5236
  msgstr "inkl. %s %% MwSt."
5472
  # @ woocommerce-germanized
5473
  # @ woocommerce
5474
  #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:73
5475
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:153
5476
  #: woocommerce-germanized/includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:79
5477
+ #: woocommerce-germanized/woocommerce-germanized.php:816
5478
  msgid "Settings"
5479
  msgstr "Einstellungen"
5480
 
5491
  msgstr "Tutorial starten"
5492
 
5493
  #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:92
 
5494
  #: woocommerce-germanized/includes/admin/views/setup/dhl.php:10
5495
  msgid "DHL"
5496
  msgstr "DHL"
5497
 
5498
  # @ woocommerce-germanized
5499
  #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:100
5500
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:112
5501
  msgid "Import settings"
5502
  msgstr "Einstellungen importieren"
5503
 
5504
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:104
5505
+ #: woocommerce-germanized/includes/admin/views/setup/internetmarke.php:10
5506
+ msgid "Internetmarke"
5507
+ msgstr "Internetmarke"
5508
+
5509
  # @ woocommerce-germanized
5510
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:143
5511
  msgid "Pages"
5512
  msgstr "Rechtlich relevante Seiten"
5513
 
5514
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:144
5515
  msgid "Create legal pages placeholders e.g. terms & conditions."
5516
  msgstr "Legen Sie rechtlich relevante Seiten an, z.B. AGB."
5517
 
5518
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:154
5519
  msgid "Germanize WooCommerce settings (e.g. currency, tax display)."
5520
  msgstr "WooCommerce Einstellungen eindeutschen (z.B. Währung)"
5521
 
5522
  # @ woocommerce-germanized
5523
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:161
5524
  msgctxt "install"
5525
  msgid "VAT"
5526
  msgstr "USt."
5527
 
5528
  # @ woocommerce-germanized
5529
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:162
5530
  msgid "Let Germanized insert EU VAT rates."
5531
  msgstr "Lassen Sie Germanized EU-Steuersätze importieren."
5532
 
5533
  # @ woocommerce-germanized
5534
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:168
5535
  msgctxt "install"
5536
  msgid "Virtual VAT"
5537
  msgstr "Virtuelle USt."
5538
 
5539
  # @ woocommerce-germanized
5540
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:169
5541
  msgid "Let Germanized insert virtual EU VAT rates."
5542
  msgstr "Lassen Sie Germanized virtuelle EU-Steuersätze importieren."
5543
 
5544
  # @ woocommerce-germanized
5545
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:180
5546
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-general.php:202
5547
  #: woocommerce-germanized/includes/admin/views/html-page-status-germanized.php:43
5548
  msgid "Small-Enterprise-Regulation"
5549
  msgstr "Kleinunternehmerregelung"
5550
 
5551
  # @ woocommerce-germanized
5552
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:181
5553
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-general.php:203
5554
  msgid "VAT based on &#167;19 UStG"
5555
  msgstr "Umsatzsteuerbefreit nach &#167;19 UStG"
5556
 
5557
  # @ woocommerce-germanized
5558
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:181
5559
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-general.php:203
5560
  #, php-format
5561
  msgid ""
5567
  "Gebrauch machen wollen."
5568
 
5569
  # @ woocommerce-germanized
5570
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:187
5571
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-doi.php:21
5572
  msgid "Double Opt In"
5573
  msgstr "Double-Opt-In"
5574
 
5575
  # @ woocommerce-germanized
5576
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:188
5577
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-doi.php:38
5578
  msgid "Enable customer double opt in during registration."
5579
  msgstr "Double-Opt-In Verfahren für Kundenkonten aktivieren."
5580
 
5581
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:188
5582
  #, php-format
5583
  msgid ""
5584
  "Sends an email to the customer after registration to verify his account. "
5592
  "\">Einstellungen</a> können nachträglich angepasst werden."
5593
 
5594
  # @ woocommerce-germanized
5595
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:208
5596
  msgid "Setup"
5597
  msgstr "Setup"
5598
 
5599
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:306
5600
  msgid "Germanized &rsaquo; Setup Wizard"
5601
  msgstr "Germanized &rsaquo; Setup"
5602
 
5603
  # @ woocommerce-germanized
5604
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:375
5605
  msgid "Skip Step"
5606
  msgstr "Schritt überspringen"
5607
 
5608
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:379
5609
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:381
5610
  msgid "Continue"
5611
  msgstr "Weiter"
5612
 
5613
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-setup-wizard.php:387
5614
  msgid "Return to WP Admin"
5615
  msgstr "Zurück zu WP Admin"
5616
 
5659
  msgstr "Willkommen bei Germanized"
5660
 
5661
  # @ woocommerce-germanized
5662
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin-welcome.php:290
5663
  msgid "Go to Germanized Settings"
5664
  msgstr "Germanized Einstellungen"
5665
 
5677
  #: woocommerce-germanized/includes/class-wc-gzd-dependencies.php:65
5678
  #: woocommerce-germanized/includes/class-wc-gzd-hook-priorities.php:35
5679
  #: woocommerce-germanized/includes/class-wc-gzd-hook-priorities.php:44
5680
+ #: woocommerce-germanized/includes/class-wc-gzd-order-helper.php:21
5681
+ #: woocommerce-germanized/includes/class-wc-gzd-order-helper.php:30
5682
  #: woocommerce-germanized/includes/class-wc-gzd-product-attribute-helper.php:21
5683
  #: woocommerce-germanized/includes/class-wc-gzd-product-attribute-helper.php:30
5684
  #: woocommerce-germanized/includes/export/class-wc-gzd-product-export.php:23
5690
  msgid "Cheatin&#8217; huh?"
5691
  msgstr "So geht das leider nicht.."
5692
 
5693
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:114
5694
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:148
5695
  msgctxt "dhl"
5696
  msgid "Action failed. Please refresh the page and retry."
5697
  msgstr ""
5698
  "Aktion fehlgeschlagen. Bitte aktualisieren Sie die Seite und versuchen es "
5699
  "erneut."
5700
 
5701
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:118
5702
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:152
5703
  msgctxt "dhl"
5704
  msgid "You don't have permission to do this."
5705
  msgstr "Sie sind leider nicht berechtigt, diese Aktion durchzuführen."
5706
 
5707
  # @ woocommerce-germanized
5708
  #. Plugin Name of the plugin/theme
5709
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:228
5710
  msgid "Germanized for WooCommerce"
5711
  msgstr "Germanized für WooCommerce"
5712
 
5713
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:338
5714
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:45
5715
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:58
5716
  msgid "Yes"
5717
  msgstr "Ja"
5718
 
5719
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:338
5720
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:58
5721
  msgid "No"
5722
  msgstr "Nein"
5723
 
5724
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:410
5725
  msgid "Paid for order notification manually sent to customer."
5726
  msgstr "Bestellung bezahlt manuell an den Kunden versendet."
5727
 
5728
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:430
5729
  msgid "Order confirmation manually sent to customer."
5730
  msgstr "Bestellbestätigung manuell an den Kunden versendet."
5731
 
5732
  # @ woocommerce-germanized
5733
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:450
5734
  msgid "Resend order confirmation"
5735
  msgstr "Bestellbestätigung erneut versenden"
5736
 
5737
  # @ woocommerce-germanized
5738
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:451
5739
  msgid "Send paid for order notification"
5740
  msgstr "Bestellung bezahlt manuell versenden"
5741
 
5742
  # @ woocommerce-germanized
5743
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:461
5744
  #: woocommerce-germanized/includes/admin/settings/abstract-wc-gzd-settings-tab.php:114
5745
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-germanized.php:23
5746
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:9
5748
  msgid "Germanized"
5749
  msgstr "Germanized"
5750
 
5751
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:475
5752
  msgid "Parcel Delivery Data Transfer:"
5753
  msgstr "Paketdienstleister Datenweitergabe:"
5754
 
5755
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:476
5756
  msgid "allowed"
5757
  msgstr "akzeptiert"
5758
 
5759
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:476
5760
  msgid "not allowed"
5761
  msgstr "nicht akzeptiert"
5762
 
5763
  # @ woocommerce-germanized
5764
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:559
5765
  msgid "Optional Email Content"
5766
  msgstr "Optionaler E-Mail Inhalt"
5767
 
5768
  # @ woocommerce-germanized
5769
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:577
5770
  msgid "Add content which will be replacing default page content within emails."
5771
  msgstr ""
5772
  "Füllen Sie dieses Feld aus um einen abweichenden E-Mail Anhangstext für "
5773
  "diese Seite zu bestimmen."
5774
 
5775
  # @ woocommerce-germanized
5776
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:591
5777
  #: woocommerce-germanized/includes/admin/meta-boxes/class-wc-gzd-meta-box-product-data-variable.php:152
5778
  msgid "Optional Mini Description"
5779
  msgstr "Warenkorb Kurzbeschreibung"
5780
 
5781
  # @ woocommerce-germanized
5782
+ #: woocommerce-germanized/includes/admin/class-wc-gzd-admin.php:613
5783
  msgid ""
5784
  "This content will be shown as short product description within checkout and "
5785
  "emails."
6002
  "Einstellungen importieren."
6003
 
6004
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:35
6005
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-internetmarke-importer.php:35
6006
  msgctxt "dhl"
6007
  msgid "No need to use an external plugin which might lead to incompatibilities"
6008
  msgstr ""
6010
  "bessere Performance"
6011
 
6012
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:36
6013
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-internetmarke-importer.php:36
6014
  #, php-format
6015
  msgctxt "dhl"
6016
  msgid ""
6021
  "Services pro Versandart und %s"
6022
 
6023
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:36
6024
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-internetmarke-importer.php:36
6025
  msgctxt "dhl"
6026
  msgid "many more"
6027
  msgstr "und viele mehr"
6035
  "für Sendungen und Retouren"
6036
 
6037
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:47
6038
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-internetmarke-importer.php:47
6039
  msgctxt "dhl"
6040
  msgid "Import settings and activate"
6041
  msgstr "Einstellungen importieren und loslegen"
6042
 
6043
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php:53
6044
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-internetmarke-importer.php:53
6045
  msgctxt "dhl"
6046
  msgid "Learn more"
6047
  msgstr "Mehr erfahren"
6048
 
6049
+ # @ woocommerce-germanized
6050
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-internetmarke-importer.php:29
6051
+ msgctxt "dhl"
6052
+ msgid "Internetmarke built-in Integration"
6053
+ msgstr "Internetmarke Integration"
6054
+
6055
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-internetmarke-importer.php:33
6056
+ msgctxt "dhl"
6057
+ msgid ""
6058
+ "It seems like you are currently using the Deutsche Post Internetmarke "
6059
+ "plugin. Germanized does now fully integrate Internetmarke and switching is "
6060
+ "as simple as can be. Check your advantages by using the Internetmarke "
6061
+ "integration in Germanized and let Germanized import your current settings "
6062
+ "for you."
6063
+ msgstr ""
6064
+ "Es scheint als würden Sie aktuell bereits das Deutsche Post Internetmarke "
6065
+ "Plugin nutzen. Germanized bietet nun eine eigene, verbesserte Integration "
6066
+ "der Internetmarke an. Den Wechsel haben wir Ihnen so einfach wie möglich "
6067
+ "gemacht. Schauen Sie sich Ihre Vorteile bei der Nutzung der Germanized "
6068
+ "Internetmarke Integration an und lassen Sie Germanized einfach Ihre "
6069
+ "bestehenden Einstellungen importieren."
6070
+
6071
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-internetmarke-importer.php:37
6072
+ msgctxt "dhl"
6073
+ msgid ""
6074
+ "Perfectly integrated in Germanized &ndash; easily create stamps for shipments"
6075
+ msgstr ""
6076
+ "Perfekt integriert in Germanized &ndash; erzeugen Sie einfach Labels für "
6077
+ "Sendungen"
6078
+
6079
  # @ woocommerce-germanized
6080
  #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note-pro.php:23
6081
  msgid "For professionals: Upgrade to Pro-Version"
6230
  msgid "Run the updater"
6231
  msgstr "Update starten"
6232
 
6233
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note.php:178
6234
  msgid "Not now"
6235
  msgstr "Nicht jetzt"
6236
 
6237
+ #: woocommerce-germanized/includes/admin/notes/class-wc-gzd-admin-note.php:182
6238
  msgctxt "woocommerce-germanized"
6239
  msgid "Deactivate"
6240
  msgstr "Deaktivieren"
6271
  msgstr "Jetzt upgraden"
6272
 
6273
  #: woocommerce-germanized/includes/admin/settings/abstract-wc-gzd-settings-tab.php:152
6274
+ #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-dhl.php:35
6275
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-invoices.php:61
6276
  msgid "Learn more"
6277
  msgstr "Mehr erfahren"
6292
 
6293
  # @ woocommerce-germanized
6294
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-pointers.php:92
6295
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:785
6296
  msgid "Status"
6297
  msgstr "Status"
6298
 
6576
  "Checkbox bearbeiten indem Sie auf den Link klicken."
6577
 
6578
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-checkboxes.php:62
6579
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:821
6580
  msgid "Label"
6581
  msgstr "Beschriftung"
6582
 
6646
  msgstr "pro"
6647
 
6648
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-dhl.php:19
6649
+ msgid "Integrate Post & DHL Services such as Labels for Shipments and Returns."
 
 
6650
  msgstr ""
6651
+ "Erzeugen Sie bequem Post & DHL Labels zu Sendungen und Retouren über Ihr "
6652
  "Admin-Panel."
6653
 
6654
+ #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-dhl.php:44
6655
+ msgid "Post & DHL"
6656
+ msgstr "Post & DHL"
 
6657
 
6658
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-doi.php:17
6659
  msgid "Extend the WooCommerce registration process with a double opt in."
6807
  #: woocommerce-germanized/includes/api/class-wc-gzd-rest-customers-controller.php:144
6808
  #: woocommerce-germanized/includes/api/class-wc-gzd-rest-orders-controller.php:138
6809
  #: woocommerce-germanized/includes/api/class-wc-gzd-rest-orders-controller.php:145
6810
+ #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:553
6811
+ #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:566
6812
  #: woocommerce-germanized/includes/class-wc-gzd-customer-helper.php:131
6813
  #: woocommerce-germanized/includes/class-wc-gzd-customer-helper.php:139
6814
  msgid "Title"
7276
  "Platzhalter für den höchsten Preis."
7277
 
7278
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-general.php:294
7279
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:861
7280
  msgid "{min_price} &ndash; {max_price}"
7281
  msgstr "{min_price} &ndash; {max_price}"
7282
 
7897
 
7898
  # @ woocommerce-germanized
7899
  #: woocommerce-germanized/includes/admin/settings/class-wc-gzd-settings-tab-taxes.php:30
7900
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:451
7901
  msgid "VAT"
7902
  msgstr "Umsatzsteuer"
7903
 
8152
  # @ woocommerce-germanized
8153
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-page-checkboxes.php:11
8154
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:27
8155
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:793
8156
  msgid "Name"
8157
  msgstr "Name"
8158
 
8159
  # @ woocommerce-germanized
8160
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-page-checkboxes.php:12
8161
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-settings-tabs.php:29
8162
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:812
8163
  #: woocommerce-germanized/includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php:888
8164
  #: woocommerce-germanized/includes/gateways/invoice/class-wc-gzd-gateway-invoice.php:124
8165
  msgid "Description"
8172
 
8173
  # @ woocommerce-germanized
8174
  #: woocommerce-germanized/includes/admin/settings/views/html-admin-page-checkboxes.php:14
8175
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:849
8176
  msgid "Mandatory"
8177
  msgstr "Pflichtfeld"
8178
 
8548
  "Lassen Sie Germanized Ihre WooCommerce-Einstellungen speziell für %s "
8549
  "anpassen."
8550
 
8551
+ #: woocommerce-germanized/includes/admin/views/setup/internetmarke.php:12
8552
+ msgid ""
8553
+ "Want to easily ship your orders via Deutsche Post? Enable our Internetmarke "
8554
+ "integration and start generating labels for shipments comfortably via your "
8555
+ "admin panel."
8556
+ msgstr ""
8557
+ "Sie möchten Ihre Bestellung mit der Deutschen Post versenden? Aktivieren Sie "
8558
+ "unsere Integration der Internetmarke und erzeugen Sie bequem Labels zu "
8559
+ "Sendungen über Ihr Admin-Panel."
8560
+
8561
+ #: woocommerce-germanized/includes/admin/views/setup/internetmarke.php:17
8562
+ msgid ""
8563
+ "We've found out that you have been using the Internetmarke standalone Plugin "
8564
+ "already. We will automatically import your settings and you can start using "
8565
+ "our integration instead."
8566
+ msgstr ""
8567
+ "Wir haben herausgefunden, dass Sie bereits das Plugin Deutsche Post "
8568
+ "Internetmarke verwenden. Wir importieren Ihre Einstellungen automatisch, "
8569
+ "damit Sie schnell und einfach unsere Integration nutzen können."
8570
+
8571
  # @ woocommerce-germanized
8572
  #: woocommerce-germanized/includes/admin/views/setup/settings.php:7
8573
  msgid "Adjust Germanized"
8818
  msgstr "Anzahl der veröffentlichten Produkte für die Ressource."
8819
 
8820
  # @ woocommerce-germanized
8821
+ #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:189
8822
  #, php-format
8823
  msgid "%s [new]"
8824
  msgstr "%s [neu]"
8825
 
8826
  # @ woocommerce-germanized
8827
+ #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:245
8828
  msgctxt "revocation-form"
8829
  msgid "is not a valid email address."
8830
  msgstr "ist leider keine valide E-Mail Adresse."
8831
 
8832
  # @ woocommerce-germanized
8833
+ #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:249
8834
  msgctxt "revocation-form"
8835
  msgid "Please enter a valid postcode/ZIP"
8836
  msgstr "Bitte geben Sie eine echte Postleitzahl ein"
8837
 
8838
  # @ woocommerce-germanized
8839
+ #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:257
8840
  msgctxt "revocation-form"
8841
  msgid "is not valid."
8842
  msgstr "ist leider nicht korrekt."
8843
 
8844
  # @ woocommerce-germanized
8845
+ #: woocommerce-germanized/includes/class-wc-gzd-ajax.php:278
8846
  msgctxt "revocation-form"
8847
  msgid ""
8848
  "Thank you. We have received your Revocation Request. You will receive a "
8851
  "Vielen Dank. Wir haben Ihren Widerruf erhalten. Sie bekommen in Kürze eine E-"
8852
  "Mail mit Ihren Daten als Bestätigung."
8853
 
8854
+ #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:227
8855
  msgid ""
8856
  "Sorry, but differential taxed products cannot be purchased with normal "
8857
  "products at the same time."
8859
  "Entschuldigung, differenzbesteuerte Produkte können nicht gemeinsam mit "
8860
  "normalen Produkten gekauft werden."
8861
 
8862
+ #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:233
8863
  msgid ""
8864
  "Sorry, but normal products cannot be purchased together with differential "
8865
  "taxed products at the same time."
8868
  "differenzbesteuerten Produkten gekauft werden."
8869
 
8870
  # @ woocommerce-germanized
8871
+ #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:790
8872
  #: woocommerce-germanized/includes/class-wc-gzd-revocation.php:52
8873
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:604
8874
  msgid "Mr."
8875
  msgstr "Herr"
8876
 
8877
  # @ woocommerce-germanized
8878
+ #: woocommerce-germanized/includes/class-wc-gzd-checkout.php:791
8879
  msgctxt "customer-title-male-address"
8880
  msgid "Mr."
8881
  msgstr "Herrn"
8882
 
8883
+ #: woocommerce-germanized/includes/class-wc-gzd-coupon-helper.php:318
8884
  msgid "Is voucher?"
8885
  msgstr "Wertgutschein?"
8886
 
8887
+ #: woocommerce-germanized/includes/class-wc-gzd-coupon-helper.php:319
8888
  #, php-format
8889
  msgid ""
8890
  "Whether or not this coupon is a voucher which has been sold to a customer "
8935
  msgid "Thank you. You have successfully activated your account."
8936
  msgstr "Vielen Dank. Ihr Benutzerkonto wurde erfolgreich aktiviert."
8937
 
8938
+ #: woocommerce-germanized/includes/class-wc-gzd-customer-helper.php:574
8939
  msgid "Expired activation key"
8940
  msgstr "Abgelaufener Aktivierungscode"
8941
 
8942
+ #: woocommerce-germanized/includes/class-wc-gzd-customer-helper.php:579
8943
  msgid "Invalid activation key"
8944
  msgstr "Aktivierungscode ungültig"
8945
 
8946
+ #: woocommerce-germanized/includes/class-wc-gzd-emails.php:186
8947
  msgid "BCC recipients"
8948
  msgstr "BCC Empfänger"
8949
 
8950
+ #: woocommerce-germanized/includes/class-wc-gzd-emails.php:188
8951
  msgid "Enter blind-copy recipients (comma separated) for this email."
8952
  msgstr ""
8953
  "Fügen Sie Empfänger (kommasepariert) einer Blindkopie für diese E-Mail ein."
8954
 
8955
  # @ woocommerce-germanized
8956
+ #: woocommerce-germanized/includes/class-wc-gzd-emails.php:227
8957
  msgid "Confirmation text"
8958
  msgstr "Bestätigung Text"
8959
 
8960
+ #: woocommerce-germanized/includes/class-wc-gzd-emails.php:228
8961
  msgid ""
8962
  "Your order has been received and is now being processed. Your order details "
8963
  "are shown below for your reference:"
8966
  "Ihrer Bestellung können Sie der nachfolgenden Tabelle entnehmen:"
8967
 
8968
  # @ woocommerce-germanized
8969
+ #: woocommerce-germanized/includes/class-wc-gzd-emails.php:229
8970
  msgid ""
8971
  "This text will be inserted within the order confirmation email. Use "
8972
  "{order_number}, {site_title} or {order_date} as placeholder."
8974
  "Dieser Text wird in die Bestellbestätigung eingefügt. Verwenden Sie "
8975
  "{order_number}, {site_title} oder {order_date} als Platzhalter."
8976
 
8977
+ #: woocommerce-germanized/includes/class-wc-gzd-emails.php:347
8978
  msgid ""
8979
  "Your order has been received and is now being processed. Your order details "
8980
  "are shown below for your reference."
8982
  "Ihre Bestellung ist eingegangen und wird nun bearbeitet. Die Einzelheiten "
8983
  "Ihrer Bestellung können Sie der nachfolgenden Tabelle entnehmen."
8984
 
8985
+ #: woocommerce-germanized/includes/class-wc-gzd-emails.php:395
8986
  msgid "Someone requested a password reset for your account."
8987
  msgstr "Jemand hat das Zurücksetzen des Passworts für Ihren Account beantragt."
8988
 
8989
+ #: woocommerce-germanized/includes/class-wc-gzd-emails.php:410
8990
  #, php-format
8991
  msgid "Thanks for creating an account on %s."
8992
  msgstr "Danke, dass Sie ein Konto bei %s erstellt haben."
8993
 
8994
  # @ woocommerce-germanized
8995
+ #: woocommerce-germanized/includes/class-wc-gzd-emails.php:1114
8996
  msgctxt "revocation-form"
8997
  msgid "Forward your Revocation online"
8998
  msgstr "Widerruf online erklären"
9007
  "Bitte installieren Sie <a href=\"%s\" target=\"_blank\">WooCommerce</a> "
9008
  "bevor Sie WooCommerce Germanized installieren. Vielen Dank!"
9009
 
9010
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:486
9011
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:500
9012
  msgid "Reduced rate"
9013
  msgstr "Ermäßigter Steuersatz"
9014
 
9015
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:542
9016
  #, php-format
9017
  msgctxt "vat-rate-import"
9018
  msgid "VAT %s"
9019
  msgstr "MwSt. %s"
9020
 
9021
  # @ woocommerce-germanized
9022
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:657
9023
  msgctxt "Page slug"
9024
  msgid "data-security"
9025
  msgstr "datenschutzerklaerung"
9026
 
9027
  # @ woocommerce-germanized
9028
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:658
9029
  msgctxt "Page title"
9030
  msgid "Data Security Statement"
9031
  msgstr "Datenschutzerklärung"
9032
 
9033
  # @ woocommerce-germanized
9034
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:662
9035
  msgctxt "Page slug"
9036
  msgid "imprint"
9037
  msgstr "impressum"
9038
 
9039
  # @ woocommerce-germanized
9040
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:663
9041
  msgctxt "Page title"
9042
  msgid "Imprint"
9043
  msgstr "Impressum"
9044
 
9045
  # @ woocommerce-germanized
9046
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:667
9047
  msgctxt "Page slug"
9048
  msgid "terms"
9049
  msgstr "agb"
9050
 
9051
  # @ woocommerce-germanized
9052
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:668
9053
  msgctxt "Page title"
9054
  msgid "Terms & Conditions"
9055
  msgstr "AGB"
9056
 
9057
  # @ woocommerce-germanized
9058
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:672
9059
  msgctxt "Page slug"
9060
  msgid "revocation"
9061
  msgstr "widerrufsbelehrung"
9062
 
9063
  # @ woocommerce-germanized
9064
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:673
9065
  msgctxt "Page title"
9066
  msgid "Power of Revocation"
9067
  msgstr "Widerrufsbelehrung"
9068
 
9069
  # @ woocommerce-germanized
9070
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:677
9071
  msgctxt "Page slug"
9072
  msgid "shipping-methods"
9073
  msgstr "versandarten"
9074
 
9075
  # @ woocommerce-germanized
9076
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:678
9077
  msgctxt "Page title"
9078
  msgid "Shipping Methods"
9079
  msgstr "Versandarten"
9080
 
9081
  # @ woocommerce-germanized
9082
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:682
9083
  msgctxt "Page slug"
9084
  msgid "payment-methods"
9085
  msgstr "bezahlmoeglichkeiten"
9086
 
9087
  # @ woocommerce-germanized
9088
+ #: woocommerce-germanized/includes/class-wc-gzd-install.php:683
9089
  msgctxt "Page title"
9090
  msgid "Payment Methods"
9091
  msgstr "Zahlungsarten"
9304
  msgid "Checkbox with name %s does already exist."
9305
  msgstr "Eine Checkbox mit dem Namen %s existiert bereits."
9306
 
9307
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:344
9308
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:364
9309
+ #, php-format
9310
+ msgid "%s is a mandatory field."
9311
+ msgstr "%s ist ein Pflichtfeld."
9312
+
9313
  # @ woocommerce-germanized
9314
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:788
9315
  msgid "Enable checkbox"
9316
  msgstr "Checkbox aktivieren"
9317
 
9318
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:797
9319
  msgid ""
9320
  "Choose a name to identify your checkbox. Upon creating a new checkbox, this "
9321
  "value is being used to generate the Id."
9323
  "Wähle einen Namen um die Checkbox zu identifizieren. Bei Erstellung einer "
9324
  "neuen Checkbox wird dieser Wert verwendet um eine Id zu erstellen."
9325
 
9326
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:802
9327
  msgid "Id"
9328
  msgstr "Id"
9329
 
9330
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:806
9331
  msgid ""
9332
  "The checkbox Id is the unique indentifier which is used to identify the "
9333
  "checkbox within the code. Cannot be edited after creating the checkbox."
9336
  "Code heraus zugreifbar zu machen. Kann nach dem Erstellen einer Checkbox "
9337
  "nicht mehr verändert werden."
9338
 
9339
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:815
9340
  msgid "Describe the use case of your checkbox."
9341
  msgstr "Beschreibe hier den Use-Case der Checkbox."
9342
 
9343
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:825
9344
  msgid "Choose a label to be inserted next to the checkbox."
9345
  msgstr ""
9346
  "Wählen Sie eine Beschriftung aus, die neben der Checkbox platziert wird."
9347
 
9348
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:826
9349
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:836
9350
  #, php-format
9351
  msgid "You may use one of the following placeholders within the text: %s"
9352
  msgstr "Sie können einen der folgenden Platzhalter im Text verwenden: %s"
9353
 
9354
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:831
9355
  msgid "Error Message"
9356
  msgstr "Fehlermeldung"
9357
 
9358
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:835
9359
  msgid ""
9360
  "Choose an error message to be shown when the user has not confirmed the "
9361
  "checkbox."
9364
  "Nutzer die Checkbox nicht bestätigt hat."
9365
 
9366
  # @ woocommerce-germanized
9367
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:841
9368
  msgid "Hide input"
9369
  msgstr "Ausblenden"
9370
 
9371
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:844
9372
  msgid "Do only show a label and hide the actual checkbox."
9373
  msgstr ""
9374
  "Zeige lediglich die Beschriftung und entferne die eigentliche Checkbox."
9375
 
9376
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:852
9377
  msgid "Mark the checkbox as mandatory."
9378
  msgstr "Checkbox zum Pflichtfeld machen."
9379
 
9380
  # @ woocommerce-germanized
9381
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:857
9382
  msgid "Locations"
9383
  msgstr "Orte"
9384
 
9385
+ #: woocommerce-germanized/includes/class-wc-gzd-legal-checkbox.php:861
9386
  msgid "Choose where to display your checkbox."
9387
  msgstr "Wählen Sie einen Ort aus, an dem die Checkbox platziert werden soll."
9388
 
9659
 
9660
  # @ woocommerce-germanized
9661
  #: woocommerce-germanized/includes/class-wc-gzd-revocation.php:53
9662
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:605
9663
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:623
9664
  msgid "Ms."
9665
  msgstr "Frau"
9666
 
10521
  msgid "Data Security"
10522
  msgstr "Datenschutzerklärung"
10523
 
10524
+ # @ woocommerce-germanized
10525
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:451
10526
+ #, php-format
10527
+ msgid "%s%% VAT"
10528
+ msgstr "%s %% MwSt."
10529
+
10530
+ # @ woocommerce-germanized
10531
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:603
10532
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:630
10533
+ msgctxt "title-option"
10534
+ msgid "None"
10535
+ msgstr "Keine"
10536
+
10537
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:606
10538
+ #: woocommerce-germanized/includes/wc-gzd-core-functions.php:630
10539
+ msgid "Mx"
10540
+ msgstr "Divers"
10541
+
10542
  # @ woocommerce-germanized
10543
  #: woocommerce-germanized/includes/wc-gzd-template-functions.php:225
10544
  #: woocommerce-germanized/templates/checkout/edit-data-notice.php:25
10892
  msgid "Forward Revocation"
10893
  msgstr "Widerruf erklären"
10894
 
10895
+ #: woocommerce-germanized/templates/global/complaints.php:22
10896
  msgid ""
10897
  "Alternative Dispute Resolution in accordance with Art. 14 (1) ODR-VO and § "
10898
  "36 VSBG:"
10914
  msgid "upgrade"
10915
  msgstr "aktualisieren"
10916
 
10917
+ #: woocommerce-germanized/woocommerce-germanized.php:317
10918
  #, php-format
10919
  msgid ""
10920
  "This version of the Corona Helper Plugin includes a bug which could lead to "
12168
  msgid "https://vendidero.de"
12169
  msgstr "https://vendidero.de"
12170
 
12171
+ # @ woocommerce-germanized
12172
+ #~ msgctxt "dhl"
12173
+ #~ msgid "General"
12174
+ #~ msgstr "Allgemein"
12175
+
12176
+ #~ msgctxt "dhl"
12177
+ #~ msgid "Harmonized Tariff Schedule (DHL)"
12178
+ #~ msgstr "Harmonized Tariff Schedule (DHL)"
12179
+
12180
+ #~ msgctxt "dhl"
12181
+ #~ msgid "This code is needed for customs of international shipping."
12182
+ #~ msgstr ""
12183
+ #~ "Dieser Code wird für die Zollabwicklung bei internationalen Sendungen "
12184
+ #~ "benötigt."
12185
+
12186
+ #~ msgctxt "dhl"
12187
+ #~ msgid "Visual minimum age"
12188
+ #~ msgstr "Alterssichtprüfung"
12189
+
12190
+ #~ msgctxt "dhl"
12191
+ #~ msgid "Age Verification"
12192
+ #~ msgstr "Alterssichtprüfung"
12193
+
12194
  #~ msgid "PDF Layout"
12195
  #~ msgstr "PDF Layout"
12196
 
12443
  #~ msgid "Invalid shipment"
12444
  #~ msgstr "Ungültige Sendung"
12445
 
 
 
 
 
12446
  #, php-format
12447
  #~ msgctxt "dhl"
12448
  #~ msgid ""
includes/admin/class-wc-gzd-admin-notices.php CHANGED
@@ -44,9 +44,9 @@ if ( ! class_exists( 'WC_GZD_Admin_Notices' ) ) :
44
  }
45
 
46
  protected function __construct() {
47
- add_action( 'admin_init', array( $this, 'check_notice_hide' ) );
48
 
49
- add_action( 'after_switch_theme', array( $this, 'remove_theme_notice_hide' ) );
50
  add_action( 'admin_print_styles', array( $this, 'add_notices' ), 1 );
51
 
52
  include_once( 'notes/class-wc-gzd-admin-note.php' );
@@ -56,6 +56,7 @@ if ( ! class_exists( 'WC_GZD_Admin_Notices' ) ) :
56
  include_once( 'notes/class-wc-gzd-admin-note-template-outdated.php' );
57
  include_once( 'notes/class-wc-gzd-admin-note-pro.php' );
58
  include_once( 'notes/class-wc-gzd-admin-note-dhl-importer.php' );
 
59
  }
60
 
61
  public function enable_notices() {
@@ -86,14 +87,15 @@ if ( ! class_exists( 'WC_GZD_Admin_Notices' ) ) :
86
  public function get_notes() {
87
  if ( is_null( $this->notes ) ) {
88
 
89
- $notes = array(
90
  'WC_GZD_Admin_Note_Theme_Supported',
91
  'WC_GZD_Admin_Note_Update',
92
  'WC_GZD_Admin_Note_Review',
93
  'WC_GZD_Admin_Note_Template_Outdated',
94
  'WC_GZD_Admin_Note_Pro',
95
- 'WC_GZD_Admin_Note_DHL_Importer'
96
- );
 
97
 
98
  $this->notes = array();
99
 
44
  }
45
 
46
  protected function __construct() {
47
+ add_action( 'admin_init', array( $this, 'check_notice_hide' ), 25 );
48
 
49
+ add_action( 'after_switch_theme', array( $this, 'remove_theme_notice_hide' ), 25 );
50
  add_action( 'admin_print_styles', array( $this, 'add_notices' ), 1 );
51
 
52
  include_once( 'notes/class-wc-gzd-admin-note.php' );
56
  include_once( 'notes/class-wc-gzd-admin-note-template-outdated.php' );
57
  include_once( 'notes/class-wc-gzd-admin-note-pro.php' );
58
  include_once( 'notes/class-wc-gzd-admin-note-dhl-importer.php' );
59
+ include_once( 'notes/class-wc-gzd-admin-note-internetmarke-importer.php' );
60
  }
61
 
62
  public function enable_notices() {
87
  public function get_notes() {
88
  if ( is_null( $this->notes ) ) {
89
 
90
+ $notes = apply_filters( 'woocommerce_gzd_admin_notes', array(
91
  'WC_GZD_Admin_Note_Theme_Supported',
92
  'WC_GZD_Admin_Note_Update',
93
  'WC_GZD_Admin_Note_Review',
94
  'WC_GZD_Admin_Note_Template_Outdated',
95
  'WC_GZD_Admin_Note_Pro',
96
+ 'WC_GZD_Admin_Note_DHL_Importer',
97
+ 'WC_GZD_Admin_Note_Internetmarke_Importer'
98
+ ) );
99
 
100
  $this->notes = array();
101
 
includes/admin/class-wc-gzd-admin-setup-wizard.php CHANGED
@@ -86,7 +86,7 @@ if ( ! class_exists( 'WC_GZD_Admin_Setup_Wizard' ) ) :
86
  ),
87
  );
88
 
89
- if ( class_exists( '\Vendidero\Germanized\DHL\Package' ) && Package::has_dependencies() && ! get_option( 'woocommerc_gzd_dhl_import_finished' ) && 'yes' !== get_option( 'woocommerce_gzd_dhl_enable' ) ) {
90
 
91
  $default_steps['dhl'] = array(
92
  'name' => __( 'DHL', 'woocommerce-germanized' ),
@@ -96,8 +96,20 @@ if ( ! class_exists( 'WC_GZD_Admin_Setup_Wizard' ) ) :
96
  'errors' => array(),
97
  );
98
 
99
- if ( Importer::is_available() ) {
100
- $default_steps['dhl']['button_next'] = __( 'Import settings', 'woocommerce-germanized' );
 
 
 
 
 
 
 
 
 
 
 
 
101
  }
102
  }
103
 
@@ -182,6 +194,8 @@ if ( ! class_exists( 'WC_GZD_Admin_Setup_Wizard' ) ) :
182
  );
183
  } elseif( 'dhl' === $step ) {
184
  $settings = Settings::get_setup_settings();
 
 
185
  }
186
 
187
  return $settings;
@@ -575,7 +589,7 @@ if ( ! class_exists( 'WC_GZD_Admin_Setup_Wizard' ) ) :
575
  $settings = $this->get_settings( $this->step );
576
  $is_enabled = get_option( 'woocommerce_gzd_dhl_enable' );
577
 
578
- if ( 'yes' !== $is_enabled && Importer::is_available() ) {
579
  WC_GZD_Admin::instance()->import_dhl_settings();
580
  } elseif ( ! empty( $settings) ) {
581
  WC_Admin_Settings::save_fields( $settings );
@@ -589,6 +603,22 @@ if ( ! class_exists( 'WC_GZD_Admin_Setup_Wizard' ) ) :
589
  wp_safe_redirect( $redirect );
590
  exit();
591
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
592
  }
593
 
594
  endif;
86
  ),
87
  );
88
 
89
+ if ( class_exists( '\Vendidero\Germanized\DHL\Package' ) && Package::has_dependencies() ) {
90
 
91
  $default_steps['dhl'] = array(
92
  'name' => __( 'DHL', 'woocommerce-germanized' ),
96
  'errors' => array(),
97
  );
98
 
99
+ if ( Importer\DHL::is_available() ) {
100
+ $default_steps['dhl']['button_next'] = __( 'Import settings', 'woocommerce-germanized' );
101
+ }
102
+
103
+ $default_steps['internetmarke'] = array(
104
+ 'name' => __( 'Internetmarke', 'woocommerce-germanized' ),
105
+ 'view' => 'internetmarke.php',
106
+ 'handler' => array( $this, 'wc_gzd_setup_internetmarke_save' ),
107
+ 'order' => 4,
108
+ 'errors' => array(),
109
+ );
110
+
111
+ if ( Importer\Internetmarke::is_available() ) {
112
+ $default_steps['internetmarke']['button_next'] = __( 'Import settings', 'woocommerce-germanized' );
113
  }
114
  }
115
 
194
  );
195
  } elseif( 'dhl' === $step ) {
196
  $settings = Settings::get_setup_settings();
197
+ } elseif( 'internetmarke' === $step ) {
198
+ $settings = Settings::get_internetmarke_setup_settings();
199
  }
200
 
201
  return $settings;
589
  $settings = $this->get_settings( $this->step );
590
  $is_enabled = get_option( 'woocommerce_gzd_dhl_enable' );
591
 
592
+ if ( 'yes' !== $is_enabled && Importer\DHL::is_available() ) {
593
  WC_GZD_Admin::instance()->import_dhl_settings();
594
  } elseif ( ! empty( $settings) ) {
595
  WC_Admin_Settings::save_fields( $settings );
603
  wp_safe_redirect( $redirect );
604
  exit();
605
  }
606
+
607
+ public function wc_gzd_setup_internetmarke_save() {
608
+ $redirect = $this->get_step_url( $this->get_next_step() );
609
+ $current_url = $this->get_step_url( $this->step );
610
+ $settings = $this->get_settings( $this->step );
611
+ $is_enabled = get_option( 'woocommerce_gzd_dhl_internetmarke_enable' );
612
+
613
+ if ( 'yes' !== $is_enabled && Importer\Internetmarke::is_available() ) {
614
+ WC_GZD_Admin::instance()->import_internetmarke_settings();
615
+ } elseif ( ! empty( $settings) ) {
616
+ WC_Admin_Settings::save_fields( $settings );
617
+ }
618
+
619
+ wp_safe_redirect( $redirect );
620
+ exit();
621
+ }
622
  }
623
 
624
  endif;
includes/admin/class-wc-gzd-admin-welcome.php CHANGED
@@ -136,6 +136,33 @@ class WC_GZD_Admin_Welcome {
136
  zur <span class="wc-gzd-pro">pro</span> Version</a>
137
  </p>
138
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  <div class="changelog new-feature">
140
  <h3>Neu: PDF-Dokumente visuell bearbeiten <span class="wc-gzd-pro wc-gzd-pro-outlined">pro</span></h3>
141
 
@@ -219,23 +246,22 @@ class WC_GZD_Admin_Welcome {
219
  </div>
220
 
221
  <div class="changelog">
222
- <h3>Weitere Neuigkeiten in Germanized 3.0</h3>
223
 
224
  <div class="three-col columns">
225
  <div class="col">
226
- <h4><span class="dashicons dashicons-cart"></span> Preisauszeichnungen</h4>
227
  <p>
228
- In Germanized 3.0 entscheidest du flexibel, wo, welche Preisauszeichnungen angezeigt werden
229
- sollen. Du kannst zudem die Priorität bzw. Reihenfolge bequem über die UI anpassen und
230
- verschiedene Orte im Template wählen.
231
  </p>
232
  </div>
233
  <div class="col">
234
- <h4><span class="dashicons dashicons-admin-appearance"></span> Strukturierte Einstellungen</h4>
235
  <p>
236
- Wir haben die UI für die Einstellungen komplett überarbeitet. Dabei haben wir explizit Wert
237
- auf die Übersichtlichkeit gelegt. Die verschiedenen Rubriken können jetzt übersichtlich in
238
- einer Tabelle ausgewählt werden.
239
  </p>
240
  </div>
241
  <div class="col">
136
  zur <span class="wc-gzd-pro">pro</span> Version</a>
137
  </p>
138
 
139
+ <?php if ( \Vendidero\Germanized\DHL\Package::has_dependencies() ) : ?>
140
+ <div class="changelog new-feature">
141
+ <h3>Neu: Integration der Internetmarke</h3>
142
+
143
+ <div class="columns two-col">
144
+ <div class="col col-center">
145
+ <img src="<?php echo WC_germanized()->plugin_url(); ?>/assets/images/create-dp-label.png"/>
146
+ </div>
147
+ <div class="col">
148
+ <p>
149
+ Mit der neuesten Version kannst du nun (neben der DHL Integration) auch die Internetmarke nutzen um zu deinen Sendungen unkompliziert Labels zu erstellen. Ein DHL Geschäftskundenkonto benötigst du dafür nicht.
150
+ Die Produkte der Deutschen Post (z.B. Warenpost International, Briefprodukte usw.) stehen dir damit direkt über Germanized zur Verfügung.
151
+ </p>
152
+ <p>
153
+ Beim Erstellen der Labels erhältst du nützliche Informationen zu den Kosten, Größen und Beschränkungen der Produkte. Auch ein Vorschau des Labels wird dir angezeigt. Für die Warenpost International
154
+ wird für dich direkt ein harmonized Label erzeugt und ggfs. eine CN23 Zollerklärung.
155
+ </p>
156
+
157
+ <div class="wc-gzd-actions">
158
+ <a href="https://vendidero.de/dokument/internetmarke-integration-einrichten" target="_blank" class="button button-primary">Weitere Informationen</a>
159
+ <a href="<?php echo \Vendidero\Germanized\DHL\Admin\Settings::get_settings_url( 'internetmarke' ); ?>" class="button button-primary" target="_blank">Zu den Einstellungen</a>
160
+ </div>
161
+ </div>
162
+ </div>
163
+ </div>
164
+ <?php endif; ?>
165
+
166
  <div class="changelog new-feature">
167
  <h3>Neu: PDF-Dokumente visuell bearbeiten <span class="wc-gzd-pro wc-gzd-pro-outlined">pro</span></h3>
168
 
246
  </div>
247
 
248
  <div class="changelog">
249
+ <h3>Weitere Neuigkeiten in Germanized 3.3</h3>
250
 
251
  <div class="three-col columns">
252
  <div class="col">
253
+ <h4><span class="dashicons dashicons-cart"></span> Verpackungen</h4>
254
  <p>
255
+ Mit Germanized 3.3 kannst du zu deinen Sendungen jetzt flexibel Verpackungsmaterial hinzufügen
256
+ und damit das Gesamtgewicht der Sendungen (das z.B. für die Label-Erstellung benötigt wird) besser verwalten.
 
257
  </p>
258
  </div>
259
  <div class="col">
260
+ <h4><span class="dashicons dashicons-admin-appearance"></span> Grundpreisberechnung</h4>
261
  <p>
262
+ Um Staffelpreise oder Rollen-basierte-Preise besser zu unterstützen, aktualisiert
263
+ Germanized nun automatisch den Grundpreis wenn sich auf der Produktseite der Preis ändert
264
+ oder durch ein Plugin dynamisch verändert wird.
265
  </p>
266
  </div>
267
  <div class="col">
includes/admin/class-wc-gzd-admin.php CHANGED
@@ -61,6 +61,7 @@ class WC_GZD_Admin {
61
  add_action( 'admin_init', array( $this, 'check_resend_activation_email' ) );
62
  add_action( 'admin_init', array( $this, 'check_notices' ) );
63
  add_action( 'admin_init', array( $this, 'check_dhl_import' ) );
 
64
 
65
  add_filter( 'woocommerce_addons_section_data', array( $this, 'set_addon' ), 10, 2 );
66
  add_action( 'woocommerce_admin_order_data_after_shipping_address', array(
@@ -102,11 +103,11 @@ class WC_GZD_Admin {
102
 
103
  public function check_dhl_import() {
104
 
105
- if ( ! class_exists( '\Vendidero\Germanized\DHL\Admin\Importer' ) ) {
106
  return;
107
  }
108
 
109
- if ( Importer::is_available() ) {
110
  if ( isset( $_GET['wc-gzd-dhl-import'] ) && isset( $_GET['_wpnonce'] ) ) { // WPCS: input var ok, CSRF ok.
111
 
112
  if ( ! wp_verify_nonce( sanitize_key( wp_unslash( $_GET['_wpnonce'] ) ), 'woocommerce_gzd_dhl_import_nonce' ) ) { // WPCS: input var ok, CSRF ok.
@@ -125,8 +126,8 @@ class WC_GZD_Admin {
125
  }
126
 
127
  public function import_dhl_settings() {
128
- Importer::import_order_data( 50 );
129
- Importer::import_settings();
130
 
131
  deactivate_plugins( 'dhl-for-woocommerce/pr-dhl-woocommerce.php' );
132
 
@@ -134,6 +135,39 @@ class WC_GZD_Admin {
134
  update_option( 'woocommerc_gzd_dhl_import_finished', 'yes' );
135
  }
136
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  public function save_toggle_input_field( $value, $option, $raw_value ) {
138
  if ( 'gzd_toggle' === $option['type'] ) {
139
  $value = '1' === $raw_value || 'yes' === $raw_value ? 'yes' : 'no';
@@ -714,7 +748,7 @@ class WC_GZD_Admin {
714
  public function is_complaints_shortcode_inserted( $page_id ) {
715
  $post = get_post( $page_id );
716
  if ( $post ) {
717
- return ( strpos( $post->post_content, '[gzd_complaints]' ) !== false ? true : false );
718
  }
719
 
720
  return false;
61
  add_action( 'admin_init', array( $this, 'check_resend_activation_email' ) );
62
  add_action( 'admin_init', array( $this, 'check_notices' ) );
63
  add_action( 'admin_init', array( $this, 'check_dhl_import' ) );
64
+ add_action( 'admin_init', array( $this, 'check_internetmarke_import' ) );
65
 
66
  add_filter( 'woocommerce_addons_section_data', array( $this, 'set_addon' ), 10, 2 );
67
  add_action( 'woocommerce_admin_order_data_after_shipping_address', array(
103
 
104
  public function check_dhl_import() {
105
 
106
+ if ( ! class_exists( '\Vendidero\Germanized\DHL\Admin\Importer\DHL' ) ) {
107
  return;
108
  }
109
 
110
+ if ( Importer\DHL::is_available() ) {
111
  if ( isset( $_GET['wc-gzd-dhl-import'] ) && isset( $_GET['_wpnonce'] ) ) { // WPCS: input var ok, CSRF ok.
112
 
113
  if ( ! wp_verify_nonce( sanitize_key( wp_unslash( $_GET['_wpnonce'] ) ), 'woocommerce_gzd_dhl_import_nonce' ) ) { // WPCS: input var ok, CSRF ok.
126
  }
127
 
128
  public function import_dhl_settings() {
129
+ Importer\DHL::import_order_data( 50 );
130
+ Importer\DHL::import_settings();
131
 
132
  deactivate_plugins( 'dhl-for-woocommerce/pr-dhl-woocommerce.php' );
133
 
135
  update_option( 'woocommerc_gzd_dhl_import_finished', 'yes' );
136
  }
137
 
138
+ public function check_internetmarke_import() {
139
+
140
+ if ( ! class_exists( '\Vendidero\Germanized\DHL\Admin\Importer\Internetmarke' ) ) {
141
+ return;
142
+ }
143
+
144
+ if ( Importer\Internetmarke::is_available() ) {
145
+ if ( isset( $_GET['wc-gzd-internetmarke-import'] ) && isset( $_GET['_wpnonce'] ) ) { // WPCS: input var ok, CSRF ok.
146
+
147
+ if ( ! wp_verify_nonce( sanitize_key( wp_unslash( $_GET['_wpnonce'] ) ), 'woocommerce_gzd_internetmarke_import_nonce' ) ) { // WPCS: input var ok, CSRF ok.
148
+ wp_die( esc_html_x( 'Action failed. Please refresh the page and retry.', 'dhl', 'woocommerce-germanized' ) );
149
+ }
150
+
151
+ if ( ! current_user_can( 'manage_woocommerce' ) ) {
152
+ wp_die( esc_html_x( 'You don\'t have permission to do this.', 'dhl', 'woocommerce-germanized' ) );
153
+ }
154
+
155
+ $this->import_internetmarke_settings();
156
+
157
+ wp_safe_redirect( admin_url( 'admin.php?page=wc-settings&tab=germanized-dhl&section=internetmarke' ) );
158
+ }
159
+ }
160
+ }
161
+
162
+ public function import_internetmarke_settings() {
163
+ Importer\DHL::import_settings();
164
+
165
+ deactivate_plugins( 'woo-dp-internetmarke/woo-dp-internetmarke.php' );
166
+
167
+ update_option( 'woocommerce_gzd_dhl_internetmarke_enable', 'yes' );
168
+ update_option( 'woocommerce_gzd_internetmarke_import_finished', 'yes' );
169
+ }
170
+
171
  public function save_toggle_input_field( $value, $option, $raw_value ) {
172
  if ( 'gzd_toggle' === $option['type'] ) {
173
  $value = '1' === $raw_value || 'yes' === $raw_value ? 'yes' : 'no';
748
  public function is_complaints_shortcode_inserted( $page_id ) {
749
  $post = get_post( $page_id );
750
  if ( $post ) {
751
+ return ( strpos( $post->post_content, '[gzd_complaints' ) !== false ? true : false );
752
  }
753
 
754
  return false;
includes/admin/notes/class-wc-gzd-admin-note-dhl-importer.php CHANGED
@@ -10,7 +10,7 @@ class WC_GZD_Admin_Note_DHL_Importer extends WC_GZD_Admin_Note {
10
  public function is_disabled() {
11
  $is_disabled = true;
12
 
13
- if ( class_exists( 'Vendidero\Germanized\DHL\Admin\Importer' ) && Vendidero\Germanized\DHL\Admin\Importer::is_plugin_enabled() && Vendidero\Germanized\DHL\Admin\Importer::is_available() ) {
14
  $is_disabled = false;
15
  }
16
 
10
  public function is_disabled() {
11
  $is_disabled = true;
12
 
13
+ if ( class_exists( 'Vendidero\Germanized\DHL\Admin\Importer\DHL' ) && Vendidero\Germanized\DHL\Admin\Importer\DHL::is_plugin_enabled() && Vendidero\Germanized\DHL\Admin\Importer\DHL::is_available() ) {
14
  $is_disabled = false;
15
  }
16
 
includes/admin/notes/class-wc-gzd-admin-note-internetmarke-importer.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined( 'ABSPATH' ) || exit;
4
+
5
+ /**
6
+ * WC_Admin_Notes_Welcome_Message.
7
+ */
8
+ class WC_GZD_Admin_Note_Internetmarke_Importer extends WC_GZD_Admin_Note {
9
+
10
+ public function is_disabled() {
11
+ $is_disabled = true;
12
+
13
+ if ( class_exists( 'Vendidero\Germanized\DHL\Admin\Importer\Internetmarke' ) && Vendidero\Germanized\DHL\Admin\Importer\Internetmarke::is_plugin_enabled() && Vendidero\Germanized\DHL\Admin\Importer\Internetmarke::is_available() ) {
14
+ $is_disabled = false;
15
+ }
16
+
17
+ if ( ! $is_disabled ) {
18
+ return parent::is_disabled();
19
+ } else {
20
+ return true;
21
+ }
22
+ }
23
+
24
+ public function get_name() {
25
+ return 'internetmarke_importer';
26
+ }
27
+
28
+ public function get_title() {
29
+ return _x( 'Internetmarke built-in Integration', 'dhl', 'woocommerce-germanized' );
30
+ }
31
+
32
+ public function get_content() {
33
+ $content = '<p>' . _x( 'It seems like you are currently using the Deutsche Post Internetmarke plugin. Germanized does now fully integrate Internetmarke and switching is as simple as can be. Check your advantages by using the Internetmarke integration in Germanized and let Germanized import your current settings for you.', 'dhl', 'woocommerce-germanized' ) . '</p>
34
+ <ul>
35
+ <li>✓ ' . _x( 'No need to use an external plugin which might lead to incompatibilities', 'dhl', 'woocommerce-germanized' ) . '</li>
36
+ <li>✓ ' . sprintf( _x( 'Many improved features such as automation, services per shipping method and %s', 'dhl', 'woocommerce-germanized' ), '<a href="https://vendidero.de/dokument/internetmarke-integration-einrichten" target="_blank">' . _x( 'many more', 'dhl', 'woocommerce-germanized' ) . '</a>' ) . '</li>
37
+ <li>✓ ' . _x( 'Perfectly integrated in Germanized &ndash; easily create stamps for shipments', 'dhl', 'woocommerce-germanized' ) . '</li>
38
+ </ul>';
39
+
40
+ return $content;
41
+ }
42
+
43
+ public function get_actions() {
44
+ return array(
45
+ array(
46
+ 'url' => wp_nonce_url( add_query_arg( 'wc-gzd-internetmarke-import', 'yes' ), 'woocommerce_gzd_internetmarke_import_nonce' ) ,
47
+ 'title' => _x( 'Import settings and activate', 'dhl', 'woocommerce-germanized' ),
48
+ 'target' => '_self',
49
+ 'is_primary' => true,
50
+ ),
51
+ array(
52
+ 'url' => 'https://vendidero.de/dokument/internetmarke-integration-einrichten',
53
+ 'title' => _x( 'Learn more', 'dhl', 'woocommerce-germanized' ),
54
+ 'target' => '_blank',
55
+ 'is_primary' => false,
56
+ ),
57
+ );
58
+ }
59
+ }
includes/admin/notes/class-wc-gzd-admin-note.php CHANGED
@@ -48,9 +48,13 @@ abstract class WC_GZD_Admin_Note {
48
  return false;
49
  }
50
 
 
 
 
 
51
  public function is_disabled() {
52
 
53
- if ( ! WC_GZD_Admin_Notices::instance()->enable_notices() && $this->is_dismissable() ) {
54
  return true;
55
  }
56
 
48
  return false;
49
  }
50
 
51
+ public function enable_notices() {
52
+ return WC_GZD_Admin_Notices::instance()->enable_notices();
53
+ }
54
+
55
  public function is_disabled() {
56
 
57
+ if ( ! $this->enable_notices() && $this->is_dismissable() ) {
58
  return true;
59
  }
60
 
includes/admin/settings/class-wc-gzd-settings-tab-dhl.php CHANGED
@@ -16,21 +16,32 @@ use Vendidero\Germanized\DHL\Admin\Settings;
16
  class WC_GZD_Settings_Tab_DHL extends WC_GZD_Settings_Tab {
17
 
18
  public function get_description() {
19
- return __( 'Integrate DHL Services such as Labels for Shipments and Returns and Delivery to Packstations.', 'woocommerce-germanized' );
20
  }
21
 
22
  protected function get_breadcrumb_label( $label ) {
23
- $label = parent::get_breadcrumb_label( $label );
 
 
 
 
 
 
 
 
 
24
 
25
- if ( empty( $this->get_current_section() ) ) {
26
- $label .= '<a href="https://www.dhl.de/de/geschaeftskunden/paket/kunde-werden/angebot-dhl-geschaeftskunden-online.html" class="page-title-action" target="_blank">' . _x( 'Not yet a customer?', 'dhl', 'woocommerce-germanized' ) . '</a>';
27
  }
28
 
 
 
29
  return $label;
30
  }
31
 
32
  public function get_label() {
33
- return __( 'DHL', 'woocommerce-germanized' );
34
  }
35
 
36
  public function get_name() {
@@ -38,7 +49,7 @@ class WC_GZD_Settings_Tab_DHL extends WC_GZD_Settings_Tab {
38
  }
39
 
40
  public function get_help_link() {
41
- return 'https://vendidero.de/dokument/dhl-integration-einrichten';
42
  }
43
 
44
  public function get_tab_settings( $current_section = '' ) {
@@ -66,4 +77,20 @@ class WC_GZD_Settings_Tab_DHL extends WC_GZD_Settings_Tab {
66
  public function supports_disabling() {
67
  return true;
68
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  }
16
  class WC_GZD_Settings_Tab_DHL extends WC_GZD_Settings_Tab {
17
 
18
  public function get_description() {
19
+ return __( 'Integrate Post & DHL Services such as Labels for Shipments and Returns.', 'woocommerce-germanized' );
20
  }
21
 
22
  protected function get_breadcrumb_label( $label ) {
23
+ $current_section = $this->get_current_section();
24
+ $help_link = false;
25
+
26
+ if ( empty( $current_section ) ) {
27
+ $help_link = 'https://vendidero.de/dokument/dhl-integration-einrichten';
28
+ } elseif( 'internetmarke' === $current_section ) {
29
+ $help_link = 'https://vendidero.de/dokument/internetmarke-integration-einrichten';
30
+ } elseif( 'labels' === $current_section ) {
31
+ $help_link = 'https://vendidero.de/dokument/dhl-labels-zu-sendungen-erstellen';
32
+ }
33
 
34
+ if ( $help_link ) {
35
+ $label = $label . '<a class="page-title-action" href="' . esc_url( $help_link ) . '" target="_blank">' . __( 'Learn more', 'woocommerce-germanized' ) . '</a>';
36
  }
37
 
38
+ $label .= Settings::get_new_customer_label( $this->get_current_section() );
39
+
40
  return $label;
41
  }
42
 
43
  public function get_label() {
44
+ return __( 'Post & DHL', 'woocommerce-germanized' );
45
  }
46
 
47
  public function get_name() {
49
  }
50
 
51
  public function get_help_link() {
52
+ return 'https://vendidero.de/dokumentation/post-dhl';
53
  }
54
 
55
  public function get_tab_settings( $current_section = '' ) {
77
  public function supports_disabling() {
78
  return true;
79
  }
80
+
81
+ public function disable() {
82
+ parent::disable();
83
+
84
+ update_option( 'woocommerce_gzd_dhl_internetmarke_enable', 'no' );
85
+ }
86
+
87
+ public function is_enabled() {
88
+ $is_enabled = parent::is_enabled();
89
+
90
+ if ( \Vendidero\Germanized\DHL\Package::is_internetmarke_enabled() ) {
91
+ $is_enabled = true;
92
+ }
93
+
94
+ return $is_enabled;
95
+ }
96
  }
includes/admin/settings/class-wc-gzd-settings-tab-general.php CHANGED
@@ -240,7 +240,7 @@ class WC_GZD_Settings_Tab_General extends WC_GZD_Settings_Tab {
240
  'desc' => __( 'Add a title field to the address within checkout.', 'woocommerce-germanized' ),
241
  'id' => 'woocommerce_gzd_checkout_address_field',
242
  'type' => 'gzd_toggle',
243
- 'default' => 'yes',
244
  ),
245
  array(
246
  'title' => __( 'Disallow cancellations', 'woocommerce-germanized' ),
240
  'desc' => __( 'Add a title field to the address within checkout.', 'woocommerce-germanized' ),
241
  'id' => 'woocommerce_gzd_checkout_address_field',
242
  'type' => 'gzd_toggle',
243
+ 'default' => 'no',
244
  ),
245
  array(
246
  'title' => __( 'Disallow cancellations', 'woocommerce-germanized' ),
includes/admin/views/setup/dhl.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- use \Vendidero\Germanized\DHL\Admin\Importer;
4
 
5
  if ( ! defined( 'ABSPATH' ) ) {
6
  exit; // Exit if accessed directly
@@ -12,7 +12,7 @@ if ( ! defined( 'ABSPATH' ) ) {
12
  <p class="headliner"><?php _e( 'Want to easily ship your orders via DHL? Enable our deep DHL integration and start generating labels for shipments comfortably via your admin panel.', 'woocommerce-germanized' ); ?></p>
13
 
14
  <div class="wc-gzd-admin-settings">
15
- <?php if ( Importer::is_available() ) : ?>
16
  <div class="notice inline updated" style="margin: 0">
17
  <p><?php _e( 'We\'ve found out that you have been using DHL for WooCommerce already. We will automatically import your settings and you can start using our integration instead.', 'woocommerce-germanized' ); ?></p>
18
  </div>
1
  <?php
2
 
3
+ use \Vendidero\Germanized\DHL\Admin\Importer\DHL;
4
 
5
  if ( ! defined( 'ABSPATH' ) ) {
6
  exit; // Exit if accessed directly
12
  <p class="headliner"><?php _e( 'Want to easily ship your orders via DHL? Enable our deep DHL integration and start generating labels for shipments comfortably via your admin panel.', 'woocommerce-germanized' ); ?></p>
13
 
14
  <div class="wc-gzd-admin-settings">
15
+ <?php if ( DHL::is_available() ) : ?>
16
  <div class="notice inline updated" style="margin: 0">
17
  <p><?php _e( 'We\'ve found out that you have been using DHL for WooCommerce already. We will automatically import your settings and you can start using our integration instead.', 'woocommerce-germanized' ); ?></p>
18
  </div>
includes/admin/views/setup/internetmarke.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ use \Vendidero\Germanized\DHL\Admin\Importer\Internetmarke;
4
+
5
+ if ( ! defined( 'ABSPATH' ) ) {
6
+ exit; // Exit if accessed directly
7
+ }
8
+
9
+ ?>
10
+ <h1><?php _e( 'Internetmarke', 'woocommerce-germanized' ); ?></h1>
11
+
12
+ <p class="headliner"><?php _e( 'Want to easily ship your orders via Deutsche Post? Enable our Internetmarke integration and start generating labels for shipments comfortably via your admin panel.', 'woocommerce-germanized' ); ?></p>
13
+
14
+ <div class="wc-gzd-admin-settings">
15
+ <?php if ( Internetmarke::is_available() ) : ?>
16
+ <div class="notice inline updated" style="margin: 0">
17
+ <p><?php _e( 'We\'ve found out that you have been using the Internetmarke standalone Plugin already. We will automatically import your settings and you can start using our integration instead.', 'woocommerce-germanized' ); ?></p>
18
+ </div>
19
+ <?php else: ?>
20
+ <?php WC_Admin_Settings::output_fields( $settings ); ?>
21
+ <?php endif; ?>
22
+ </div>
includes/class-wc-gzd-ajax.php CHANGED
@@ -20,6 +20,7 @@ class WC_GZD_AJAX {
20
 
21
  $ajax_events = array(
22
  'gzd_revocation' => true,
 
23
  'gzd_json_search_delivery_time' => false,
24
  'gzd_legal_checkboxes_save_changes' => false,
25
  'gzd_toggle_tab_enabled' => false,
@@ -190,6 +191,35 @@ class WC_GZD_AJAX {
190
  wp_send_json( $terms );
191
  }
192
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
193
  /**
194
  * Checks revocation form and sends Email to customer and Admin
195
  */
20
 
21
  $ajax_events = array(
22
  'gzd_revocation' => true,
23
+ 'gzd_refresh_unit_price' => true,
24
  'gzd_json_search_delivery_time' => false,
25
  'gzd_legal_checkboxes_save_changes' => false,
26
  'gzd_toggle_tab_enabled' => false,
191
  wp_send_json( $terms );
192
  }
193
 
194
+ public static function gzd_refresh_unit_price() {
195
+ check_ajax_referer( 'wc-gzd-refresh-unit-price', 'security' );
196
+
197
+ if ( ! isset( $_POST['product_id'], $_POST['price'] ) ) {
198
+ wp_send_json( array( 'result' => 'failure' ) );
199
+ }
200
+
201
+ $product_id = absint( $_POST['product_id'] );
202
+ $price = wc_clean( $_POST['price'] );
203
+ $price_sale = isset( $_POST['price_sale'] ) ? wc_clean( $_POST['price_sale'] ) : '';
204
+
205
+ if ( ! $product = wc_gzd_get_product( $product_id ) ) {
206
+ wp_send_json( array( 'result' => 'failure' ) );
207
+ }
208
+
209
+ $args = array(
210
+ 'regular_price' => $price,
211
+ 'sale_price' => ! empty( $price_sale ) ? $price_sale : $price,
212
+ 'price' => ! empty( $price_sale ) ? $price_sale : $price
213
+ );
214
+
215
+ $product->recalculate_unit_price( $args );
216
+
217
+ wp_send_json( array(
218
+ 'result' => 'success',
219
+ 'unit_price_html' => $product->get_unit_price_html(),
220
+ ) );
221
+ }
222
+
223
  /**
224
  * Checks revocation form and sends Email to customer and Admin
225
  */
includes/class-wc-gzd-checkout.php CHANGED
@@ -46,24 +46,12 @@ class WC_GZD_Checkout {
46
  add_filter( 'woocommerce_admin_billing_fields', array( $this, 'set_custom_fields_admin_billing' ), 0, 1 );
47
  add_filter( 'woocommerce_admin_shipping_fields', array( $this, 'set_custom_fields_admin_shipping' ), 0, 1 );
48
 
49
- /**
50
- * Recalculate order item unit price after tax adjustments.
51
- */
52
- add_action( 'woocommerce_order_item_after_calculate_taxes', array( $this, 'recalculate_order_item_unit_price' ), 60, 1 );
53
 
54
  // Save Fields on order
55
  add_action( 'woocommerce_checkout_create_order', array( $this, 'save_fields' ) );
56
 
57
- // Add Title to billing address format
58
- add_filter( 'woocommerce_order_formatted_billing_address', array(
59
- $this,
60
- 'set_formatted_billing_address'
61
- ), 0, 2 );
62
- add_filter( 'woocommerce_order_formatted_shipping_address', array(
63
- $this,
64
- 'set_formatted_shipping_address'
65
- ), 0, 2 );
66
-
67
  add_filter( 'woocommerce_formatted_address_replacements', array( $this, 'set_formatted_address' ), 0, 2 );
68
 
69
  // Support Checkout Field Managers (which are unable to map options to values)
@@ -72,13 +60,7 @@ class WC_GZD_Checkout {
72
  'set_title_field_mapping_editors'
73
  ), 10, 1 );
74
 
75
- // Add title options to order address data
76
- add_filter( 'woocommerce_get_order_address', array( $this, 'add_order_address_data' ), 10, 3 );
77
-
78
  add_action( 'woocommerce_checkout_create_order_line_item', array( $this, 'set_order_item_meta_crud' ), 0, 4 );
79
- add_action( 'woocommerce_before_order_item_object_save', array( $this, 'on_order_item_update' ), 10 );
80
-
81
- add_filter( 'woocommerce_hidden_order_itemmeta', array( $this, 'set_order_meta_hidden' ), 0 );
82
 
83
  // Deactivate checkout shipping selection
84
  add_action( 'woocommerce_review_order_before_shipping', array( $this, 'remove_shipping_rates' ), 0 );
@@ -90,28 +72,6 @@ class WC_GZD_Checkout {
90
  add_filter( 'woocommerce_add_to_cart_validation', array( $this, 'prevent_differential_mixed_carts' ), 10, 3 );
91
  }
92
 
93
- // Disallow user order cancellation
94
- if ( 'yes' === get_option( 'woocommerce_gzd_checkout_stop_order_cancellation' ) ) {
95
-
96
- add_filter( 'woocommerce_get_cancel_order_url', array( $this, 'cancel_order_url' ), 1500, 1 );
97
- add_filter( 'woocommerce_get_cancel_order_url_raw', array( $this, 'cancel_order_url' ), 1500, 1 );
98
- add_filter( 'user_has_cap', array( $this, 'disallow_user_order_cancellation' ), 15, 3 );
99
-
100
- // Remove order stock right after confirmation is sent
101
- add_action( 'woocommerce_germanized_order_confirmation_sent', array(
102
- $this,
103
- 'maybe_reduce_order_stock'
104
- ), 5, 1 );
105
- add_filter( 'woocommerce_my_account_my_orders_actions', array( $this, 'remove_cancel_button' ), 10, 2 );
106
-
107
- // Woo 3.0 stock reducing checks - mark order as stock-reduced so that stock reducing fails upon second attempt
108
- add_action( 'woocommerce_reduce_order_stock', array( $this, 'set_order_stock_reduced_meta' ), 10, 1 );
109
- add_filter( 'woocommerce_can_reduce_order_stock', array(
110
- $this,
111
- 'maybe_disallow_order_stock_reducing'
112
- ), 10, 2 );
113
- }
114
-
115
  // Free Shipping auto select
116
  if ( 'yes' === get_option( 'woocommerce_gzd_display_checkout_free_shipping_select' ) ) {
117
  add_filter( 'woocommerce_package_rates', array( $this, 'free_shipping_auto_select' ) );
@@ -122,7 +82,6 @@ class WC_GZD_Checkout {
122
  add_action( 'wp', array( $this, 'force_pay_order_redirect' ), 15 );
123
 
124
  if ( 'yes' === get_option( 'woocommerce_gzd_checkout_disallow_belated_payment_method_selection' ) ) {
125
-
126
  add_filter( 'woocommerce_get_checkout_payment_url', array(
127
  $this,
128
  'set_payment_url_to_force_payment'
@@ -136,6 +95,109 @@ class WC_GZD_Checkout {
136
  // Make sure that, just like in Woo core, the order submit button gets refreshed
137
  // Use a high priority to let other plugins do their adjustments beforehand
138
  add_filter( 'woocommerce_update_order_review_fragments', array( $this, 'refresh_order_submit' ), 150, 1 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  }
140
 
141
  /**
@@ -153,14 +215,6 @@ class WC_GZD_Checkout {
153
  }
154
  }
155
 
156
- public function recalculate_order_item_unit_price( $order_item ) {
157
- if ( is_a( $order_item, 'WC_Order_Item_Product' ) ) {
158
- if ( $gzd_item = wc_gzd_get_order_item( $order_item ) ) {
159
- $gzd_item->recalculate_unit_price();
160
- }
161
- }
162
- }
163
-
164
  public function prevent_differential_mixed_carts( $has_passed, $product_id, $quantity ) {
165
  if ( $gzd_product = wc_gzd_get_gzd_product( $product_id ) ) {
166
 
@@ -185,16 +239,6 @@ class WC_GZD_Checkout {
185
  return $has_passed;
186
  }
187
 
188
- public function add_order_address_data( $data, $type, $order ) {
189
- if ( 'yes' === get_option( 'woocommerce_gzd_checkout_address_field' ) ) {
190
- if ( $title = wc_gzd_get_order_customer_title( $order, $type ) ) {
191
- $data['title'] = $title;
192
- }
193
- }
194
-
195
- return $data;
196
- }
197
-
198
  public function refresh_order_submit( $fragments ) {
199
 
200
  $args = array(
@@ -215,15 +259,6 @@ class WC_GZD_Checkout {
215
  return $fragments;
216
  }
217
 
218
- public function remove_cancel_button( $actions, $order ) {
219
-
220
- if ( isset( $actions['cancel'] ) ) {
221
- unset( $actions['cancel'] );
222
- }
223
-
224
- return $actions;
225
- }
226
-
227
  /**
228
  * @param WC_Order $order
229
  * @param $posted
@@ -510,77 +545,6 @@ class WC_GZD_Checkout {
510
  }
511
  }
512
 
513
- public function maybe_reduce_order_stock( $order_id ) {
514
- wc_maybe_reduce_stock_levels( $order_id );
515
- }
516
-
517
- /**
518
- * @param WC_Order $order
519
- */
520
- public function set_order_stock_reduced_meta( $order ) {
521
- $order->update_meta_data( '_order_stock_reduced', 'yes' );
522
- $order->save();
523
- }
524
-
525
- /**
526
- * @param $reduce_stock
527
- * @param WC_Order $order
528
- *
529
- * @return bool
530
- */
531
- public function maybe_disallow_order_stock_reducing( $reduce_stock, $order ) {
532
- if ( 'yes' === $order->get_meta( '_order_stock_reduced' ) ) {
533
- // Delete the meta so that third party plugins may reduce/change order stock later
534
- $order->delete_meta_data( '_order_stock_reduced' );
535
- $order->save();
536
-
537
- return false;
538
- }
539
-
540
- return $reduce_stock;
541
- }
542
-
543
- public function disallow_user_order_cancellation( $allcaps, $caps, $args ) {
544
- if ( isset( $caps[0] ) ) {
545
- switch ( $caps[0] ) {
546
- case 'cancel_order' :
547
- $allcaps['cancel_order'] = false;
548
- break;
549
- }
550
- }
551
-
552
- return $allcaps;
553
- }
554
-
555
- public function cancel_order_url( $url ) {
556
-
557
- // Default to home url
558
- $return = get_permalink( wc_get_page_id( 'shop' ) );
559
-
560
- // Extract order id and use order success page as return url
561
- $search = preg_match( '/order_id=([0-9]+)/', $url, $matches );
562
-
563
- if ( $search && isset( $matches[1] ) ) {
564
- $order_id = absint( $matches[1] );
565
- $order = wc_get_order( $order_id );
566
-
567
- /**
568
- * Filter the order cancellation URL replacement when customer
569
- * order cancellation was disabled in the Germanized settings.
570
- * Defaults to the order-received page.
571
- *
572
- * @param string $url The return url.
573
- * @param WC_Order $order The order object.
574
- *
575
- * @since 1.0.0
576
- *
577
- */
578
- $return = apply_filters( 'woocommerce_gzd_attempt_order_cancellation_url', add_query_arg( array( 'retry' => true ), $order->get_checkout_order_received_url(), $order ) );
579
- }
580
-
581
- return $return;
582
- }
583
-
584
  public function init_fields() {
585
  if ( 'yes' === get_option( 'woocommerce_gzd_checkout_address_field' ) ) {
586
  $this->custom_fields['title'] = array(
@@ -588,6 +552,7 @@ class WC_GZD_Checkout {
588
  'required' => false,
589
  'label' => __( 'Title', 'woocommerce-germanized' ),
590
  'options' => wc_gzd_get_customer_title_options(),
 
591
  'before' => 'first_name',
592
  'group' => array( 'billing', 'shipping' ),
593
  'priority' => 0,
@@ -597,6 +562,7 @@ class WC_GZD_Checkout {
597
  'before' => 'first_name',
598
  'type' => 'select',
599
  'options' => wc_gzd_get_customer_title_options(),
 
600
  'label' => __( 'Title', 'woocommerce-germanized' ),
601
  'show' => false,
602
  'priority' => 0,
@@ -685,7 +651,6 @@ class WC_GZD_Checkout {
685
  * @param WC_Cart $cart
686
  */
687
  public function do_fee_tax_calculation( $cart ) {
688
-
689
  if ( 'yes' !== get_option( 'woocommerce_gzd_fee_tax' ) ) {
690
  return;
691
  }
@@ -704,7 +669,6 @@ class WC_GZD_Checkout {
704
  $fees = $cart->get_fees();
705
 
706
  if ( ! empty( $fees ) ) {
707
-
708
  $tax_shares = wc_gzd_get_cart_tax_share( 'fee' );
709
 
710
  /**
@@ -784,7 +748,6 @@ class WC_GZD_Checkout {
784
  * Temporarily removes all shipping rates (except chosen one) from packages to only show chosen package within checkout.
785
  */
786
  public function remove_shipping_rates() {
787
-
788
  if ( 'no' === get_option( 'woocommerce_gzd_display_checkout_shipping_rate_select' ) ) {
789
  return;
790
  }
@@ -812,103 +775,7 @@ class WC_GZD_Checkout {
812
  * @param $order
813
  */
814
  public function set_order_item_meta_crud( $item, $cart_item_key, $values, $order ) {
815
- $this->refresh_item_data( $item );
816
- }
817
-
818
- protected function refresh_item_data( $item ) {
819
- if ( is_a( $item, 'WC_Order_Item_Product' ) && ( $product = $item->get_product() ) ) {
820
- if ( $gzd_item = wc_gzd_get_order_item( $item ) ) {
821
- $gzd_product = wc_gzd_get_product( $product );
822
-
823
- $gzd_item->set_unit( $gzd_product->get_unit_name() );
824
- $gzd_item->set_unit_base( $gzd_product->get_unit_base() );
825
- $gzd_item->set_unit_product( $gzd_product->get_unit_product() );
826
-
827
- $gzd_item->recalculate_unit_price();
828
-
829
- $gzd_item->set_cart_description( $gzd_product->get_formatted_cart_description() );
830
- $gzd_item->set_delivery_time( $gzd_product->get_delivery_time_html() );
831
- $gzd_item->set_min_age( $gzd_product->get_min_age() );
832
-
833
- /**
834
- * Add order item meta.
835
- *
836
- * Fires when Germanized adds order item meta.
837
- *
838
- * @param WC_Order_Item $item The order item.
839
- * @param WC_Order $order The order.
840
- * @param WC_GZD_Product $gzd_product The product object.
841
- * @param WC_GZD_Order_Item $gzd_item The order item object.
842
- *
843
- * @since 1.8.9
844
- */
845
- do_action( 'woocommerce_gzd_add_order_item_meta', $item, $item->get_order(), $gzd_product, $gzd_item );
846
- }
847
- }
848
- }
849
-
850
- /**
851
- * @param WC_Order_Item $item
852
- */
853
- public function on_order_item_update( $item ) {
854
- /**
855
- * Refresh item data in case product id changes or it is a new item.
856
- */
857
- if ( $item->get_id() <= 0 || in_array( 'product_id', $item->get_changes() ) ) {
858
- $this->refresh_item_data( $item );
859
- }
860
- }
861
-
862
- /**
863
- * Hide product description from order meta default output
864
- *
865
- * @param array $metas
866
- */
867
- public function set_order_meta_hidden( $metas ) {
868
- array_push( $metas, '_item_desc' );
869
- array_push( $metas, '_units' );
870
- array_push( $metas, '_delivery_time' );
871
- array_push( $metas, '_unit_price' );
872
- array_push( $metas, '_unit_price_raw' );
873
- array_push( $metas, '_unit_price_subtotal_raw' );
874
- array_push( $metas, '_unit_price_subtotal_net_raw' );
875
- array_push( $metas, '_unit_price_net_raw' );
876
- array_push( $metas, '_unit_product' );
877
- array_push( $metas, '_unit' );
878
- array_push( $metas, '_unit_base' );
879
- array_push( $metas, '_min_age' );
880
-
881
- return $metas;
882
- }
883
-
884
- public function set_formatted_billing_address( $fields, $order ) {
885
-
886
- if ( 'yes' !== get_option( 'woocommerce_gzd_checkout_address_field' ) ) {
887
- return $fields;
888
- }
889
-
890
- if ( $title = wc_gzd_get_order_customer_title( $order, 'billing' ) ) {
891
- $fields['title'] = $title;
892
- }
893
-
894
- return $fields;
895
- }
896
-
897
- public function set_formatted_shipping_address( $fields, $order ) {
898
-
899
- if ( empty( $fields ) || ! is_array( $fields ) ) {
900
- return $fields;
901
- }
902
-
903
- if ( 'yes' !== get_option( 'woocommerce_gzd_checkout_address_field' ) ) {
904
- return $fields;
905
- }
906
-
907
- if ( $title = wc_gzd_get_order_customer_title( $order, 'shipping' ) ) {
908
- $fields['title'] = $title;
909
- }
910
-
911
- return $fields;
912
  }
913
 
914
  public function set_formatted_address( $placeholder, $args ) {
46
  add_filter( 'woocommerce_admin_billing_fields', array( $this, 'set_custom_fields_admin_billing' ), 0, 1 );
47
  add_filter( 'woocommerce_admin_shipping_fields', array( $this, 'set_custom_fields_admin_shipping' ), 0, 1 );
48
 
49
+ // Format tax rate labels (percentage) in case prices during checkout are shown excl tax
50
+ add_filter( 'woocommerce_cart_tax_totals', array( $this, 'set_cart_excluding_tax_labels' ), 10, 2 );
 
 
51
 
52
  // Save Fields on order
53
  add_action( 'woocommerce_checkout_create_order', array( $this, 'save_fields' ) );
54
 
 
 
 
 
 
 
 
 
 
 
55
  add_filter( 'woocommerce_formatted_address_replacements', array( $this, 'set_formatted_address' ), 0, 2 );
56
 
57
  // Support Checkout Field Managers (which are unable to map options to values)
60
  'set_title_field_mapping_editors'
61
  ), 10, 1 );
62
 
 
 
 
63
  add_action( 'woocommerce_checkout_create_order_line_item', array( $this, 'set_order_item_meta_crud' ), 0, 4 );
 
 
 
64
 
65
  // Deactivate checkout shipping selection
66
  add_action( 'woocommerce_review_order_before_shipping', array( $this, 'remove_shipping_rates' ), 0 );
72
  add_filter( 'woocommerce_add_to_cart_validation', array( $this, 'prevent_differential_mixed_carts' ), 10, 3 );
73
  }
74
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  // Free Shipping auto select
76
  if ( 'yes' === get_option( 'woocommerce_gzd_display_checkout_free_shipping_select' ) ) {
77
  add_filter( 'woocommerce_package_rates', array( $this, 'free_shipping_auto_select' ) );
82
  add_action( 'wp', array( $this, 'force_pay_order_redirect' ), 15 );
83
 
84
  if ( 'yes' === get_option( 'woocommerce_gzd_checkout_disallow_belated_payment_method_selection' ) ) {
 
85
  add_filter( 'woocommerce_get_checkout_payment_url', array(
86
  $this,
87
  'set_payment_url_to_force_payment'
95
  // Make sure that, just like in Woo core, the order submit button gets refreshed
96
  // Use a high priority to let other plugins do their adjustments beforehand
97
  add_filter( 'woocommerce_update_order_review_fragments', array( $this, 'refresh_order_submit' ), 150, 1 );
98
+
99
+ // Unsure whether this could lead to future problems - tax classes with same name wont be merged anylonger
100
+ // add_filter( 'woocommerce_rate_code', array( $this, 'prevent_tax_name_merge' ), 1000, 2 );
101
+
102
+ // Hide cart estimated text if chosen
103
+ add_action( 'woocommerce_cart_totals_after_order_total', array( $this, 'hide_cart_estimated_text' ) );
104
+ add_action( 'woocommerce_after_cart_totals', array( $this, 'remove_cart_tax_zero_filter' ) );
105
+
106
+ // Remove cart subtotal filter
107
+ add_action( 'template_redirect', array( $this, 'maybe_remove_shopmark_filters' ) );
108
+ add_action( 'woocommerce_checkout_update_order_review', array( $this, 'maybe_remove_shopmark_filters' ) );
109
+ }
110
+
111
+ /**
112
+ * Remove cart unit price subtotal filter
113
+ */
114
+ public function maybe_remove_shopmark_filters() {
115
+ if ( is_cart() || is_checkout() ) {
116
+
117
+ foreach ( wc_gzd_get_checkout_shopmarks() as $shopmark ) {
118
+ $shopmark->remove();
119
+ }
120
+
121
+ foreach ( wc_gzd_get_cart_shopmarks() as $shopmark ) {
122
+ $shopmark->remove();
123
+ }
124
+
125
+ if ( is_cart() ) {
126
+ foreach ( wc_gzd_get_cart_shopmarks() as $shopmark ) {
127
+ $shopmark->execute();
128
+ }
129
+ } elseif ( is_checkout() ) {
130
+ foreach ( wc_gzd_get_checkout_shopmarks() as $shopmark ) {
131
+ $shopmark->execute();
132
+ }
133
+ }
134
+ }
135
+ }
136
+
137
+ /**
138
+ * Prevent tax class merging. Could lead to future problems - not yet implemented
139
+ *
140
+ * @param string $code tax class code
141
+ * @param int $rate_id
142
+ *
143
+ * @return string unique tax class code
144
+ */
145
+ public function prevent_tax_name_merge( $code, $rate_id ) {
146
+ return $code . '-' . $rate_id;
147
+ }
148
+
149
+ /**
150
+ * Calls a filter to temporarily set cart tax to zero. This is only done to hide the cart tax estimated text.
151
+ * Filter is being remove right after get_cart_tax - check has been finished within cart-totals.php
152
+ */
153
+ public function hide_cart_estimated_text() {
154
+ if ( get_option( 'woocommerce_gzd_display_hide_cart_tax_estimated' ) == 'yes' ) {
155
+ add_filter( 'woocommerce_get_cart_tax', array( $this, 'set_cart_tax_zero' ) );
156
+ }
157
+ }
158
+
159
+ /**
160
+ * Removes the zero cart tax filter after get_cart_tax has been finished
161
+ */
162
+ public function remove_cart_tax_zero_filter() {
163
+ if ( get_option( 'woocommerce_gzd_display_hide_cart_tax_estimated' ) == 'yes' ) {
164
+ remove_filter( 'woocommerce_get_cart_tax', array( $this, 'set_cart_tax_zero' ) );
165
+ }
166
+ }
167
+
168
+ /**
169
+ * This will set the cart tax to zero
170
+ *
171
+ * @param float $tax current's cart tax
172
+ *
173
+ * @return int
174
+ */
175
+ public function set_cart_tax_zero( $tax ) {
176
+ return 0;
177
+ }
178
+
179
+ /**
180
+ * @param array $tax_totals
181
+ * @param WC_Cart $cart
182
+ *
183
+ * @return mixed
184
+ */
185
+ public function set_cart_excluding_tax_labels( $tax_totals, $cart ) {
186
+ if ( ! empty( $tax_totals ) && ! $cart->display_prices_including_tax() && 'itemized' === get_option( 'woocommerce_tax_total_display' ) ) {
187
+ foreach( $tax_totals as $key => $tax ) {
188
+ $rate = wc_gzd_get_tax_rate( $tax->tax_rate_id );
189
+
190
+ if ( ! $rate ) {
191
+ continue;
192
+ }
193
+
194
+ if ( ! empty( $rate ) && isset( $rate->tax_rate ) ) {
195
+ $tax_totals[ $key ]->label = wc_gzd_get_tax_rate_label( $rate->tax_rate, 'excl' );
196
+ }
197
+ }
198
+ }
199
+
200
+ return $tax_totals;
201
  }
202
 
203
  /**
215
  }
216
  }
217
 
 
 
 
 
 
 
 
 
218
  public function prevent_differential_mixed_carts( $has_passed, $product_id, $quantity ) {
219
  if ( $gzd_product = wc_gzd_get_gzd_product( $product_id ) ) {
220
 
239
  return $has_passed;
240
  }
241
 
 
 
 
 
 
 
 
 
 
 
242
  public function refresh_order_submit( $fragments ) {
243
 
244
  $args = array(
259
  return $fragments;
260
  }
261
 
 
 
 
 
 
 
 
 
 
262
  /**
263
  * @param WC_Order $order
264
  * @param $posted
545
  }
546
  }
547
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
548
  public function init_fields() {
549
  if ( 'yes' === get_option( 'woocommerce_gzd_checkout_address_field' ) ) {
550
  $this->custom_fields['title'] = array(
552
  'required' => false,
553
  'label' => __( 'Title', 'woocommerce-germanized' ),
554
  'options' => wc_gzd_get_customer_title_options(),
555
+ 'default' => 0,
556
  'before' => 'first_name',
557
  'group' => array( 'billing', 'shipping' ),
558
  'priority' => 0,
562
  'before' => 'first_name',
563
  'type' => 'select',
564
  'options' => wc_gzd_get_customer_title_options(),
565
+ 'default' => 0,
566
  'label' => __( 'Title', 'woocommerce-germanized' ),
567
  'show' => false,
568
  'priority' => 0,
651
  * @param WC_Cart $cart
652
  */
653
  public function do_fee_tax_calculation( $cart ) {
 
654
  if ( 'yes' !== get_option( 'woocommerce_gzd_fee_tax' ) ) {
655
  return;
656
  }
669
  $fees = $cart->get_fees();
670
 
671
  if ( ! empty( $fees ) ) {
 
672
  $tax_shares = wc_gzd_get_cart_tax_share( 'fee' );
673
 
674
  /**
748
  * Temporarily removes all shipping rates (except chosen one) from packages to only show chosen package within checkout.
749
  */
750
  public function remove_shipping_rates() {
 
751
  if ( 'no' === get_option( 'woocommerce_gzd_display_checkout_shipping_rate_select' ) ) {
752
  return;
753
  }
775
  * @param $order
776
  */
777
  public function set_order_item_meta_crud( $item, $cart_item_key, $values, $order ) {
778
+ WC_GZD_Order_Helper::instance()->refresh_item_data( $item );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
779
  }
780
 
781
  public function set_formatted_address( $placeholder, $args ) {
includes/class-wc-gzd-coupon-helper.php CHANGED
@@ -240,14 +240,18 @@ class WC_GZD_Coupon_Helper {
240
  'set_cart_contents_taxes'
241
  ) ) ) {
242
 
243
- $discount_tax = $cart->get_discount_tax();
244
 
245
  $cart->set_cart_contents_taxes( $tax_totals );
246
 
247
  if ( wc_prices_include_tax() ) {
248
  $cart->set_discount_total( wc_cart_round_discount( ( $cart->get_discount_total() + $cart->get_discount_tax() ), $cart->dp ) );
249
  } else {
250
- $cart->set_discount_total( wc_cart_round_discount( $cart->get_discount_total(), $cart->dp ) );
 
 
 
 
251
  }
252
 
253
  $cart->set_discount_tax( 0 );
@@ -255,7 +259,7 @@ class WC_GZD_Coupon_Helper {
255
  /**
256
  * Necessary in case Woo prices do not include taxes
257
  */
258
- if ( ! wc_prices_include_tax() ) {
259
  $cart->set_total( $cart->get_total( 'edit' ) + $discount_tax );
260
 
261
  if ( is_callable( array( $cart, 'set_coupon_discount_tax_totals' ) ) ) {
240
  'set_cart_contents_taxes'
241
  ) ) ) {
242
 
243
+ $discount_tax = $cart->get_discount_tax();
244
 
245
  $cart->set_cart_contents_taxes( $tax_totals );
246
 
247
  if ( wc_prices_include_tax() ) {
248
  $cart->set_discount_total( wc_cart_round_discount( ( $cart->get_discount_total() + $cart->get_discount_tax() ), $cart->dp ) );
249
  } else {
250
+ if ( $cart->display_prices_including_tax() ) {
251
+ $cart->set_discount_total( wc_cart_round_discount( $cart->get_discount_total() + $cart->get_discount_tax(), $cart->dp ) );
252
+ } else {
253
+ $cart->set_discount_total( wc_cart_round_discount( $cart->get_discount_total(), $cart->dp ) );
254
+ }
255
  }
256
 
257
  $cart->set_discount_tax( 0 );
259
  /**
260
  * Necessary in case Woo prices do not include taxes
261
  */
262
+ if ( ! wc_prices_include_tax() && ! $cart->display_prices_including_tax() && $cart->get_total( 'edit' ) > 0 ) {
263
  $cart->set_total( $cart->get_total( 'edit' ) + $discount_tax );
264
 
265
  if ( is_callable( array( $cart, 'set_coupon_discount_tax_totals' ) ) ) {
includes/class-wc-gzd-customer-helper.php CHANGED
@@ -406,14 +406,15 @@ class WC_GZD_Customer_Helper {
406
 
407
  $user_query = new WP_User_Query(
408
  array(
409
- 'role' => $roles,
410
- 'date_query' => array(
 
411
  array(
412
  'before' => $registered_before,
413
  'inclusive' => true,
414
  )
415
  ),
416
- 'meta_query' => array(
417
  array(
418
  'key' => '_woocommerce_activation',
419
  'compare' => 'EXISTS',
@@ -662,6 +663,18 @@ class WC_GZD_Customer_Helper {
662
  return $user_activation;
663
  }
664
 
 
 
 
 
 
 
 
 
 
 
 
 
665
  }
666
 
667
  WC_GZD_Customer_Helper::instance();
406
 
407
  $user_query = new WP_User_Query(
408
  array(
409
+ 'role' => $roles,
410
+ 'role__not_in' => $this->get_account_cleanup_user_role_exclusions(),
411
+ 'date_query' => array(
412
  array(
413
  'before' => $registered_before,
414
  'inclusive' => true,
415
  )
416
  ),
417
+ 'meta_query' => array(
418
  array(
419
  'key' => '_woocommerce_activation',
420
  'compare' => 'EXISTS',
663
  return $user_activation;
664
  }
665
 
666
+ public function get_account_cleanup_user_role_exclusions() {
667
+ /**
668
+ * Filter user roles excluded during account cleanup.
669
+ * By default user roles `administrator`, `editor`, `author` and `shop_manager` are excluded.
670
+ *
671
+ * @param array $roles Array of roles to be excluded from account cleanup.
672
+ *
673
+ * @since 3.3.0
674
+ */
675
+ return apply_filters( 'woocommerce_gzd_customer_account_cleanup_excluded_user_roles', array( 'administrator', 'editor', 'author', 'shop_manager' ) );
676
+ }
677
+
678
  }
679
 
680
  WC_GZD_Customer_Helper::instance();
includes/class-wc-gzd-dependencies.php CHANGED
@@ -37,7 +37,7 @@ class WC_GZD_Dependencies {
37
  *
38
  * @var string
39
  */
40
- public $wc_minimum_version_required = '3.4';
41
 
42
  public static function instance( $plugin = null ) {
43
  if ( is_null( self::$_instance ) ) {
37
  *
38
  * @var string
39
  */
40
+ public $wc_minimum_version_required = '3.9';
41
 
42
  public static function instance( $plugin = null ) {
43
  if ( is_null( self::$_instance ) ) {
includes/class-wc-gzd-emails.php CHANGED
@@ -150,7 +150,18 @@ class WC_GZD_Emails {
150
  return apply_filters( 'woocommerce_gzd_current_email_instance', $this->current_email_instance, $this );
151
  }
152
 
153
- public function add_bcc_email_headers( $headers, $id, $object, $email ) {
 
 
 
 
 
 
 
 
 
 
 
154
  if ( $email ) {
155
  $recipients = $email->get_option( 'bcc' );
156
 
@@ -454,6 +465,8 @@ class WC_GZD_Emails {
454
  add_filter( 'woocommerce_email_footer_text', array( $this, 'email_footer_plain' ), 0 );
455
  add_filter( 'woocommerce_email_styles', array( $this, 'styles' ) );
456
 
 
 
457
  $mails = $this->mailer->get_emails();
458
 
459
  if ( ! empty( $mails ) ) {
@@ -478,6 +491,15 @@ class WC_GZD_Emails {
478
  add_action( 'woocommerce_email_after_order_table', array( $this, 'email_notices' ), 5, 3 );
479
  }
480
 
 
 
 
 
 
 
 
 
 
481
  public function get_gateways_disabling_paid_for_order_mail() {
482
 
483
  /**
150
  return apply_filters( 'woocommerce_gzd_current_email_instance', $this->current_email_instance, $this );
151
  }
152
 
153
+ /**
154
+ * Add BCC headers depending on the current email template.
155
+ * Make the last parameter option to potentially support Woo < 3.9.
156
+ *
157
+ * @param $headers
158
+ * @param $id
159
+ * @param $object
160
+ * @param null $email
161
+ *
162
+ * @return string
163
+ */
164
+ public function add_bcc_email_headers( $headers, $id, $object, $email = null ) {
165
  if ( $email ) {
166
  $recipients = $email->get_option( 'bcc' );
167
 
465
  add_filter( 'woocommerce_email_footer_text', array( $this, 'email_footer_plain' ), 0 );
466
  add_filter( 'woocommerce_email_styles', array( $this, 'styles' ) );
467
 
468
+ add_action( 'woocommerce_email_order_meta', array( $this, 'small_business_notice' ), 1 );
469
+
470
  $mails = $this->mailer->get_emails();
471
 
472
  if ( ! empty( $mails ) ) {
491
  add_action( 'woocommerce_email_after_order_table', array( $this, 'email_notices' ), 5, 3 );
492
  }
493
 
494
+ /**
495
+ * Add small business global Email Footer
496
+ */
497
+ public function small_business_notice() {
498
+ if ( wc_gzd_is_small_business() ) {
499
+ wc_get_template( 'global/small-business-info.php' );
500
+ }
501
+ }
502
+
503
  public function get_gateways_disabling_paid_for_order_mail() {
504
 
505
  /**
includes/class-wc-gzd-install.php CHANGED
@@ -215,6 +215,11 @@ if ( ! class_exists( 'WC_GZD_Install' ) ) :
215
  $note->reset();
216
  }
217
 
 
 
 
 
 
218
  // Queue upgrades
219
  $current_version = get_option( 'woocommerce_gzd_version', null );
220
  $current_db_version = get_option( 'woocommerce_gzd_db_version', null );
@@ -597,6 +602,7 @@ if ( ! class_exists( 'WC_GZD_Install' ) ) :
597
  global $wpdb;
598
 
599
  $base_country = ( isset( WC()->countries ) ) ? WC()->countries->get_base_country() : 'DE';
 
600
 
601
  $options = array(
602
  'woocommerce_default_country' => $base_country,
@@ -609,12 +615,13 @@ if ( ! class_exists( 'WC_GZD_Install' ) ) :
609
  'woocommerce_dimension_unit' => 'cm',
610
  'woocommerce_calc_taxes' => 'yes',
611
  'woocommerce_prices_include_tax' => 'yes',
 
612
  'woocommerce_tax_display_cart' => 'incl',
613
  'woocommerce_tax_display_shop' => 'incl',
614
  'woocommerce_tax_total_display' => 'itemized',
615
  'woocommerce_tax_based_on' => 'billing',
616
  'woocommerce_allowed_countries' => 'specific',
617
- 'woocommerce_specific_allowed_countries' => array( $base_country ),
618
  'woocommerce_default_customer_address' => 'base'
619
  );
620
 
215
  $note->reset();
216
  }
217
 
218
+ // Show the importer
219
+ if ( $note = $notices->get_note( 'internetmarke_importer' ) ) {
220
+ $note->reset();
221
+ }
222
+
223
  // Queue upgrades
224
  $current_version = get_option( 'woocommerce_gzd_version', null );
225
  $current_db_version = get_option( 'woocommerce_gzd_db_version', null );
602
  global $wpdb;
603
 
604
  $base_country = ( isset( WC()->countries ) ) ? WC()->countries->get_base_country() : 'DE';
605
+ $eu_countries = ( isset( WC()->countries ) ) ? WC()->countries->get_european_union_countries() : array( $base_country );
606
 
607
  $options = array(
608
  'woocommerce_default_country' => $base_country,
615
  'woocommerce_dimension_unit' => 'cm',
616
  'woocommerce_calc_taxes' => 'yes',
617
  'woocommerce_prices_include_tax' => 'yes',
618
+ 'woocommerce_tax_round_at_subtotal' => 'yes',
619
  'woocommerce_tax_display_cart' => 'incl',
620
  'woocommerce_tax_display_shop' => 'incl',
621
  'woocommerce_tax_total_display' => 'itemized',
622
  'woocommerce_tax_based_on' => 'billing',
623
  'woocommerce_allowed_countries' => 'specific',
624
+ 'woocommerce_specific_allowed_countries' => $eu_countries,
625
  'woocommerce_default_customer_address' => 'base'
626
  );
627
 
includes/class-wc-gzd-legal-checkbox.php CHANGED
@@ -335,8 +335,14 @@ class WC_GZD_Legal_Checkbox {
335
  * @return string
336
  */
337
  public function get_error_message( $plain = false ) {
 
 
338
  if ( $plain ) {
339
- return $this->settings['error_message'];
 
 
 
 
340
  } else {
341
  $error_text = $this->settings['error_message'];
342
  $error_text = wc_gzd_replace_label_shortcodes( $error_text, $this->get_label_args() );
@@ -352,8 +358,14 @@ class WC_GZD_Legal_Checkbox {
352
  * @since 2.0.0
353
  *
354
  */
355
- return apply_filters( "woocommerce_gzd_legal_checkbox_{$id}_error_text", $error_text, $this );
 
 
 
 
356
  }
 
 
357
  }
358
 
359
  /**
335
  * @return string
336
  */
337
  public function get_error_message( $plain = false ) {
338
+ $error_message = '';
339
+
340
  if ( $plain ) {
341
+ $error_message = $this->settings['error_message'];
342
+
343
+ if ( empty( $error_message ) ) {
344
+ $error_message = sprintf( __( '%s is a mandatory field.', 'woocommerce-germanized' ), $this->get_admin_name() );
345
+ }
346
  } else {
347
  $error_text = $this->settings['error_message'];
348
  $error_text = wc_gzd_replace_label_shortcodes( $error_text, $this->get_label_args() );
358
  * @since 2.0.0
359
  *
360
  */
361
+ $error_message = apply_filters( "woocommerce_gzd_legal_checkbox_{$id}_error_text", $error_text, $this );
362
+
363
+ if ( empty( $error_message ) ) {
364
+ $error_message = sprintf( __( '%s is a mandatory field.', 'woocommerce-germanized' ), $this->get_admin_name() );
365
+ }
366
  }
367
+
368
+ return $error_message;
369
  }
370
 
371
  /**
includes/class-wc-gzd-order-helper.php ADDED
@@ -0,0 +1,375 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class WC_GZD_Order_Helper {
4
+
5
+ protected static $_instance = null;
6
+
7
+ public static function instance() {
8
+ if ( is_null( self::$_instance ) ) {
9
+ self::$_instance = new self();
10
+ }
11
+
12
+ return self::$_instance;
13
+ }
14
+
15
+ /**
16
+ * Cloning is forbidden.
17
+ *
18
+ * @since 1.0
19
+ */
20
+ public function __clone() {
21
+ _doing_it_wrong( __FUNCTION__, __( 'Cheatin&#8217; huh?', 'woocommerce-germanized' ), '1.0' );
22
+ }
23
+
24
+ /**
25
+ * Unserializing instances of this class is forbidden.
26
+ *
27
+ * @since 1.0
28
+ */
29
+ public function __wakeup() {
30
+ _doing_it_wrong( __FUNCTION__, __( 'Cheatin&#8217; huh?', 'woocommerce-germanized' ), '1.0' );
31
+ }
32
+
33
+ public function __construct() {
34
+ // Add better incl tax display to order totals
35
+ add_filter( 'woocommerce_get_order_item_totals', array( $this, 'order_item_tax_totals' ), 0, 3 );
36
+
37
+ /**
38
+ * Recalculate order item unit price after tax adjustments.
39
+ */
40
+ add_action( 'woocommerce_order_item_after_calculate_taxes', array( $this, 'recalculate_order_item_unit_price' ), 60, 1 );
41
+
42
+ // Add Title to billing address format
43
+ add_filter( 'woocommerce_order_formatted_billing_address', array(
44
+ $this,
45
+ 'set_formatted_billing_address'
46
+ ), 0, 2 );
47
+ add_filter( 'woocommerce_order_formatted_shipping_address', array(
48
+ $this,
49
+ 'set_formatted_shipping_address'
50
+ ), 0, 2 );
51
+
52
+ // Add title options to order address data
53
+ add_filter( 'woocommerce_get_order_address', array( $this, 'add_order_address_data' ), 10, 3 );
54
+
55
+ add_action( 'woocommerce_before_order_item_object_save', array( $this, 'on_order_item_update' ), 10 );
56
+ add_filter( 'woocommerce_hidden_order_itemmeta', array( $this, 'set_order_meta_hidden' ), 0 );
57
+
58
+ // Disallow user order cancellation
59
+ if ( 'yes' === get_option( 'woocommerce_gzd_checkout_stop_order_cancellation' ) ) {
60
+
61
+ add_filter( 'woocommerce_get_cancel_order_url', array( $this, 'cancel_order_url' ), 1500, 1 );
62
+ add_filter( 'woocommerce_get_cancel_order_url_raw', array( $this, 'cancel_order_url' ), 1500, 1 );
63
+ add_filter( 'user_has_cap', array( $this, 'disallow_user_order_cancellation' ), 15, 3 );
64
+
65
+ // Remove order stock right after confirmation is sent
66
+ add_action( 'woocommerce_germanized_order_confirmation_sent', array(
67
+ $this,
68
+ 'maybe_reduce_order_stock'
69
+ ), 5, 1 );
70
+ add_filter( 'woocommerce_my_account_my_orders_actions', array( $this, 'remove_cancel_button' ), 10, 2 );
71
+
72
+ // Woo 3.0 stock reducing checks - mark order as stock-reduced so that stock reducing fails upon second attempt
73
+ add_action( 'woocommerce_reduce_order_stock', array( $this, 'set_order_stock_reduced_meta' ), 10, 1 );
74
+ add_filter( 'woocommerce_can_reduce_order_stock', array(
75
+ $this,
76
+ 'maybe_disallow_order_stock_reducing'
77
+ ), 10, 2 );
78
+ }
79
+ }
80
+
81
+ public function remove_cancel_button( $actions, $order ) {
82
+ if ( isset( $actions['cancel'] ) ) {
83
+ unset( $actions['cancel'] );
84
+ }
85
+
86
+ return $actions;
87
+ }
88
+
89
+ public function maybe_reduce_order_stock( $order_id ) {
90
+ wc_maybe_reduce_stock_levels( $order_id );
91
+ }
92
+
93
+ /**
94
+ * @param WC_Order $order
95
+ */
96
+ public function set_order_stock_reduced_meta( $order ) {
97
+ $order->update_meta_data( '_order_stock_reduced', 'yes' );
98
+ $order->save();
99
+ }
100
+
101
+ /**
102
+ * @param $reduce_stock
103
+ * @param WC_Order $order
104
+ *
105
+ * @return bool
106
+ */
107
+ public function maybe_disallow_order_stock_reducing( $reduce_stock, $order ) {
108
+ if ( 'yes' === $order->get_meta( '_order_stock_reduced' ) ) {
109
+ // Delete the meta so that third party plugins may reduce/change order stock later
110
+ $order->delete_meta_data( '_order_stock_reduced' );
111
+ $order->save();
112
+
113
+ return false;
114
+ }
115
+
116
+ return $reduce_stock;
117
+ }
118
+
119
+ public function disallow_user_order_cancellation( $allcaps, $caps, $args ) {
120
+ if ( isset( $caps[0] ) ) {
121
+ switch ( $caps[0] ) {
122
+ case 'cancel_order' :
123
+ $allcaps['cancel_order'] = false;
124
+ break;
125
+ }
126
+ }
127
+
128
+ return $allcaps;
129
+ }
130
+
131
+ public function cancel_order_url( $url ) {
132
+
133
+ // Default to home url
134
+ $return = get_permalink( wc_get_page_id( 'shop' ) );
135
+
136
+ // Extract order id and use order success page as return url
137
+ $search = preg_match( '/order_id=([0-9]+)/', $url, $matches );
138
+
139
+ if ( $search && isset( $matches[1] ) ) {
140
+ $order_id = absint( $matches[1] );
141
+ $order = wc_get_order( $order_id );
142
+
143
+ /**
144
+ * Filter the order cancellation URL replacement when customer
145
+ * order cancellation was disabled in the Germanized settings.
146
+ * Defaults to the order-received page.
147
+ *
148
+ * @param string $url The return url.
149
+ * @param WC_Order $order The order object.
150
+ *
151
+ * @since 1.0.0
152
+ *
153
+ */
154
+ $return = apply_filters( 'woocommerce_gzd_attempt_order_cancellation_url', add_query_arg( array( 'retry' => true ), $order->get_checkout_order_received_url(), $order ) );
155
+ }
156
+
157
+ return $return;
158
+ }
159
+
160
+ /**
161
+ * @param WC_Order_Item_Product $item
162
+ * @param $cart_item_key
163
+ * @param $values
164
+ * @param $order
165
+ */
166
+ public function set_order_item_meta_crud( $item, $cart_item_key, $values, $order ) {
167
+ $this->refresh_item_data( $item );
168
+ }
169
+
170
+ /**
171
+ * @param WC_Order_Item $item
172
+ */
173
+ public function on_order_item_update( $item ) {
174
+ /**
175
+ * Refresh item data in case product id changes or it is a new item.
176
+ */
177
+ if ( $item->get_id() <= 0 || in_array( 'product_id', $item->get_changes() ) ) {
178
+ $this->refresh_item_data( $item );
179
+ }
180
+ }
181
+
182
+ /**
183
+ * Hide product description from order meta default output
184
+ *
185
+ * @param array $metas
186
+ */
187
+ public function set_order_meta_hidden( $metas ) {
188
+ array_push( $metas, '_item_desc' );
189
+ array_push( $metas, '_units' );
190
+ array_push( $metas, '_delivery_time' );
191
+ array_push( $metas, '_unit_price' );
192
+ array_push( $metas, '_unit_price_raw' );
193
+ array_push( $metas, '_unit_price_subtotal_raw' );
194
+ array_push( $metas, '_unit_price_subtotal_net_raw' );
195
+ array_push( $metas, '_unit_price_net_raw' );
196
+ array_push( $metas, '_unit_product' );
197
+ array_push( $metas, '_unit' );
198
+ array_push( $metas, '_unit_base' );
199
+ array_push( $metas, '_min_age' );
200
+
201
+ return $metas;
202
+ }
203
+
204
+ public function refresh_item_data( $item ) {
205
+ if ( is_a( $item, 'WC_Order_Item_Product' ) && ( $product = $item->get_product() ) ) {
206
+ if ( $gzd_item = wc_gzd_get_order_item( $item ) ) {
207
+ $gzd_product = wc_gzd_get_product( $product );
208
+
209
+ $gzd_item->set_unit( $gzd_product->get_unit_name() );
210
+ $gzd_item->set_unit_base( $gzd_product->get_unit_base() );
211
+ $gzd_item->set_unit_product( $gzd_product->get_unit_product() );
212
+
213
+ $gzd_item->recalculate_unit_price();
214
+
215
+ $gzd_item->set_cart_description( $gzd_product->get_formatted_cart_description() );
216
+ $gzd_item->set_delivery_time( $gzd_product->get_delivery_time_html() );
217
+ $gzd_item->set_min_age( $gzd_product->get_min_age() );
218
+
219
+ /**
220
+ * Add order item meta.
221
+ *
222
+ * Fires when Germanized adds order item meta.
223
+ *
224
+ * @param WC_Order_Item $item The order item.
225
+ * @param WC_Order $order The order.
226
+ * @param WC_GZD_Product $gzd_product The product object.
227
+ * @param WC_GZD_Order_Item $gzd_item The order item object.
228
+ *
229
+ * @since 1.8.9
230
+ */
231
+ do_action( 'woocommerce_gzd_add_order_item_meta', $item, $item->get_order(), $gzd_product, $gzd_item );
232
+ }
233
+ }
234
+ }
235
+
236
+ public function add_order_address_data( $data, $type, $order ) {
237
+ if ( 'yes' === get_option( 'woocommerce_gzd_checkout_address_field' ) ) {
238
+ if ( $this->order_address_enable_customer_title( $data ) && ( $title = wc_gzd_get_order_customer_title( $order, $type ) ) ) {
239
+ $data['title'] = $title;
240
+ }
241
+ }
242
+
243
+ return $data;
244
+ }
245
+
246
+ /**
247
+ * @param $fields
248
+ * @param WC_Order $order
249
+ *
250
+ * @return mixed
251
+ */
252
+ public function set_formatted_billing_address( $fields, $order ) {
253
+ if ( 'yes' !== get_option( 'woocommerce_gzd_checkout_address_field' ) ) {
254
+ return $fields;
255
+ }
256
+
257
+ if ( $this->order_address_enable_customer_title( $fields ) && ( $title = wc_gzd_get_order_customer_title( $order, 'billing' ) ) ) {
258
+ $fields['title'] = $title;
259
+ }
260
+
261
+ return $fields;
262
+ }
263
+
264
+ public function order_address_enable_customer_title( $fields ) {
265
+ /**
266
+ * If no last name has been chosen, remove the title too
267
+ */
268
+ if ( ! isset( $fields['last_name'] ) || empty( $fields['last_name'] ) ) {
269
+ return false;
270
+ }
271
+
272
+ return true;
273
+ }
274
+
275
+ public function set_formatted_shipping_address( $fields, $order ) {
276
+ if ( empty( $fields ) || ! is_array( $fields ) ) {
277
+ return $fields;
278
+ }
279
+
280
+ if ( 'yes' !== get_option( 'woocommerce_gzd_checkout_address_field' ) ) {
281
+ return $fields;
282
+ }
283
+
284
+ if ( $this->order_address_enable_customer_title( $fields ) && ( $title = wc_gzd_get_order_customer_title( $order, 'shipping' ) ) ) {
285
+ $fields['title'] = $title;
286
+ }
287
+
288
+ return $fields;
289
+ }
290
+
291
+ /**
292
+ * Improve tax display within order totals
293
+ *
294
+ * @param array $order_totals
295
+ * @param WC_Order $order
296
+ *
297
+ * @return array
298
+ */
299
+ public function order_item_tax_totals( $order_totals, $order, $tax_display = '' ) {
300
+ $tax_display = $tax_display ? $tax_display : get_option( 'woocommerce_tax_display_cart' );
301
+
302
+ // Set to formatted total without displaying tax info behind the price
303
+ $order_totals['order_total']['value'] = $order->get_formatted_order_total();
304
+
305
+ if ( 'excl' === $tax_display ) {
306
+ if ( 'itemized' === get_option( 'woocommerce_tax_total_display' ) ) {
307
+ foreach ( $order->get_tax_totals() as $code => $tax ) {
308
+ $key = sanitize_title( $code );
309
+
310
+ if ( isset( $order_totals[ $key ] ) ) {
311
+ $percentage = wc_gzd_get_order_tax_rate_percentage( $tax->rate_id, $order );
312
+
313
+ if ( ! is_null( $percentage ) ) {
314
+ $order_totals[ $key ]['label'] = wc_gzd_get_tax_rate_label( $percentage, 'excl' );
315
+ }
316
+ }
317
+ }
318
+ }
319
+ } else {
320
+ $tax_array = array();
321
+
322
+ if ( 'itemized' === get_option( 'woocommerce_tax_total_display' ) ) {
323
+ foreach ( $order->get_tax_totals() as $code => $tax ) {
324
+ $tax->rate = wc_gzd_get_order_tax_rate_percentage( $tax->rate_id, $order );
325
+
326
+ if ( ! isset( $tax_array[ $tax->rate ] ) ) {
327
+ $tax_array[ $tax->rate ] = array(
328
+ 'tax' => $tax,
329
+ 'amount' => $tax->amount,
330
+ 'contains' => array( $tax ),
331
+ );
332
+ } else {
333
+ array_push( $tax_array[ $tax->rate ]['contains'], $tax );
334
+ $tax_array[ $tax->rate ]['amount'] += $tax->amount;
335
+ }
336
+ }
337
+ } else {
338
+
339
+ $base_rate = WC_Tax::get_base_tax_rates();
340
+ $rate = reset( $base_rate );
341
+ $rate_id = key( $base_rate );
342
+
343
+ $base_rate = (object) $rate;
344
+ $base_rate->rate_id = $rate_id;
345
+
346
+ $tax_array[] = array(
347
+ 'tax' => $base_rate,
348
+ 'contains' => array( $base_rate ),
349
+ 'amount' => $order->get_total_tax(),
350
+ );
351
+ }
352
+
353
+ if ( ! empty( $tax_array ) ) {
354
+ foreach ( $tax_array as $tax ) {
355
+ $order_totals[ 'tax_' . WC_Tax::get_rate_code( $tax['tax']->rate_id ) ] = array(
356
+ 'label' => wc_gzd_get_tax_rate_label( $tax['tax']->rate ),
357
+ 'value' => wc_price( $tax['amount'], array( 'currency' => $order->get_currency() ) ),
358
+ );
359
+ }
360
+ }
361
+ }
362
+
363
+ return $order_totals;
364
+ }
365
+
366
+ public function recalculate_order_item_unit_price( $order_item ) {
367
+ if ( is_a( $order_item, 'WC_Order_Item_Product' ) ) {
368
+ if ( $gzd_item = wc_gzd_get_order_item( $order_item ) ) {
369
+ $gzd_item->recalculate_unit_price();
370
+ }
371
+ }
372
+ }
373
+ }
374
+
375
+ WC_GZD_Order_Helper::instance();
includes/class-wc-gzd-shortcodes.php CHANGED
@@ -191,6 +191,12 @@ class WC_GZD_Shortcodes {
191
  }
192
 
193
  public static function gzd_complaints( $atts ) {
 
 
 
 
 
 
194
  $texts = array(
195
  'dispute' => wc_gzd_get_dispute_resolution_text(),
196
  );
@@ -202,9 +208,13 @@ class WC_GZD_Shortcodes {
202
  ), '<a href="https://ec.europa.eu/consumers/odr" target="_blank">https://ec.europa.eu/consumers/odr</a>', $text ) );
203
  }
204
 
 
 
 
 
205
  ob_start();
206
- wc_get_template( 'global/complaints.php', array( 'dispute_text' => $texts['dispute'] ) );
207
- $return = '<div class="woocommerce woocommerce-gzd woocommerce-gzd-complaints-shortcode">' . ob_get_clean() . '</div>';
208
 
209
  return $return;
210
  }
191
  }
192
 
193
  public static function gzd_complaints( $atts ) {
194
+ $atts = wp_parse_args( $atts, array(
195
+ 'text_only' => 'no',
196
+ ) );
197
+
198
+ $atts['text_only'] = wc_string_to_bool( $atts['text_only'] );
199
+
200
  $texts = array(
201
  'dispute' => wc_gzd_get_dispute_resolution_text(),
202
  );
208
  ), '<a href="https://ec.europa.eu/consumers/odr" target="_blank">https://ec.europa.eu/consumers/odr</a>', $text ) );
209
  }
210
 
211
+ if ( $atts['text_only'] ) {
212
+ $texts['dispute'] = preg_replace( '%<p(.*?)>|</p>%s', '', $texts['dispute'] );
213
+ }
214
+
215
  ob_start();
216
+ wc_get_template( 'global/complaints.php', array( 'dispute_text' => $texts['dispute'], 'text_only' => $atts['text_only'] ) );
217
+ $return = ( $atts['text_only'] ? '' : '<div class="woocommerce woocommerce-gzd woocommerce-gzd-complaints-shortcode">' ) . ob_get_clean() . ( $atts['text_only'] ? '' : '</div>' );
218
 
219
  return $return;
220
  }
includes/gateways/direct-debit/class-wc-gzd-gateway-direct-debit.php CHANGED
@@ -483,7 +483,7 @@ Please notice: Period for pre-information of the SEPA direct debit is shortened
483
  *
484
  */
485
  $directDebit->addTransfer( $payment_id, apply_filters( 'woocommerce_gzd_direct_debit_sepa_xml_exporter_transfer_args', array(
486
- 'amount' => $order->get_total(),
487
  'debtorIban' => strtoupper( $this->clean_whitespaces( $this->maybe_decrypt( $order->get_meta( '_direct_debit_iban' ) ) ) ),
488
  'debtorBic' => strtoupper( $this->clean_whitespaces( $this->maybe_decrypt( $order->get_meta( '_direct_debit_bic' ) ) ) ),
489
  'debtorName' => $order->get_meta( '_direct_debit_holder' ),
483
  *
484
  */
485
  $directDebit->addTransfer( $payment_id, apply_filters( 'woocommerce_gzd_direct_debit_sepa_xml_exporter_transfer_args', array(
486
+ 'amount' => ( $order->get_total() - $order->get_total_refunded() ),
487
  'debtorIban' => strtoupper( $this->clean_whitespaces( $this->maybe_decrypt( $order->get_meta( '_direct_debit_iban' ) ) ) ),
488
  'debtorBic' => strtoupper( $this->clean_whitespaces( $this->maybe_decrypt( $order->get_meta( '_direct_debit_bic' ) ) ) ),
489
  'debtorName' => $order->get_meta( '_direct_debit_holder' ),
includes/wc-gzd-cart-functions.php CHANGED
@@ -594,10 +594,9 @@ function wc_gzd_get_cart_taxes( $cart, $include_shipping_taxes = true ) {
594
  $tax_array = array();
595
 
596
  // If prices are tax inclusive, show taxes here
597
- if ( get_option( 'woocommerce_calc_taxes' ) === 'yes' && wc_gzd_get_cart_tax_display_mode() === 'incl' ) {
598
-
599
- if ( get_option( 'woocommerce_tax_total_display' ) == 'itemized' ) {
600
 
 
601
  if ( ! $include_shipping_taxes ) {
602
  add_filter( 'woocommerce_cart_get_taxes', 'wc_gzd_cart_remove_shipping_taxes', 10, 2 );
603
  }
594
  $tax_array = array();
595
 
596
  // If prices are tax inclusive, show taxes here
597
+ if ( 'yes' === get_option( 'woocommerce_calc_taxes' ) && 'incl' === wc_gzd_get_cart_tax_display_mode() ) {
 
 
598
 
599
+ if ( 'itemized' === get_option( 'woocommerce_tax_total_display' ) ) {
600
  if ( ! $include_shipping_taxes ) {
601
  add_filter( 'woocommerce_cart_get_taxes', 'wc_gzd_cart_remove_shipping_taxes', 10, 2 );
602
  }
includes/wc-gzd-core-functions.php CHANGED
@@ -444,8 +444,12 @@ function wc_gzd_get_dispute_resolution_text() {
444
  return get_option( 'woocommerce_gzd_alternative_complaints_text_' . $type );
445
  }
446
 
447
- function wc_gzd_get_tax_rate_label( $rate_percentage ) {
448
- $label = ( get_option( 'woocommerce_tax_total_display' ) == 'itemized' ? sprintf( __( 'incl. %s%% VAT', 'woocommerce-germanized' ), wc_gzd_format_tax_rate_percentage( $rate_percentage ) ) : __( 'incl. VAT', 'woocommerce-germanized' ) );
 
 
 
 
449
 
450
  /**
451
  * Allow adjusting the tax rate label e.g. "incl. 19% tax".
@@ -456,7 +460,7 @@ function wc_gzd_get_tax_rate_label( $rate_percentage ) {
456
  * @since 2.3.3
457
  *
458
  */
459
- return apply_filters( 'woocommerce_gzd_tax_rate_label', $label, $rate_percentage );
460
  }
461
 
462
  /**
@@ -596,8 +600,10 @@ function wc_gzd_get_customer_title_options() {
596
  *
597
  */
598
  $titles = apply_filters( 'woocommerce_gzd_title_options', array(
599
- 1 => __( 'Mr.', 'woocommerce-germanized' ),
600
- 2 => __( 'Ms.', 'woocommerce-germanized' )
 
 
601
  ) );
602
 
603
  return $titles;
@@ -606,16 +612,26 @@ function wc_gzd_get_customer_title_options() {
606
  function wc_gzd_get_customer_title( $value ) {
607
  $option = absint( $value );
608
  $titles = wc_gzd_get_customer_title_options();
 
609
 
610
  if ( '[deleted]' === $value ) {
611
- return $value;
 
 
 
 
 
 
612
  }
613
 
614
- if ( array_key_exists( $option, $titles ) ) {
615
- return $titles[ $option ];
616
- } else {
617
- return __( 'Ms.', 'woocommerce-germanized' );
 
618
  }
 
 
619
  }
620
 
621
  function wc_gzd_register_legal_checkbox( $id, $args ) {
444
  return get_option( 'woocommerce_gzd_alternative_complaints_text_' . $type );
445
  }
446
 
447
+ function wc_gzd_get_tax_rate_label( $rate_percentage, $type = 'incl' ) {
448
+ if ( 'incl' === $type ) {
449
+ $label = ( get_option( 'woocommerce_tax_total_display' ) == 'itemized' ? sprintf( __( 'incl. %s%% VAT', 'woocommerce-germanized' ), wc_gzd_format_tax_rate_percentage( $rate_percentage ) ) : __( 'incl. VAT', 'woocommerce-germanized' ) );
450
+ } else {
451
+ $label = ( get_option( 'woocommerce_tax_total_display' ) == 'itemized' ? sprintf( __( '%s%% VAT', 'woocommerce-germanized' ), wc_gzd_format_tax_rate_percentage( $rate_percentage ) ) : __( 'VAT', 'woocommerce-germanized' ) );
452
+ }
453
 
454
  /**
455
  * Allow adjusting the tax rate label e.g. "incl. 19% tax".
460
  * @since 2.3.3
461
  *
462
  */
463
+ return apply_filters( 'woocommerce_gzd_tax_rate_label', $label, $rate_percentage, $type );
464
  }
465
 
466
  /**
600
  *
601
  */
602
  $titles = apply_filters( 'woocommerce_gzd_title_options', array(
603
+ 0 => _x( 'None', 'title-option', 'woocommerce-germanized' ),
604
+ 1 => __( 'Mr.', 'woocommerce-germanized' ),
605
+ 2 => __( 'Ms.', 'woocommerce-germanized' ),
606
+ 3 => __( 'Mx', 'woocommerce-germanized' )
607
  ) );
608
 
609
  return $titles;
612
  function wc_gzd_get_customer_title( $value ) {
613
  $option = absint( $value );
614
  $titles = wc_gzd_get_customer_title_options();
615
+ $title = '';
616
 
617
  if ( '[deleted]' === $value ) {
618
+ $title = $value;
619
+ } else {
620
+ if ( array_key_exists( $option, $titles ) ) {
621
+ $title = $titles[ $option ];
622
+ } else {
623
+ $title = __( 'Ms.', 'woocommerce-germanized' );
624
+ }
625
  }
626
 
627
+ /**
628
+ * In case the customer has chosen a gender-neutral title or no title at all - do not use a specific title as output.
629
+ */
630
+ if ( __( 'Mx', 'woocommerce-germanized' ) === $title || _x( 'None', 'title-option', 'woocommerce-germanized' ) === $title ) {
631
+ $title = '';
632
  }
633
+
634
+ return apply_filters( 'woocommerce_gzd_customer_formatted_title', $title, $value );
635
  }
636
 
637
  function wc_gzd_register_legal_checkbox( $id, $args ) {
packages/woocommerce-germanized-dhl/assets/css/admin.css CHANGED
@@ -15,11 +15,51 @@
15
  font-size: 13px;
16
  box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); }
17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  .germanized-create-label .show-services-trigger {
19
  font-weight: bold;
20
  margin-top: 15px;
21
  margin-bottom: 0;
22
  display: block;
23
- text-align: right; }
 
 
24
  .germanized-create-label .show-services-trigger a {
25
  text-decoration: none; }
15
  font-size: 13px;
16
  box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); }
17
 
18
+ .germanized-create-label .wc-gzd-shipment-im-additional-services p.label {
19
+ margin-top: 10px;
20
+ width: 100%;
21
+ display: block;
22
+ margin-bottom: 5px;
23
+ font-weight: bold; }
24
+
25
+ .germanized-create-label .wc-gzd-dhl-im-product-data {
26
+ margin-top: 2em;
27
+ min-width: 700px;
28
+ margin-left: -1rem !important;
29
+ margin-right: -1rem !important; }
30
+ .germanized-create-label .wc-gzd-dhl-im-product-data .column {
31
+ padding-left: 1rem !important;
32
+ padding-right: 1rem !important; }
33
+ .germanized-create-label .wc-gzd-dhl-im-product-data .column p:first-child {
34
+ margin-top: 1.5em !important; }
35
+ .germanized-create-label .wc-gzd-dhl-im-product-data .wc-gzd-dhl-im-product-price {
36
+ background: #ffd633;
37
+ border-radius: 4px;
38
+ padding: .5em 1em; }
39
+ .germanized-create-label .wc-gzd-dhl-im-product-data .wc-gzd-dhl-im-product-price .amount {
40
+ font-size: 18px;
41
+ font-weight: bold; }
42
+ .germanized-create-label .wc-gzd-dhl-im-product-data .wc-gzd-dhl-im-product-price .price-suffix {
43
+ display: block;
44
+ font-size: 11px;
45
+ line-height: 15px; }
46
+ .germanized-create-label .wc-gzd-dhl-im-product-data .col-dimensions {
47
+ color: #999; }
48
+ .germanized-create-label .wc-gzd-dhl-im-product-data .col-preview .image-preview img {
49
+ height: auto;
50
+ max-height: 140px; }
51
+ .germanized-create-label .wc-gzd-dhl-im-product-data .wc-gzd-dhl-im-product-information-text, .germanized-create-label .wc-gzd-dhl-im-product-data .wc-gzd-dhl-im-product-description {
52
+ font-size: 11px;
53
+ color: #999;
54
+ line-height: 1.5em; }
55
+
56
  .germanized-create-label .show-services-trigger {
57
  font-weight: bold;
58
  margin-top: 15px;
59
  margin-bottom: 0;
60
  display: block;
61
+ text-align: right;
62
+ vertical-align: middle;
63
+ line-height: 20px; }
64
  .germanized-create-label .show-services-trigger a {
65
  text-decoration: none; }
packages/woocommerce-germanized-dhl/assets/css/admin.min.css CHANGED
@@ -1 +1 @@
1
- #posts-filter .wc-gzd-dhl-bulk-downloads{clear:both;float:left;margin:1em 0}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions a.email::after{content:"\f465"}.wc-modal-shipping-method-settings .form-table td .wc-gzd-additional-desc{margin-top:1em;line-height:1.5em;background:#efefef;padding:.5em;font-style:normal;font-size:13px;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.germanized-create-label .show-services-trigger{font-weight:700;margin-top:15px;margin-bottom:0;display:block;text-align:right}.germanized-create-label .show-services-trigger a{text-decoration:none}
1
+ #posts-filter .wc-gzd-dhl-bulk-downloads{clear:both;float:left;margin:1em 0}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions a.email::after{content:"\f465"}.wc-modal-shipping-method-settings .form-table td .wc-gzd-additional-desc{margin-top:1em;line-height:1.5em;background:#efefef;padding:.5em;font-style:normal;font-size:13px;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.germanized-create-label .wc-gzd-shipment-im-additional-services p.label{margin-top:10px;width:100%;display:block;margin-bottom:5px;font-weight:700}.germanized-create-label .wc-gzd-dhl-im-product-data{margin-top:2em;min-width:700px;margin-left:-1rem!important;margin-right:-1rem!important}.germanized-create-label .wc-gzd-dhl-im-product-data .column{padding-left:1rem!important;padding-right:1rem!important}.germanized-create-label .wc-gzd-dhl-im-product-data .column p:first-child{margin-top:1.5em!important}.germanized-create-label .wc-gzd-dhl-im-product-data .wc-gzd-dhl-im-product-price{background:#ffd633;border-radius:4px;padding:.5em 1em}.germanized-create-label .wc-gzd-dhl-im-product-data .wc-gzd-dhl-im-product-price .amount{font-size:18px;font-weight:700}.germanized-create-label .wc-gzd-dhl-im-product-data .wc-gzd-dhl-im-product-price .price-suffix{display:block;font-size:11px;line-height:15px}.germanized-create-label .wc-gzd-dhl-im-product-data .col-dimensions{color:#999}.germanized-create-label .wc-gzd-dhl-im-product-data .col-preview .image-preview img{height:auto;max-height:140px}.germanized-create-label .wc-gzd-dhl-im-product-data .wc-gzd-dhl-im-product-description,.germanized-create-label .wc-gzd-dhl-im-product-data .wc-gzd-dhl-im-product-information-text{font-size:11px;color:#999;line-height:1.5em}.germanized-create-label .show-services-trigger{font-weight:700;margin-top:15px;margin-bottom:0;display:block;text-align:right;vertical-align:middle;line-height:20px}.germanized-create-label .show-services-trigger a{text-decoration:none}
packages/woocommerce-germanized-dhl/assets/css/admin.scss CHANGED
@@ -21,12 +21,75 @@
21
  }
22
 
23
  .germanized-create-label {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  .show-services-trigger {
25
  font-weight: bold;
26
  margin-top: 15px;
27
  margin-bottom: 0;
28
  display: block;
29
  text-align: right;
 
 
30
 
31
  a {
32
  text-decoration: none;
21
  }
22
 
23
  .germanized-create-label {
24
+ .wc-gzd-shipment-im-additional-services {
25
+ p.label {
26
+ margin-top: 10px;
27
+ width: 100%;
28
+ display: block;
29
+ margin-bottom: 5px;
30
+ font-weight: bold;
31
+ }
32
+ }
33
+
34
+ .wc-gzd-dhl-im-product-data {
35
+ margin-top: 2em;
36
+ min-width: 700px;
37
+ margin-left: -1rem !important;
38
+ margin-right: -1rem !important;
39
+
40
+ .column {
41
+ padding-left: 1rem !important;
42
+ padding-right: 1rem !important;
43
+
44
+ p:first-child {
45
+ margin-top: 1.5em !important;
46
+ }
47
+ }
48
+
49
+ .wc-gzd-dhl-im-product-price {
50
+ background: #ffd633;
51
+ border-radius: 4px;
52
+ padding: .5em 1em;
53
+
54
+ .amount {
55
+ font-size: 18px;
56
+ font-weight: bold;
57
+ }
58
+ .price-suffix {
59
+ display: block;
60
+ font-size: 11px;
61
+ line-height: 15px;
62
+ }
63
+ }
64
+
65
+ .col-dimensions {
66
+ color: #999;
67
+ }
68
+
69
+ .col-preview {
70
+ .image-preview {
71
+ img {
72
+ height: auto;
73
+ max-height: 140px;
74
+ }
75
+ }
76
+ }
77
+
78
+ .wc-gzd-dhl-im-product-information-text, .wc-gzd-dhl-im-product-description {
79
+ font-size: 11px;
80
+ color: #999;
81
+ line-height: 1.5em;
82
+ }
83
+ }
84
+
85
  .show-services-trigger {
86
  font-weight: bold;
87
  margin-top: 15px;
88
  margin-bottom: 0;
89
  display: block;
90
  text-align: right;
91
+ vertical-align: middle;
92
+ line-height: 20px;
93
 
94
  a {
95
  text-decoration: none;
packages/woocommerce-germanized-dhl/assets/img/wp-int-eu-preview.png ADDED
Binary file
packages/woocommerce-germanized-dhl/assets/img/wp-int-preview.png ADDED
Binary file
packages/woocommerce-germanized-dhl/assets/js/admin-deutsche-post-label.js ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.germanized = window.germanized || {};
2
+ window.germanized.admin = window.germanized.admin || {};
3
+
4
+ ( function( $, admin ) {
5
+
6
+ /**
7
+ * Core
8
+ */
9
+ admin.dhl_post_label = {
10
+
11
+ params: {},
12
+
13
+ init: function () {
14
+ var self = admin.dhl_post_label;
15
+ self.params = wc_gzd_admin_deutsche_post_label_params;
16
+
17
+ $( document ).on( 'change', '#deutsche_post_label_dhl_product, .wc-gzd-shipment-im-additional-services :input', self.onRefreshPreview );
18
+ $( document.body ).on( 'wc_gzd_shipment_label_after_init', self.onInit );
19
+ },
20
+
21
+ onInit: function() {
22
+ var self = admin.dhl_post_label;
23
+
24
+ if ( $( '#deutsche_post_label_dhl_product' ).length > 0 ) {
25
+ self.refreshProductData();
26
+ }
27
+ },
28
+
29
+ getSelectedAdditionalServices: function() {
30
+ var selectedIds = $( ".wc-gzd-shipment-im-additional-services :input:checked" ).map( function () {
31
+ return $( this ).val();
32
+ }).get();
33
+
34
+ return selectedIds;
35
+ },
36
+
37
+ onRefreshPreview: function() {
38
+ var self = admin.dhl_post_label,
39
+ backbone = germanized.admin.shipment_label_backbone.backbone,
40
+ params = {},
41
+ $wrapper = $( '.wc-gzd-shipment-create-label' );
42
+
43
+ params['security'] = self.params.refresh_label_preview_nonce;
44
+ params['product_id'] = self.getProductId();
45
+ params['selected_services'] = self.getSelectedAdditionalServices();
46
+ params['action'] = 'woocommerce_gzd_dhl_refresh_deutsche_post_label_preview';
47
+
48
+ backbone.doAjax( params, $wrapper, self.onPreviewSuccess );
49
+ },
50
+
51
+ onPreviewSuccess: function( data ) {
52
+ var self = admin.dhl_post_label,
53
+ $wrapper = $( '.wc-gzd-dhl-im-product-data .col-preview' ),
54
+ $img_wrapper = $( '.wc-gzd-dhl-im-product-data' ).find( '.image-preview' );
55
+
56
+ if ( data.is_wp_int ) {
57
+ $wrapper.parents( '.wc-gzd-shipment-create-label' ).find( '.wc-gzd-shipment-im-page-format' ).hide();
58
+ } else {
59
+ $wrapper.parents( '.wc-gzd-shipment-create-label' ).find( '.wc-gzd-shipment-im-page-format' ).show();
60
+ }
61
+
62
+ if ( data.preview_url ) {
63
+ $wrapper.block({
64
+ message: null,
65
+ overlayCSS: {
66
+ background: '#fff',
67
+ opacity: 0.6
68
+ }
69
+ });
70
+
71
+ if ( $img_wrapper.find( '.stamp-preview' ).length <= 0 ) {
72
+ $img_wrapper.append( '<img class="stamp-preview" style="display: none;" />' );
73
+ }
74
+
75
+ self.replaceProductData( data.preview_data );
76
+
77
+ $img_wrapper.find( '.stamp-preview' ).attr('src', data.preview_url ).load( function() {
78
+ $wrapper.unblock();
79
+ $( this ).show();
80
+ });
81
+ } else {
82
+ $img_wrapper.html( '' );
83
+ }
84
+ },
85
+
86
+ refreshProductData: function() {
87
+ var self = admin.dhl_post_label;
88
+
89
+ self.onRefreshPreview();
90
+ },
91
+
92
+ getProductId: function() {
93
+ return $( '#deutsche_post_label_dhl_product' ).val();
94
+ },
95
+
96
+ replaceProductData: function( productData ) {
97
+ var self = admin.dhl_post_label,
98
+ $wrapper = $( '.wc-gzd-shipment-create-label' ).find( '.wc-gzd-dhl-im-product-data' );
99
+
100
+ $wrapper.find( '.data-placeholder' ).html( '' );
101
+
102
+ $wrapper.find( '.data-placeholder' ).each( function() {
103
+ var replaceKey = $( this ).data( 'replace' );
104
+
105
+ if ( productData.hasOwnProperty( replaceKey ) ) {
106
+ $( this ).html( productData[ replaceKey ] );
107
+ $( this ).show();
108
+ } else {
109
+ $( this ).hide();
110
+ }
111
+ } );
112
+ }
113
+ };
114
+
115
+ $( document ).ready( function() {
116
+ germanized.admin.dhl_post_label.init();
117
+ });
118
+
119
+ })( jQuery, window.germanized.admin );
packages/woocommerce-germanized-dhl/assets/js/admin-deutsche-post-label.min.js ADDED
@@ -0,0 +1 @@
 
1
+ window.germanized=window.germanized||{},window.germanized.admin=window.germanized.admin||{},function(d,n){n.dhl_post_label={params:{},init:function(){var e=n.dhl_post_label;e.params=wc_gzd_admin_deutsche_post_label_params,d(document).on("change","#deutsche_post_label_dhl_product, .wc-gzd-shipment-im-additional-services :input",e.onRefreshPreview),d(document.body).on("wc_gzd_shipment_label_after_init",e.onInit)},onInit:function(){var e=n.dhl_post_label;0<d("#deutsche_post_label_dhl_product").length&&e.refreshProductData()},getSelectedAdditionalServices:function(){return d(".wc-gzd-shipment-im-additional-services :input:checked").map(function(){return d(this).val()}).get()},onRefreshPreview:function(){var e=n.dhl_post_label,t=germanized.admin.shipment_label_backbone.backbone,a={},i=d(".wc-gzd-shipment-create-label");a.security=e.params.refresh_label_preview_nonce,a.product_id=e.getProductId(),a.selected_services=e.getSelectedAdditionalServices(),a.action="woocommerce_gzd_dhl_refresh_deutsche_post_label_preview",t.doAjax(a,i,e.onPreviewSuccess)},onPreviewSuccess:function(e){var t=n.dhl_post_label,a=d(".wc-gzd-dhl-im-product-data .col-preview"),i=d(".wc-gzd-dhl-im-product-data").find(".image-preview");e.is_wp_int?a.parents(".wc-gzd-shipment-create-label").find(".wc-gzd-shipment-im-page-format").hide():a.parents(".wc-gzd-shipment-create-label").find(".wc-gzd-shipment-im-page-format").show(),e.preview_url?(a.block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),i.find(".stamp-preview").length<=0&&i.append('<img class="stamp-preview" style="display: none;" />'),t.replaceProductData(e.preview_data),i.find(".stamp-preview").attr("src",e.preview_url).load(function(){a.unblock(),d(this).show()})):i.html("")},refreshProductData:function(){n.dhl_post_label.onRefreshPreview()},getProductId:function(){return d("#deutsche_post_label_dhl_product").val()},replaceProductData:function(t){n.dhl_post_label;var e=d(".wc-gzd-shipment-create-label").find(".wc-gzd-dhl-im-product-data");e.find(".data-placeholder").html(""),e.find(".data-placeholder").each(function(){var e=d(this).data("replace");t.hasOwnProperty(e)?(d(this).html(t[e]),d(this).show()):d(this).hide()})}},d(document).ready(function(){germanized.admin.dhl_post_label.init()})}(jQuery,window.germanized.admin);
packages/woocommerce-germanized-dhl/assets/js/admin-internetmarke.js ADDED
@@ -0,0 +1,266 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.germanized = window.germanized || {};
2
+ window.germanized.admin = window.germanized.admin || {};
3
+
4
+ /*
5
+ * http://www.myersdaily.org/joseph/javascript/md5-text.html
6
+ */
7
+ ( function (global) {
8
+
9
+ var md5cycle = function (x, k) {
10
+ var a = x[0],
11
+ b = x[1],
12
+ c = x[2],
13
+ d = x[3];
14
+
15
+ a = ff(a, b, c, d, k[0], 7, -680876936);
16
+ d = ff(d, a, b, c, k[1], 12, -389564586);
17
+ c = ff(c, d, a, b, k[2], 17, 606105819);
18
+ b = ff(b, c, d, a, k[3], 22, -1044525330);
19
+ a = ff(a, b, c, d, k[4], 7, -176418897);
20
+ d = ff(d, a, b, c, k[5], 12, 1200080426);
21
+ c = ff(c, d, a, b, k[6], 17, -1473231341);
22
+ b = ff(b, c, d, a, k[7], 22, -45705983);
23
+ a = ff(a, b, c, d, k[8], 7, 1770035416);
24
+ d = ff(d, a, b, c, k[9], 12, -1958414417);
25
+ c = ff(c, d, a, b, k[10], 17, -42063);
26
+ b = ff(b, c, d, a, k[11], 22, -1990404162);
27
+ a = ff(a, b, c, d, k[12], 7, 1804603682);
28
+ d = ff(d, a, b, c, k[13], 12, -40341101);
29
+ c = ff(c, d, a, b, k[14], 17, -1502002290);
30
+ b = ff(b, c, d, a, k[15], 22, 1236535329);
31
+
32
+ a = gg(a, b, c, d, k[1], 5, -165796510);
33
+ d = gg(d, a, b, c, k[6], 9, -1069501632);
34
+ c = gg(c, d, a, b, k[11], 14, 643717713);
35
+ b = gg(b, c, d, a, k[0], 20, -373897302);
36
+ a = gg(a, b, c, d, k[5], 5, -701558691);
37
+ d = gg(d, a, b, c, k[10], 9, 38016083);
38
+ c = gg(c, d, a, b, k[15], 14, -660478335);
39
+ b = gg(b, c, d, a, k[4], 20, -405537848);
40
+ a = gg(a, b, c, d, k[9], 5, 568446438);
41
+ d = gg(d, a, b, c, k[14], 9, -1019803690);
42
+ c = gg(c, d, a, b, k[3], 14, -187363961);
43
+ b = gg(b, c, d, a, k[8], 20, 1163531501);
44
+ a = gg(a, b, c, d, k[13], 5, -1444681467);
45
+ d = gg(d, a, b, c, k[2], 9, -51403784);
46
+ c = gg(c, d, a, b, k[7], 14, 1735328473);
47
+ b = gg(b, c, d, a, k[12], 20, -1926607734);
48
+
49
+ a = hh(a, b, c, d, k[5], 4, -378558);
50
+ d = hh(d, a, b, c, k[8], 11, -2022574463);
51
+ c = hh(c, d, a, b, k[11], 16, 1839030562);
52
+ b = hh(b, c, d, a, k[14], 23, -35309556);
53
+ a = hh(a, b, c, d, k[1], 4, -1530992060);
54
+ d = hh(d, a, b, c, k[4], 11, 1272893353);
55
+ c = hh(c, d, a, b, k[7], 16, -155497632);
56
+ b = hh(b, c, d, a, k[10], 23, -1094730640);
57
+ a = hh(a, b, c, d, k[13], 4, 681279174);
58
+ d = hh(d, a, b, c, k[0], 11, -358537222);
59
+ c = hh(c, d, a, b, k[3], 16, -722521979);
60
+ b = hh(b, c, d, a, k[6], 23, 76029189);
61
+ a = hh(a, b, c, d, k[9], 4, -640364487);
62
+ d = hh(d, a, b, c, k[12], 11, -421815835);
63
+ c = hh(c, d, a, b, k[15], 16, 530742520);
64
+ b = hh(b, c, d, a, k[2], 23, -995338651);
65
+
66
+ a = ii(a, b, c, d, k[0], 6, -198630844);
67
+ d = ii(d, a, b, c, k[7], 10, 1126891415);
68
+ c = ii(c, d, a, b, k[14], 15, -1416354905);
69
+ b = ii(b, c, d, a, k[5], 21, -57434055);
70
+ a = ii(a, b, c, d, k[12], 6, 1700485571);
71
+ d = ii(d, a, b, c, k[3], 10, -1894986606);
72
+ c = ii(c, d, a, b, k[10], 15, -1051523);
73
+ b = ii(b, c, d, a, k[1], 21, -2054922799);
74
+ a = ii(a, b, c, d, k[8], 6, 1873313359);
75
+ d = ii(d, a, b, c, k[15], 10, -30611744);
76
+ c = ii(c, d, a, b, k[6], 15, -1560198380);
77
+ b = ii(b, c, d, a, k[13], 21, 1309151649);
78
+ a = ii(a, b, c, d, k[4], 6, -145523070);
79
+ d = ii(d, a, b, c, k[11], 10, -1120210379);
80
+ c = ii(c, d, a, b, k[2], 15, 718787259);
81
+ b = ii(b, c, d, a, k[9], 21, -343485551);
82
+
83
+ x[0] = add32(a, x[0]);
84
+ x[1] = add32(b, x[1]);
85
+ x[2] = add32(c, x[2]);
86
+ x[3] = add32(d, x[3]);
87
+
88
+ }
89
+
90
+ var cmn = function (q, a, b, x, s, t) {
91
+ a = add32(add32(a, q), add32(x, t));
92
+ return add32((a << s) | (a >>> (32 - s)), b);
93
+ }
94
+
95
+ var ff = function (a, b, c, d, x, s, t) {
96
+ return cmn((b & c) | ((~b) & d), a, b, x, s, t);
97
+ }
98
+
99
+ var gg = function (a, b, c, d, x, s, t) {
100
+ return cmn((b & d) | (c & (~d)), a, b, x, s, t);
101
+ }
102
+
103
+ var hh = function (a, b, c, d, x, s, t) {
104
+ return cmn(b ^ c ^ d, a, b, x, s, t);
105
+ }
106
+
107
+ var ii = function (a, b, c, d, x, s, t) {
108
+ return cmn(c ^ (b | (~d)), a, b, x, s, t);
109
+ }
110
+
111
+ var md51 = function (s) {
112
+ var txt = '',
113
+ n = s.length,
114
+ state = [1732584193, -271733879, -1732584194, 271733878],
115
+ i;
116
+ for (i = 64; i <= s.length; i += 64) {
117
+ md5cycle(state, md5blk(s.substring(i - 64, i)));
118
+ }
119
+ s = s.substring(i - 64);
120
+ var tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
121
+ for (i = 0; i < s.length; i++)
122
+ tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);
123
+ tail[i >> 2] |= 0x80 << ((i % 4) << 3);
124
+ if (i > 55) {
125
+ md5cycle(state, tail);
126
+ for (i = 0; i < 16; i++) tail[i] = 0;
127
+ }
128
+ tail[14] = n * 8;
129
+ md5cycle(state, tail);
130
+ return state;
131
+ }
132
+
133
+ /* there needs to be support for Unicode here,
134
+ * unless we pretend that we can redefine the MD-5
135
+ * algorithm for multi-byte characters (perhaps
136
+ * by adding every four 16-bit characters and
137
+ * shortening the sum to 32 bits). Otherwise
138
+ * I suggest performing MD-5 as if every character
139
+ * was two bytes--e.g., 0040 0025 = @%--but then
140
+ * how will an ordinary MD-5 sum be matched?
141
+ * There is no way to standardize text to something
142
+ * like UTF-8 before transformation; speed cost is
143
+ * utterly prohibitive. The JavaScript standard
144
+ * itself needs to look at this: it should start
145
+ * providing access to strings as preformed UTF-8
146
+ * 8-bit unsigned value arrays.
147
+ */
148
+ var md5blk = function (s) { /* I figured global was faster. */
149
+ var md5blks = [],
150
+ i; /* Andy King said do it this way. */
151
+ for (i = 0; i < 64; i += 4) {
152
+ md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);
153
+ }
154
+ return md5blks;
155
+ }
156
+
157
+ var hex_chr = '0123456789abcdef'.split('');
158
+
159
+ var rhex = function (n) {
160
+ var s = '',
161
+ j = 0;
162
+ for (; j < 4; j++)
163
+ s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];
164
+ return s;
165
+ }
166
+
167
+ var hex = function (x) {
168
+ for (var i = 0; i < x.length; i++)
169
+ x[i] = rhex(x[i]);
170
+ return x.join('');
171
+ }
172
+
173
+ var md5 = global.md5 = function (s) {
174
+ return hex(md51(s));
175
+ }
176
+
177
+ /* this function is much faster,
178
+ so if possible we use it. Some IEs
179
+ are the only ones I know of that
180
+ need the idiotic second function,
181
+ generated by an if clause. */
182
+
183
+ var add32 = function (a, b) {
184
+ return (a + b) & 0xFFFFFFFF;
185
+ }
186
+
187
+ if (md5('hello') != '5d41402abc4b2a76b9719d911017c592') {
188
+ var add32 = function (x, y) {
189
+ var lsw = (x & 0xFFFF) + (y & 0xFFFF),
190
+ msw = (x >> 16) + (y >> 16) + (lsw >> 16);
191
+ return (msw << 16) | (lsw & 0xFFFF);
192
+ }
193
+ }
194
+ })(window);
195
+
196
+ ( function( $, admin, window ) {
197
+
198
+ /**
199
+ * Core
200
+ */
201
+ admin.dhl_internetmarke = {
202
+
203
+ params: {},
204
+
205
+ init: function () {
206
+ var self = admin.dhl_internetmarke;
207
+
208
+ $( document ).on( 'click', '#woocommerce_gzd_dhl_im_portokasse_charge', self.onCharge );
209
+ },
210
+
211
+ onCharge: function() {
212
+ var $button = $( this ),
213
+ data = $button.data(),
214
+ amount = $( '#woocommerce_gzd_dhl_im_portokasse_charge_amount' ).val();
215
+
216
+ $form = $( '<form target="_blank" action="' + $button.data( 'url' ) + '" id="wc-gzd-dhl-im-portokasse-form" method="POST" style=""></form>' ).appendTo( 'body' );
217
+
218
+ $.each( data, function( index, value ) {
219
+ $form.append( '<input type="hidden" name="' + index.toUpperCase() + '" value="' + value + '" />' );
220
+ } );
221
+
222
+ var balance = parseInt( ( parseFloat( amount.replace( ',', '.') ).toFixed( 2 ) * 100 ).toFixed() );
223
+ var wallet = parseInt( data['wallet'] );
224
+
225
+ /**
226
+ * Set min amount.
227
+ */
228
+ if ( balance < 1000 || Number.isNaN( balance ) ) {
229
+ balance = 1000;
230
+ }
231
+
232
+ var date = new Date();
233
+ var timestamp =
234
+ ('0' + date.getDate()).slice(-2) +
235
+ ('0' + (date.getMonth() + 1)).slice(-2) +
236
+ date.getFullYear().toString() +
237
+ '-' +
238
+ ('0' + date.getHours()).slice(-2) +
239
+ ('0' + date.getMinutes()).slice(-2) +
240
+ ('0' + date.getSeconds()).slice(-2);
241
+
242
+ var concat = [
243
+ data['partner_id'],
244
+ timestamp,
245
+ data['success_url'],
246
+ data['cancel_url'],
247
+ data['user_token'],
248
+ wallet + balance,
249
+ data['schluessel_dpwn_partner']
250
+ ].join( '::' );
251
+
252
+ $form.append( '<input type="hidden" name="BALANCE" value="' + ( wallet + balance ) + '" />' );
253
+ $form.append( '<input type="hidden" name="PARTNER_SIGNATURE" value="' + ( window.md5( concat ).substring( 0,8 ) ) + '" />' );
254
+ $form.append( '<input type="hidden" name="REQUEST_TIMESTAMP" value="' + timestamp + '" />' );
255
+
256
+ $form.submit();
257
+
258
+ return false;
259
+ }
260
+ };
261
+
262
+ $( document ).ready( function() {
263
+ germanized.admin.dhl_internetmarke.init();
264
+ });
265
+
266
+ })( jQuery, window.germanized.admin, window );
packages/woocommerce-germanized-dhl/assets/js/admin-internetmarke.min.js ADDED
@@ -0,0 +1 @@
 
1
+ window.germanized=window.germanized||{},window.germanized.admin=window.germanized.admin||{},function(e){function o(e,n){var r=e[0],t=e[1],a=e[2],o=e[3];r=i(r,t,a,o,n[0],7,-680876936),o=i(o,r,t,a,n[1],12,-389564586),a=i(a,o,r,t,n[2],17,606105819),t=i(t,a,o,r,n[3],22,-1044525330),r=i(r,t,a,o,n[4],7,-176418897),o=i(o,r,t,a,n[5],12,1200080426),a=i(a,o,r,t,n[6],17,-1473231341),t=i(t,a,o,r,n[7],22,-45705983),r=i(r,t,a,o,n[8],7,1770035416),o=i(o,r,t,a,n[9],12,-1958414417),a=i(a,o,r,t,n[10],17,-42063),t=i(t,a,o,r,n[11],22,-1990404162),r=i(r,t,a,o,n[12],7,1804603682),o=i(o,r,t,a,n[13],12,-40341101),a=i(a,o,r,t,n[14],17,-1502002290),t=i(t,a,o,r,n[15],22,1236535329),r=u(r,t,a,o,n[1],5,-165796510),o=u(o,r,t,a,n[6],9,-1069501632),a=u(a,o,r,t,n[11],14,643717713),t=u(t,a,o,r,n[0],20,-373897302),r=u(r,t,a,o,n[5],5,-701558691),o=u(o,r,t,a,n[10],9,38016083),a=u(a,o,r,t,n[15],14,-660478335),t=u(t,a,o,r,n[4],20,-405537848),r=u(r,t,a,o,n[9],5,568446438),o=u(o,r,t,a,n[14],9,-1019803690),a=u(a,o,r,t,n[3],14,-187363961),t=u(t,a,o,r,n[8],20,1163531501),r=u(r,t,a,o,n[13],5,-1444681467),o=u(o,r,t,a,n[2],9,-51403784),a=u(a,o,r,t,n[7],14,1735328473),t=u(t,a,o,r,n[12],20,-1926607734),r=c(r,t,a,o,n[5],4,-378558),o=c(o,r,t,a,n[8],11,-2022574463),a=c(a,o,r,t,n[11],16,1839030562),t=c(t,a,o,r,n[14],23,-35309556),r=c(r,t,a,o,n[1],4,-1530992060),o=c(o,r,t,a,n[4],11,1272893353),a=c(a,o,r,t,n[7],16,-155497632),t=c(t,a,o,r,n[10],23,-1094730640),r=c(r,t,a,o,n[13],4,681279174),o=c(o,r,t,a,n[0],11,-358537222),a=c(a,o,r,t,n[3],16,-722521979),t=c(t,a,o,r,n[6],23,76029189),r=c(r,t,a,o,n[9],4,-640364487),o=c(o,r,t,a,n[12],11,-421815835),a=c(a,o,r,t,n[15],16,530742520),t=c(t,a,o,r,n[2],23,-995338651),r=m(r,t,a,o,n[0],6,-198630844),o=m(o,r,t,a,n[7],10,1126891415),a=m(a,o,r,t,n[14],15,-1416354905),t=m(t,a,o,r,n[5],21,-57434055),r=m(r,t,a,o,n[12],6,1700485571),o=m(o,r,t,a,n[3],10,-1894986606),a=m(a,o,r,t,n[10],15,-1051523),t=m(t,a,o,r,n[1],21,-2054922799),r=m(r,t,a,o,n[8],6,1873313359),o=m(o,r,t,a,n[15],10,-30611744),a=m(a,o,r,t,n[6],15,-1560198380),t=m(t,a,o,r,n[13],21,1309151649),r=m(r,t,a,o,n[4],6,-145523070),o=m(o,r,t,a,n[11],10,-1120210379),a=m(a,o,r,t,n[2],15,718787259),t=m(t,a,o,r,n[9],21,-343485551),e[0]=f(r,e[0]),e[1]=f(t,e[1]),e[2]=f(a,e[2]),e[3]=f(o,e[3])}function d(e,n,r,t,a,o){return n=f(f(n,e),f(t,o)),f(n<<a|n>>>32-a,r)}function r(e){for(var n="",r=0;r<4;r++)n+=t[e>>8*r+4&15]+t[e>>8*r&15];return n}var i=function(e,n,r,t,a,o,i){return d(n&r|~n&t,e,n,a,o,i)},u=function(e,n,r,t,a,o,i){return d(n&t|r&~t,e,n,a,o,i)},c=function(e,n,r,t,a,o,i){return d(n^r^t,e,n,a,o,i)},m=function(e,n,r,t,a,o,i){return d(r^(n|~t),e,n,a,o,i)},l=function(e){var n,r=[];for(n=0;n<64;n+=4)r[n>>2]=e.charCodeAt(n)+(e.charCodeAt(n+1)<<8)+(e.charCodeAt(n+2)<<16)+(e.charCodeAt(n+3)<<24);return r},t="0123456789abcdef".split(""),n=e.md5=function(e){return function(e){for(var n=0;n<e.length;n++)e[n]=r(e[n]);return e.join("")}(function(e){var n,r=e.length,t=[1732584193,-271733879,-1732584194,271733878];for(n=64;n<=e.length;n+=64)o(t,l(e.substring(n-64,n)));e=e.substring(n-64);var a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(n=0;n<e.length;n++)a[n>>2]|=e.charCodeAt(n)<<(n%4<<3);if(a[n>>2]|=128<<(n%4<<3),55<n)for(o(t,a),n=0;n<16;n++)a[n]=0;return a[14]=8*r,o(t,a),t}(e))},f=function(e,n){return e+n&4294967295};if("5d41402abc4b2a76b9719d911017c592"!=n("hello"))f=function(e,n){var r=(65535&e)+(65535&n);return(e>>16)+(n>>16)+(r>>16)<<16|65535&r}}(window),function(u,n,c){n.dhl_internetmarke={params:{},init:function(){var e=n.dhl_internetmarke;u(document).on("click","#woocommerce_gzd_dhl_im_portokasse_charge",e.onCharge)},onCharge:function(){var e=u(this),n=e.data(),r=u("#woocommerce_gzd_dhl_im_portokasse_charge_amount").val();$form=u('<form target="_blank" action="'+e.data("url")+'" id="wc-gzd-dhl-im-portokasse-form" method="POST" style=""></form>').appendTo("body"),u.each(n,function(e,n){$form.append('<input type="hidden" name="'+e.toUpperCase()+'" value="'+n+'" />')});var t=parseInt((100*parseFloat(r.replace(",",".")).toFixed(2)).toFixed()),a=parseInt(n.wallet);(t<1e3||Number.isNaN(t))&&(t=1e3);var o=new Date,i=("0"+o.getDate()).slice(-2)+("0"+(o.getMonth()+1)).slice(-2)+o.getFullYear().toString()+"-"+("0"+o.getHours()).slice(-2)+("0"+o.getMinutes()).slice(-2)+("0"+o.getSeconds()).slice(-2),d=[n.partner_id,i,n.success_url,n.cancel_url,n.user_token,a+t,n.schluessel_dpwn_partner].join("::");return $form.append('<input type="hidden" name="BALANCE" value="'+(a+t)+'" />'),$form.append('<input type="hidden" name="PARTNER_SIGNATURE" value="'+c.md5(d).substring(0,8)+'" />'),$form.append('<input type="hidden" name="REQUEST_TIMESTAMP" value="'+i+'" />'),$form.submit(),!1}},u(document).ready(function(){germanized.admin.dhl_internetmarke.init()})}(jQuery,window.germanized.admin,window);
packages/woocommerce-germanized-dhl/includes/admin/views/html-deutsche-post-additional-services.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Shipment label HTML for meta box.
4
+ *
5
+ * @package WooCommerce_Germanized/DHL/Admin
6
+ */
7
+ defined( 'ABSPATH' ) || exit;
8
+
9
+ $selected_services = isset( $selected_services ) ? $selected_services : array();
10
+ $services = \Vendidero\Germanized\DHL\Package::get_internetmarke_api()->get_product_list()->get_services_for_product( $product_id, $selected_services );
11
+ ?>
12
+
13
+ <?php if ( ! empty( $services ) ) : ?>
14
+ <p class="label"><?php _ex( 'Additional Services', 'dhl', 'woocommerce-germanized' ); ?></p>
15
+
16
+ <div class="wc-gzd-deutsche-post-additional-service-list">
17
+ <?php foreach( $services as $service ) : ?>
18
+ <?php woocommerce_wp_checkbox( array(
19
+ 'id' => 'deutsche_post_label_additional_services_' . $service,
20
+ 'name' => 'deutsche_post_label_additional_services[]',
21
+ 'wrapper_class' => 'form-field-checkbox',
22
+ 'label' => \Vendidero\Germanized\DHL\Package::get_internetmarke_api()->get_product_list()->get_additional_service_title( $service ),
23
+ 'cbvalue' => $service,
24
+ 'value' => in_array( $service, $selected_services ) ? $service : '',
25
+ ) ); ?>
26
+ <?php endforeach; ?>
27
+ </div>
28
+ <?php endif; ?>
packages/woocommerce-germanized-dhl/includes/admin/views/html-shipment-deutsche-post-label-backbone-form.php ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Shipment label HTML for meta box.
4
+ *
5
+ * @package WooCommerce_Germanized/DHL/Admin
6
+ */
7
+ defined( 'ABSPATH' ) || exit;
8
+
9
+ use Vendidero\Germanized\DHL\Package;
10
+
11
+ $default_args = wc_gzd_dhl_get_deutsche_post_label_default_args( $dhl_order, $shipment );
12
+ $im_products = wc_gzd_dhl_get_deutsche_post_products( $shipment );
13
+ $selected_product = isset( $default_args['dhl_product'] ) ? $default_args['dhl_product'] : array_key_first( $im_products );
14
+ $selected_product_id = 0;
15
+ $is_wp_int = false;
16
+
17
+ if ( ! empty( $selected_product ) ) {
18
+ $is_wp_int = Package::get_internetmarke_api()->is_warenpost_international( $selected_product );
19
+ $selected_product_id = Package::get_internetmarke_api()->get_product_id( $selected_product );
20
+ }
21
+ ?>
22
+ <?php if ( empty( $im_products ) ) : ?>
23
+ <style>
24
+ .wc-backbone-modal-content footer {
25
+ display: none !important;
26
+ }
27
+ </style>
28
+ <div class="notice-wrapper">
29
+ <div class="notice is-dismissible notice-warning">
30
+ <p><?php printf( __( 'Sorry but none of your selected <a href="%s">Deutsche Post Products</a> is available for this shipment. Please verify your shipment data (e.g. weight) and try again.', 'dhl', 'woocommerce-germanized' ), admin_url( \Vendidero\Germanized\DHL\Admin\Settings::get_settings_url( 'internetmarke' ) ) ); ?></p>
31
+ </div>
32
+ </div>
33
+ <?php else: ?>
34
+ <form action="" method="post" class="wc-gzd-create-shipment-label-form">
35
+ <?php woocommerce_wp_select( array(
36
+ 'id' => 'deutsche_post_label_dhl_product',
37
+ 'label' => _x( 'Product', 'dhl', 'woocommerce-germanized' ),
38
+ 'description' => '',
39
+ 'options' => $im_products,
40
+ 'value' => isset( $default_args['dhl_product'] ) ? $default_args['dhl_product'] : '',
41
+ ) ); ?>
42
+
43
+ <div class="wc-gzd-shipment-im-additional-services">
44
+ <?php
45
+ $product_id = $selected_product_id;
46
+ $selected_services = isset( $default_args['additional_services'] ) ? $default_args['additional_services'] : array();
47
+
48
+ include( Package::get_path() . '/includes/admin/views/html-deutsche-post-additional-services.php' );
49
+ ?>
50
+ </div>
51
+
52
+ <div class="wc-gzd-shipment-im-page-format" style="<?php echo ( $is_wp_int ? 'display: none;' : '' ); ?>">
53
+ <?php woocommerce_wp_select( array(
54
+ 'id' => 'deutsche_post_label_page_format',
55
+ 'label' => _x( 'Page Format', 'dhl', 'woocommerce-germanized' ),
56
+ 'description' => '',
57
+ 'options' => Package::get_internetmarke_api()->get_page_format_list(),
58
+ 'value' => isset( $default_args['page_format'] ) ? $default_args['page_format'] : '',
59
+ ) ); ?>
60
+ </div>
61
+ </form>
62
+
63
+ <div class="columns preview-columns wc-gzd-dhl-im-product-data">
64
+ <div class="column col-4">
65
+ <p class="wc-gzd-dhl-im-product-price wc-price data-placeholder hide-default" data-replace="price_formatted"></p>
66
+ </div>
67
+ <div class="column col-3 col-dimensions">
68
+ <p class="wc-gzd-dhl-im-product-dimensions data-placeholder hide-default" data-replace="dimensions_formatted"></p>
69
+ </div>
70
+ <div class="column col-5 col-preview">
71
+ <div class="image-preview"></div>
72
+ </div>
73
+ <div class="column col-12">
74
+ <p class="wc-gzd-dhl-im-product-description data-placeholder hide-default" data-replace="description_formatted"></p>
75
+ <p class="wc-gzd-dhl-im-product-information-text data-placeholder hide-default" data-replace="information_text_formatted"></p>
76
+ </div>
77
+ </div>
78
+ <?php endif; ?>
packages/woocommerce-germanized-dhl/includes/admin/views/html-shipment-label-backbone-form.php CHANGED
@@ -13,75 +13,75 @@ $default_args = wc_gzd_dhl_get_label_default_args( $dhl_order, $shipment );
13
 
14
  <form action="" method="post" class="wc-gzd-create-shipment-label-form">
15
 
16
- <?php woocommerce_wp_select( array(
17
- 'id' => 'dhl_label_dhl_product',
18
- 'label' => _x( 'DHL Product', 'dhl', 'woocommerce-germanized' ),
19
- 'description' => '',
20
- 'options' => wc_gzd_dhl_get_products( $shipment->get_country() ),
21
- 'value' => isset( $default_args['dhl_product'] ) ? $default_args['dhl_product'] : '',
22
- ) ); ?>
23
-
24
- <?php if ( $dhl_order->has_cod_payment() ) : ?>
25
- <?php woocommerce_wp_text_input( array(
26
- 'id' => 'dhl_label_cod_total',
27
- 'class' => 'wc_input_decimal',
28
- 'label' => _x( 'COD Amount', 'dhl', 'woocommerce-germanized' ),
29
- 'placeholder' => '',
30
  'description' => '',
31
- 'value' => isset( $default_args['cod_total'] ) ? $default_args['cod_total'] : '',
 
32
  ) ); ?>
33
 
34
- <input type="hidden" name="dhl_label_cod_includes_additional_total" value="<?php echo ( isset( $default_args['cod_includes_additional_total'] ) ? $default_args['cod_includes_additional_total'] : '' ); ?>" />
35
- <?php endif; ?>
 
 
 
 
 
 
 
36
 
37
- <?php if ( Package::is_crossborder_shipment( $shipment->get_country() ) ) : ?>
38
- <?php woocommerce_wp_select( array(
39
- 'id' => 'dhl_label_duties',
40
- 'label' => _x( 'Duties', 'dhl', 'woocommerce-germanized' ),
41
- 'description' => '',
42
- 'value' => isset( $default_args['duties'] ) ? $default_args['duties'] : '',
43
- 'options' => wc_gzd_dhl_get_duties(),
44
- ) ); ?>
45
- <?php endif; ?>
46
 
47
- <?php if ( Package::base_country_supports( 'services' ) && Package::is_shipping_domestic( $shipment->get_country() ) ) :
 
 
 
 
 
 
 
 
48
 
49
- $preferred_days = array();
50
- $preferred_times = array();
51
 
52
- try {
53
- $preferred_day_options = Package::get_api()->get_preferred_available_days( $shipment->get_postcode() );
54
 
55
- if ( $preferred_day_options ) {
56
- $preferred_days = $preferred_day_options;
57
- }
58
- } catch( Exception $e ) {}
59
- ?>
60
 
61
- <div class="columns">
62
- <div class="column <?php echo ( isset( $default_args['preferred_time'] ) ) ? 'col-6' : 'col-12'; ?>">
63
- <?php woocommerce_wp_select( array(
64
- 'id' => 'dhl_label_preferred_day',
65
- 'label' => _x( 'Preferred Day', 'dhl', 'woocommerce-germanized' ),
66
- 'description' => '',
67
- 'value' => isset( $default_args['preferred_day'] ) ? $default_args['preferred_day'] : '',
68
- 'options' => wc_gzd_dhl_get_preferred_days_select_options( $preferred_days, ( isset( $default_args['preferred_day'] ) ? $default_args['preferred_day'] : '' ) ),
69
- ) ); ?>
70
- </div>
71
- <?php if ( isset( $default_args['preferred_time'] ) ) : ?>
72
- <div class="column col-6">
73
  <?php woocommerce_wp_select( array(
74
- 'id' => 'dhl_label_preferred_time',
75
- 'label' => _x( 'Preferred Time', 'dhl', 'woocommerce-germanized' ),
76
  'description' => '',
77
- 'value' => $default_args['preferred_time'],
78
- 'options' => wc_gzd_dhl_get_preferred_times_select_options( array( $default_args['preferred_time'] => $default_args['preferred_time'] ) ),
79
  ) ); ?>
80
- </div>
81
- <?php endif; ?>
82
- </div>
83
-
84
- <?php if ( $dhl_order->has_preferred_location() ) : ?>
 
 
 
 
 
 
 
 
 
 
85
  <?php woocommerce_wp_text_input( array(
86
  'id' => 'dhl_label_preferred_location',
87
  'label' => _x( 'Preferred Location', 'dhl', 'woocommerce-germanized' ),
@@ -92,7 +92,7 @@ $default_args = wc_gzd_dhl_get_label_default_args( $dhl_order, $shipment );
92
  ) ); ?>
93
  <?php endif; ?>
94
 
95
- <?php if ( $dhl_order->has_preferred_neighbor() ) : ?>
96
  <?php woocommerce_wp_text_input( array(
97
  'id' => 'dhl_label_preferred_neighbor',
98
  'label' => _x( 'Preferred Neighbor', 'dhl', 'woocommerce-germanized' ),
@@ -103,7 +103,7 @@ $default_args = wc_gzd_dhl_get_label_default_args( $dhl_order, $shipment );
103
  ) ); ?>
104
  <?php endif; ?>
105
 
106
- <?php woocommerce_wp_checkbox( array(
107
  'id' => 'dhl_label_has_inlay_return',
108
  'label' => _x( 'Create inlay return label', 'dhl', 'woocommerce-germanized' ),
109
  'class' => 'checkbox show-if-trigger',
@@ -113,88 +113,88 @@ $default_args = wc_gzd_dhl_get_label_default_args( $dhl_order, $shipment );
113
  'wrapper_class' => 'form-field-checkbox'
114
  ) ); ?>
115
 
116
- <div class="show-if show-if-has-return">
117
- <div class="columns">
118
- <div class="column col-12">
119
- <?php woocommerce_wp_text_input( array(
120
- 'id' => 'dhl_label_return_address[name]',
121
- 'label' => _x( 'Name', 'dhl', 'woocommerce-germanized' ),
122
- 'placeholder' => '',
123
- 'description' => '',
124
- 'value' => isset( $default_args['return_address']['name'] ) ? $default_args['return_address']['name'] : '',
125
- ) ); ?>
126
- </div>
127
- </div>
128
- <?php woocommerce_wp_text_input( array(
129
- 'id' => 'dhl_label_return_address[company]',
130
- 'label' => _x( 'Company', 'dhl', 'woocommerce-germanized' ),
131
- 'placeholder' => '',
132
- 'description' => '',
133
- 'value' => isset( $default_args['return_address']['company'] ) ? $default_args['return_address']['company'] : '',
134
- ) ); ?>
135
- <div class="columns">
136
- <div class="column col-9">
137
- <?php woocommerce_wp_text_input( array(
138
- 'id' => 'dhl_label_return_address[street]',
139
- 'label' => _x( 'Street', 'dhl', 'woocommerce-germanized' ),
140
- 'placeholder' => '',
141
- 'description' => '',
142
- 'value' => isset( $default_args['return_address']['street'] ) ? $default_args['return_address']['street'] : '',
143
- ) ); ?>
144
- </div>
145
- <div class="column col-3">
146
- <?php woocommerce_wp_text_input( array(
147
- 'id' => 'dhl_label_return_address[street_number]',
148
- 'label' => _x( 'Street No', 'dhl', 'woocommerce-germanized' ),
149
- 'placeholder' => '',
150
- 'description' => '',
151
- 'value' => isset( $default_args['return_address']['street_number'] ) ? $default_args['return_address']['street_number'] : '',
152
- ) ); ?>
153
- </div>
154
- </div>
155
- <div class="columns">
156
- <div class="column col-6">
157
- <?php woocommerce_wp_text_input( array(
158
- 'id' => 'dhl_label_return_address[postcode]',
159
- 'label' => _x( 'Postcode', 'dhl', 'woocommerce-germanized' ),
160
- 'placeholder' => '',
161
- 'description' => '',
162
- 'value' => isset( $default_args['return_address']['postcode'] ) ? $default_args['return_address']['postcode'] : '',
163
- ) ); ?>
164
- </div>
165
- <div class="column col-6">
166
- <?php woocommerce_wp_text_input( array(
167
- 'id' => 'dhl_label_return_address[city]',
168
- 'label' => _x( 'City', 'dhl', 'woocommerce-germanized' ),
169
- 'placeholder' => '',
170
- 'description' => '',
171
- 'value' => isset( $default_args['return_address']['city'] ) ? $default_args['return_address']['city'] : '',
172
- ) ); ?>
173
- </div>
174
- </div>
175
- <div class="columns">
176
- <div class="column col-6">
177
- <?php woocommerce_wp_text_input( array(
178
- 'id' => 'dhl_label_return_address[phone]',
179
- 'label' => _x( 'Phone', 'dhl', 'woocommerce-germanized' ),
180
- 'placeholder' => '',
181
- 'description' => '',
182
- 'value' => isset( $default_args['return_address']['phone'] ) ? $default_args['return_address']['phone'] : '',
183
- ) ); ?>
184
- </div>
185
- <div class="column col-6">
186
- <?php woocommerce_wp_text_input( array(
187
- 'id' => 'dhl_label_return_address[email]',
188
- 'label' => _x( 'Email', 'dhl', 'woocommerce-germanized' ),
189
- 'placeholder' => '',
190
- 'description' => '',
191
- 'value' => isset( $default_args['return_address']['email'] ) ? $default_args['return_address']['email'] : '',
192
- ) ); ?>
193
- </div>
194
- </div>
195
- </div>
196
 
197
- <?php woocommerce_wp_checkbox( array(
198
  'id' => 'dhl_label_codeable_address_only',
199
  'label' => _x( 'Valid address only', 'dhl', 'woocommerce-germanized' ),
200
  'placeholder' => '',
@@ -203,138 +203,138 @@ $default_args = wc_gzd_dhl_get_label_default_args( $dhl_order, $shipment );
203
  'wrapper_class' => 'form-field-checkbox'
204
  ) ); ?>
205
 
206
- <p class="show-services-trigger">
207
- <a href="#" class="show-further-services <?php echo ( ! empty( $default_args['services'] ) ? 'hide-default' : '' ); ?>">
208
- <span class="dashicons dashicons-plus"></span> <?php _ex( 'More services', 'dhl', 'woocommerce-germanized' ); ?>
209
- </a>
210
- <a class="show-fewer-services <?php echo ( empty( $default_args['services'] ) ? 'hide-default' : '' ); ?>" href="#">
211
- <span class="dashicons dashicons-minus"></span> <?php _ex( 'Fewer services', 'dhl', 'woocommerce-germanized' ); ?>
212
- </a>
213
- </p>
214
 
215
- <div class="<?php echo ( empty( $default_args['services'] ) ? 'hide-default' : '' ); ?> show-if-further-services">
216
 
217
- <?php woocommerce_wp_select( array(
218
- 'id' => 'dhl_label_visual_min_age',
219
- 'label' => _x( 'Age check', 'dhl', 'woocommerce-germanized' ),
220
- 'description' => '',
221
- 'value' => isset( $default_args['visual_min_age'] ) ? $default_args['visual_min_age'] : '',
222
- 'options' => wc_gzd_dhl_get_visual_min_ages(),
223
- 'custom_attributes' => wc_gzd_dhl_get_service_product_attributes( 'VisualCheckOfAge' )
224
- ) ); ?>
225
 
226
- <?php woocommerce_wp_checkbox( array(
227
- 'id' => 'dhl_label_service_GoGreen',
228
- 'label' => _x( 'GoGreen', 'dhl', 'woocommerce-germanized' ),
229
- 'description' => '',
230
- 'value' => in_array( 'GoGreen', $default_args['services'] ) ? 'yes' : 'no',
231
- 'wrapper_class' => 'form-field-checkbox',
232
- 'custom_attributes' => wc_gzd_dhl_get_service_product_attributes( 'GoGreen' )
233
- ) ); ?>
234
 
235
- <?php woocommerce_wp_checkbox( array(
236
- 'id' => 'dhl_label_service_AdditionalInsurance',
237
- 'label' => _x( 'Additional insurance', 'dhl', 'woocommerce-germanized' ),
238
- 'description' => '',
239
- 'value' => in_array( 'AdditionalInsurance', $default_args['services'] ) ? 'yes' : 'no',
240
- 'wrapper_class' => 'form-field-checkbox',
241
- 'custom_attributes' => wc_gzd_dhl_get_service_product_attributes( 'AdditionalInsurance' )
242
- ) ); ?>
243
 
244
- <?php if ( $dhl_order->supports_email_notification() ) : ?>
245
 
246
- <?php woocommerce_wp_checkbox( array(
247
- 'id' => 'dhl_label_service_ParcelOutletRouting',
248
- 'label' => _x( 'Retail outlet routing', 'dhl', 'woocommerce-germanized' ),
249
- 'description' => '',
250
- 'value' => in_array( 'ParcelOutletRouting', $default_args['services'] ) ? 'yes' : 'no',
251
- 'wrapper_class' => 'form-field-checkbox',
252
- 'custom_attributes' => wc_gzd_dhl_get_service_product_attributes( 'ParcelOutletRouting' )
253
- ) ); ?>
254
 
255
- <?php endif; ?>
256
 
257
- <?php if ( ! $dhl_order->has_preferred_neighbor() ) : ?>
258
 
259
- <?php woocommerce_wp_checkbox( array(
260
- 'id' => 'dhl_label_service_NoNeighbourDelivery',
261
- 'label' => _x( 'No neighbor', 'dhl', 'woocommerce-germanized' ),
262
- 'description' => '',
263
- 'value' => in_array( 'NoNeighbourDelivery', $default_args['services'] ) ? 'yes' : 'no',
264
- 'wrapper_class' => 'form-field-checkbox',
265
- 'custom_attributes' => wc_gzd_dhl_get_service_product_attributes( 'NoNeighbourDelivery' )
266
- ) ); ?>
267
 
268
- <?php endif; ?>
269
 
270
- <?php woocommerce_wp_checkbox( array(
271
- 'id' => 'dhl_label_service_NamedPersonOnly',
272
- 'label' => _x( 'Named person only', 'dhl', 'woocommerce-germanized' ),
273
- 'description' => '',
274
- 'value' => in_array( 'NamedPersonOnly', $default_args['services'] ) ? 'yes' : 'no',
275
- 'wrapper_class' => 'form-field-checkbox',
276
- 'custom_attributes' => wc_gzd_dhl_get_service_product_attributes( 'NamedPersonOnly' )
277
- ) ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
278
 
279
  <?php woocommerce_wp_checkbox( array(
280
- 'id' => 'dhl_label_service_BulkyGoods',
281
- 'label' => _x( 'Bulky goods', 'dhl', 'woocommerce-germanized' ),
282
  'description' => '',
283
- 'value' => in_array( 'BulkyGoods', $default_args['services'] ) ? 'yes' : 'no',
284
  'wrapper_class' => 'form-field-checkbox',
285
- 'custom_attributes' => wc_gzd_dhl_get_service_product_attributes( 'BulkyGoods' )
286
  ) ); ?>
287
 
288
  <?php woocommerce_wp_checkbox( array(
289
- 'id' => 'dhl_label_service_IdentCheck',
290
- 'label' => _x( 'Identity check', 'dhl', 'woocommerce-germanized' ),
291
  'description' => '',
292
- 'class' => 'checkbox show-if-trigger',
293
- 'value' => in_array( 'IdentCheck', $default_args['services'] ) ? 'yes' : 'no',
294
- 'custom_attributes' => array_merge( array( 'data-show-if' => '.show-if-ident-check' ), wc_gzd_dhl_get_service_product_attributes( 'IdentCheck' ) ),
295
  'wrapper_class' => 'form-field-checkbox',
 
296
  ) ); ?>
297
 
298
- <div class="show-if show-if-ident-check">
299
- <?php woocommerce_wp_text_input( array(
300
- 'id' => 'dhl_label_ident_date_of_birth',
301
- 'label' => _x( 'Date of Birth', 'dhl', 'woocommerce-germanized' ),
302
- 'placeholder' => '',
303
- 'description' => '',
304
- 'value' => isset( $default_args['ident_date_of_birth'] ) ? $default_args['ident_date_of_birth'] : '',
305
- 'custom_attributes' => array( 'pattern' => '[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])', 'maxlength' => 10 ),
306
- 'class' => 'short date-picker'
307
- ) ); ?>
308
-
309
- <?php woocommerce_wp_select( array(
310
- 'id' => 'dhl_label_ident_min_age',
311
- 'label' => _x( 'Minimum age', 'dhl', 'woocommerce-germanized' ),
312
- 'description' => '',
313
- 'value' => isset( $default_args['ident_min_age'] ) ? $default_args['ident_min_age'] : '',
314
- 'options' => wc_gzd_dhl_get_ident_min_ages(),
315
- ) ); ?>
316
- </div>
317
- </div>
318
- <?php elseif( Package::is_crossborder_shipment( $shipment->get_country ) ) : ?>
319
-
320
- <?php woocommerce_wp_checkbox( array(
321
- 'id' => 'dhl_label_service_Premium',
322
- 'label' => _x( 'Premium', 'dhl', 'woocommerce-germanized' ),
323
- 'description' => '',
324
- 'value' => in_array( 'Premium', $default_args['services'] ) ? 'yes' : 'no',
325
- 'wrapper_class' => 'form-field-checkbox',
326
- 'custom_attributes' => wc_gzd_dhl_get_service_product_attributes( 'Premium' )
327
- ) ); ?>
328
-
329
- <?php woocommerce_wp_checkbox( array(
330
- 'id' => 'dhl_label_service_GoGreen',
331
- 'label' => _x( 'GoGreen', 'dhl', 'woocommerce-germanized' ),
332
- 'description' => '',
333
- 'value' => in_array( 'GoGreen', $default_args['services'] ) ? 'yes' : 'no',
334
- 'wrapper_class' => 'form-field-checkbox',
335
- 'custom_attributes' => wc_gzd_dhl_get_service_product_attributes( 'GoGreen' )
336
- ) ); ?>
337
-
338
- <?php endif; ?>
339
 
340
  </form>
13
 
14
  <form action="" method="post" class="wc-gzd-create-shipment-label-form">
15
 
16
+ <?php woocommerce_wp_select( array(
17
+ 'id' => 'dhl_label_dhl_product',
18
+ 'label' => _x( 'DHL Product', 'dhl', 'woocommerce-germanized' ),
 
 
 
 
 
 
 
 
 
 
 
19
  'description' => '',
20
+ 'options' => wc_gzd_dhl_get_products( $shipment->get_country() ),
21
+ 'value' => isset( $default_args['dhl_product'] ) ? $default_args['dhl_product'] : '',
22
  ) ); ?>
23
 
24
+ <?php if ( $dhl_order->has_cod_payment() ) : ?>
25
+ <?php woocommerce_wp_text_input( array(
26
+ 'id' => 'dhl_label_cod_total',
27
+ 'class' => 'wc_input_decimal',
28
+ 'label' => _x( 'COD Amount', 'dhl', 'woocommerce-germanized' ),
29
+ 'placeholder' => '',
30
+ 'description' => '',
31
+ 'value' => isset( $default_args['cod_total'] ) ? $default_args['cod_total'] : '',
32
+ ) ); ?>
33
 
34
+ <input type="hidden" name="dhl_label_cod_includes_additional_total" value="<?php echo ( isset( $default_args['cod_includes_additional_total'] ) ? $default_args['cod_includes_additional_total'] : '' ); ?>" />
35
+ <?php endif; ?>
 
 
 
 
 
 
 
36
 
37
+ <?php if ( Package::is_crossborder_shipment( $shipment->get_country() ) ) : ?>
38
+ <?php woocommerce_wp_select( array(
39
+ 'id' => 'dhl_label_duties',
40
+ 'label' => _x( 'Duties', 'dhl', 'woocommerce-germanized' ),
41
+ 'description' => '',
42
+ 'value' => isset( $default_args['duties'] ) ? $default_args['duties'] : '',
43
+ 'options' => wc_gzd_dhl_get_duties(),
44
+ ) ); ?>
45
+ <?php endif; ?>
46
 
47
+ <?php if ( Package::base_country_supports( 'services' ) && Package::is_shipping_domestic( $shipment->get_country() ) ) :
 
48
 
49
+ $preferred_days = array();
50
+ $preferred_times = array();
51
 
52
+ try {
53
+ $preferred_day_options = Package::get_api()->get_preferred_available_days( $shipment->get_postcode() );
 
 
 
54
 
55
+ if ( $preferred_day_options ) {
56
+ $preferred_days = $preferred_day_options;
57
+ }
58
+ } catch( Exception $e ) {}
59
+ ?>
60
+
61
+ <div class="columns">
62
+ <div class="column <?php echo ( isset( $default_args['preferred_time'] ) ) ? 'col-6' : 'col-12'; ?>">
 
 
 
 
63
  <?php woocommerce_wp_select( array(
64
+ 'id' => 'dhl_label_preferred_day',
65
+ 'label' => _x( 'Preferred Day', 'dhl', 'woocommerce-germanized' ),
66
  'description' => '',
67
+ 'value' => isset( $default_args['preferred_day'] ) ? $default_args['preferred_day'] : '',
68
+ 'options' => wc_gzd_dhl_get_preferred_days_select_options( $preferred_days, ( isset( $default_args['preferred_day'] ) ? $default_args['preferred_day'] : '' ) ),
69
  ) ); ?>
70
+ </div>
71
+ <?php if ( isset( $default_args['preferred_time'] ) ) : ?>
72
+ <div class="column col-6">
73
+ <?php woocommerce_wp_select( array(
74
+ 'id' => 'dhl_label_preferred_time',
75
+ 'label' => _x( 'Preferred Time', 'dhl', 'woocommerce-germanized' ),
76
+ 'description' => '',
77
+ 'value' => $default_args['preferred_time'],
78
+ 'options' => wc_gzd_dhl_get_preferred_times_select_options( array( $default_args['preferred_time'] => $default_args['preferred_time'] ) ),
79
+ ) ); ?>
80
+ </div>
81
+ <?php endif; ?>
82
+ </div>
83
+
84
+ <?php if ( $dhl_order->has_preferred_location() ) : ?>
85
  <?php woocommerce_wp_text_input( array(
86
  'id' => 'dhl_label_preferred_location',
87
  'label' => _x( 'Preferred Location', 'dhl', 'woocommerce-germanized' ),
92
  ) ); ?>
93
  <?php endif; ?>
94
 
95
+ <?php if ( $dhl_order->has_preferred_neighbor() ) : ?>
96
  <?php woocommerce_wp_text_input( array(
97
  'id' => 'dhl_label_preferred_neighbor',
98
  'label' => _x( 'Preferred Neighbor', 'dhl', 'woocommerce-germanized' ),
103
  ) ); ?>
104
  <?php endif; ?>
105
 
106
+ <?php woocommerce_wp_checkbox( array(
107
  'id' => 'dhl_label_has_inlay_return',
108
  'label' => _x( 'Create inlay return label', 'dhl', 'woocommerce-germanized' ),
109
  'class' => 'checkbox show-if-trigger',
113
  'wrapper_class' => 'form-field-checkbox'
114
  ) ); ?>
115
 
116
+ <div class="show-if show-if-has-return">
117
+ <div class="columns">
118
+ <div class="column col-12">
119
+ <?php woocommerce_wp_text_input( array(
120
+ 'id' => 'dhl_label_return_address[name]',
121
+ 'label' => _x( 'Name', 'dhl', 'woocommerce-germanized' ),
122
+ 'placeholder' => '',
123
+ 'description' => '',
124
+ 'value' => isset( $default_args['return_address']['name'] ) ? $default_args['return_address']['name'] : '',
125
+ ) ); ?>
126
+ </div>
127
+ </div>
128
+ <?php woocommerce_wp_text_input( array(
129
+ 'id' => 'dhl_label_return_address[company]',
130
+ 'label' => _x( 'Company', 'dhl', 'woocommerce-germanized' ),
131
+ 'placeholder' => '',
132
+ 'description' => '',
133
+ 'value' => isset( $default_args['return_address']['company'] ) ? $default_args['return_address']['company'] : '',
134
+ ) ); ?>
135
+ <div class="columns">
136
+ <div class="column col-9">
137
+ <?php woocommerce_wp_text_input( array(
138
+ 'id' => 'dhl_label_return_address[street]',
139
+ 'label' => _x( 'Street', 'dhl', 'woocommerce-germanized' ),
140
+ 'placeholder' => '',
141
+ 'description' => '',
142
+ 'value' => isset( $default_args['return_address']['street'] ) ? $default_args['return_address']['street'] : '',
143
+ ) ); ?>
144
+ </div>
145
+ <div class="column col-3">
146
+ <?php woocommerce_wp_text_input( array(
147
+ 'id' => 'dhl_label_return_address[street_number]',
148
+ 'label' => _x( 'Street No', 'dhl', 'woocommerce-germanized' ),
149
+ 'placeholder' => '',
150
+ 'description' => '',
151
+ 'value' => isset( $default_args['return_address']['street_number'] ) ? $default_args['return_address']['street_number'] : '',
152
+ ) ); ?>
153
+ </div>
154
+ </div>
155
+ <div class="columns">
156
+ <div class="column col-6">
157
+ <?php woocommerce_wp_text_input( array(
158
+ 'id' => 'dhl_label_return_address[postcode]',
159
+ 'label' => _x( 'Postcode', 'dhl', 'woocommerce-germanized' ),
160
+ 'placeholder' => '',
161
+ 'description' => '',
162
+ 'value' => isset( $default_args['return_address']['postcode'] ) ? $default_args['return_address']['postcode'] : '',
163
+ ) ); ?>
164
+ </div>
165
+ <div class="column col-6">
166
+ <?php woocommerce_wp_text_input( array(
167
+ 'id' => 'dhl_label_return_address[city]',
168
+ 'label' => _x( 'City', 'dhl', 'woocommerce-germanized' ),
169
+ 'placeholder' => '',
170
+ 'description' => '',
171
+ 'value' => isset( $default_args['return_address']['city'] ) ? $default_args['return_address']['city'] : '',
172
+ ) ); ?>
173
+ </div>
174
+ </div>
175
+ <div class="columns">
176
+ <div class="column col-6">
177
+ <?php woocommerce_wp_text_input( array(
178
+ 'id' => 'dhl_label_return_address[phone]',
179
+ 'label' => _x( 'Phone', 'dhl', 'woocommerce-germanized' ),
180
+ 'placeholder' => '',
181
+ 'description' => '',
182
+ 'value' => isset( $default_args['return_address']['phone'] ) ? $default_args['return_address']['phone'] : '',
183
+ ) ); ?>
184
+ </div>
185
+ <div class="column col-6">
186
+ <?php woocommerce_wp_text_input( array(
187
+ 'id' => 'dhl_label_return_address[email]',
188
+ 'label' => _x( 'Email', 'dhl', 'woocommerce-germanized' ),
189
+ 'placeholder' => '',
190
+ 'description' => '',
191
+ 'value' => isset( $default_args['return_address']['email'] ) ? $default_args['return_address']['email'] : '',
192
+ ) ); ?>
193
+ </div>
194
+ </div>
195
+ </div>
196
 
197
+ <?php woocommerce_wp_checkbox( array(
198
  'id' => 'dhl_label_codeable_address_only',
199
  'label' => _x( 'Valid address only', 'dhl', 'woocommerce-germanized' ),
200
  'placeholder' => '',
203
  'wrapper_class' => 'form-field-checkbox'
204
  ) ); ?>
205
 
206
+ <p class="show-services-trigger">
207
+ <a href="#" class="show-further-services <?php echo ( ! empty( $default_args['services'] ) ? 'hide-default' : '' ); ?>">
208
+ <span class="dashicons dashicons-plus"></span> <?php _ex( 'More services', 'dhl', 'woocommerce-germanized' ); ?>
209
+ </a>
210
+ <a class="show-fewer-services <?php echo ( empty( $default_args['services'] ) ? 'hide-default' : '' ); ?>" href="#">
211
+ <span class="dashicons dashicons-minus"></span> <?php _ex( 'Fewer services', 'dhl', 'woocommerce-germanized' ); ?>
212
+ </a>
213
+ </p>
214
 
215
+ <div class="<?php echo ( empty( $default_args['services'] ) ? 'hide-default' : '' ); ?> show-if-further-services">
216
 
217
+ <?php woocommerce_wp_select( array(
218
+ 'id' => 'dhl_label_visual_min_age',
219
+ 'label' => _x( 'Age check', 'dhl', 'woocommerce-germanized' ),
220
+ 'description' => '',
221
+ 'value' => isset( $default_args['visual_min_age'] ) ? $default_args['visual_min_age'] : '',
222
+ 'options' => wc_gzd_dhl_get_visual_min_ages(),
223
+ 'custom_attributes' => wc_gzd_dhl_get_service_product_attributes( 'VisualCheckOfAge' )
224
+ ) ); ?>
225
 
226
+ <?php woocommerce_wp_checkbox( array(
227
+ 'id' => 'dhl_label_service_GoGreen',
228
+ 'label' => _x( 'GoGreen', 'dhl', 'woocommerce-germanized' ),
229
+ 'description' => '',
230
+ 'value' => in_array( 'GoGreen', $default_args['services'] ) ? 'yes' : 'no',
231
+ 'wrapper_class' => 'form-field-checkbox',
232
+ 'custom_attributes' => wc_gzd_dhl_get_service_product_attributes( 'GoGreen' )
233
+ ) ); ?>
234
 
235
+ <?php woocommerce_wp_checkbox( array(
236
+ 'id' => 'dhl_label_service_AdditionalInsurance',
237
+ 'label' => _x( 'Additional insurance', 'dhl', 'woocommerce-germanized' ),
238
+ 'description' => '',
239
+ 'value' => in_array( 'AdditionalInsurance', $default_args['services'] ) ? 'yes' : 'no',
240
+ 'wrapper_class' => 'form-field-checkbox',
241
+ 'custom_attributes' => wc_gzd_dhl_get_service_product_attributes( 'AdditionalInsurance' )
242
+ ) ); ?>
243
 
244
+ <?php if ( $dhl_order->supports_email_notification() ) : ?>
245
 
246
+ <?php woocommerce_wp_checkbox( array(
247
+ 'id' => 'dhl_label_service_ParcelOutletRouting',
248
+ 'label' => _x( 'Retail outlet routing', 'dhl', 'woocommerce-germanized' ),
249
+ 'description' => '',
250
+ 'value' => in_array( 'ParcelOutletRouting', $default_args['services'] ) ? 'yes' : 'no',
251
+ 'wrapper_class' => 'form-field-checkbox',
252
+ 'custom_attributes' => wc_gzd_dhl_get_service_product_attributes( 'ParcelOutletRouting' )
253
+ ) ); ?>
254
 
255
+ <?php endif; ?>
256
 
257
+ <?php if ( ! $dhl_order->has_preferred_neighbor() ) : ?>
258
 
259
+ <?php woocommerce_wp_checkbox( array(
260
+ 'id' => 'dhl_label_service_NoNeighbourDelivery',
261
+ 'label' => _x( 'No neighbor', 'dhl', 'woocommerce-germanized' ),
262
+ 'description' => '',
263
+ 'value' => in_array( 'NoNeighbourDelivery', $default_args['services'] ) ? 'yes' : 'no',
264
+ 'wrapper_class' => 'form-field-checkbox',
265
+ 'custom_attributes' => wc_gzd_dhl_get_service_product_attributes( 'NoNeighbourDelivery' )
266
+ ) ); ?>
267
 
268
+ <?php endif; ?>
269
 
270
+ <?php woocommerce_wp_checkbox( array(
271
+ 'id' => 'dhl_label_service_NamedPersonOnly',
272
+ 'label' => _x( 'Named person only', 'dhl', 'woocommerce-germanized' ),
273
+ 'description' => '',
274
+ 'value' => in_array( 'NamedPersonOnly', $default_args['services'] ) ? 'yes' : 'no',
275
+ 'wrapper_class' => 'form-field-checkbox',
276
+ 'custom_attributes' => wc_gzd_dhl_get_service_product_attributes( 'NamedPersonOnly' )
277
+ ) ); ?>
278
+
279
+ <?php woocommerce_wp_checkbox( array(
280
+ 'id' => 'dhl_label_service_BulkyGoods',
281
+ 'label' => _x( 'Bulky goods', 'dhl', 'woocommerce-germanized' ),
282
+ 'description' => '',
283
+ 'value' => in_array( 'BulkyGoods', $default_args['services'] ) ? 'yes' : 'no',
284
+ 'wrapper_class' => 'form-field-checkbox',
285
+ 'custom_attributes' => wc_gzd_dhl_get_service_product_attributes( 'BulkyGoods' )
286
+ ) ); ?>
287
+
288
+ <?php woocommerce_wp_checkbox( array(
289
+ 'id' => 'dhl_label_service_IdentCheck',
290
+ 'label' => _x( 'Identity check', 'dhl', 'woocommerce-germanized' ),
291
+ 'description' => '',
292
+ 'class' => 'checkbox show-if-trigger',
293
+ 'value' => in_array( 'IdentCheck', $default_args['services'] ) ? 'yes' : 'no',
294
+ 'custom_attributes' => array_merge( array( 'data-show-if' => '.show-if-ident-check' ), wc_gzd_dhl_get_service_product_attributes( 'IdentCheck' ) ),
295
+ 'wrapper_class' => 'form-field-checkbox',
296
+ ) ); ?>
297
+
298
+ <div class="show-if show-if-ident-check">
299
+ <?php woocommerce_wp_text_input( array(
300
+ 'id' => 'dhl_label_ident_date_of_birth',
301
+ 'label' => _x( 'Date of Birth', 'dhl', 'woocommerce-germanized' ),
302
+ 'placeholder' => '',
303
+ 'description' => '',
304
+ 'value' => isset( $default_args['ident_date_of_birth'] ) ? $default_args['ident_date_of_birth'] : '',
305
+ 'custom_attributes' => array( 'pattern' => '[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])', 'maxlength' => 10 ),
306
+ 'class' => 'short date-picker'
307
+ ) ); ?>
308
+
309
+ <?php woocommerce_wp_select( array(
310
+ 'id' => 'dhl_label_ident_min_age',
311
+ 'label' => _x( 'Minimum age', 'dhl', 'woocommerce-germanized' ),
312
+ 'description' => '',
313
+ 'value' => isset( $default_args['ident_min_age'] ) ? $default_args['ident_min_age'] : '',
314
+ 'options' => wc_gzd_dhl_get_ident_min_ages(),
315
+ ) ); ?>
316
+ </div>
317
+ </div>
318
+ <?php elseif( Package::is_crossborder_shipment( $shipment->get_country ) ) : ?>
319
 
320
  <?php woocommerce_wp_checkbox( array(
321
+ 'id' => 'dhl_label_service_Premium',
322
+ 'label' => _x( 'Premium', 'dhl', 'woocommerce-germanized' ),
323
  'description' => '',
324
+ 'value' => in_array( 'Premium', $default_args['services'] ) ? 'yes' : 'no',
325
  'wrapper_class' => 'form-field-checkbox',
326
+ 'custom_attributes' => wc_gzd_dhl_get_service_product_attributes( 'Premium' )
327
  ) ); ?>
328
 
329
  <?php woocommerce_wp_checkbox( array(
330
+ 'id' => 'dhl_label_service_GoGreen',
331
+ 'label' => _x( 'GoGreen', 'dhl', 'woocommerce-germanized' ),
332
  'description' => '',
333
+ 'value' => in_array( 'GoGreen', $default_args['services'] ) ? 'yes' : 'no',
 
 
334
  'wrapper_class' => 'form-field-checkbox',
335
+ 'custom_attributes' => wc_gzd_dhl_get_service_product_attributes( 'GoGreen' )
336
  ) ); ?>
337
 
338
+ <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
339
 
340
  </form>
packages/woocommerce-germanized-dhl/includes/admin/views/settings-shipping-method.php CHANGED
@@ -38,7 +38,7 @@ if ( Package::base_country_supports( 'services' ) ) {
38
 
39
  $settings = array_merge( $settings, array(
40
  'dhl_label_auto_title' => array(
41
- 'title' => _x( 'DHL Label Automation', 'dhl', 'woocommerce-germanized' ),
42
  'type' => 'title',
43
  'default' => '',
44
  'description' => sprintf( _x( 'Adjust label automation settings. Changes override <a href="%s">global settings</a>.', 'dhl', 'woocommerce-germanized' ), admin_url( 'admin.php?page=wc-settings&tab=germanized-dhl&section=labels' ) ),
@@ -73,4 +73,45 @@ if ( ParcelLocator::is_enabled() ) {
73
  $settings = array_merge( $settings, $service_settings );
74
  }
75
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  return $settings;
38
 
39
  $settings = array_merge( $settings, array(
40
  'dhl_label_auto_title' => array(
41
+ 'title' => _x( 'Label Automation', 'dhl', 'woocommerce-germanized' ),
42
  'type' => 'title',
43
  'default' => '',
44
  'description' => sprintf( _x( 'Adjust label automation settings. Changes override <a href="%s">global settings</a>.', 'dhl', 'woocommerce-germanized' ), admin_url( 'admin.php?page=wc-settings&tab=germanized-dhl&section=labels' ) ),
73
  $settings = array_merge( $settings, $service_settings );
74
  }
75
 
76
+ /**
77
+ * Deutsche Post
78
+ */
79
+ $settings = array_merge( $settings, array(
80
+ 'deutsche_post_label_title' => array(
81
+ 'title' => _x( 'Deutsche Post Labels', 'dhl', 'woocommerce-germanized' ),
82
+ 'type' => 'title',
83
+ 'default' => '',
84
+ 'description' => sprintf( _x( 'Adjust Deutsche Post label settings. Changes override <a href="%s">global settings</a>.', 'dhl', 'woocommerce-germanized' ), admin_url( 'admin.php?page=wc-settings&tab=germanized-dhl&section=internetmarke' ) ),
85
+ ),
86
+ ) );
87
+
88
+ if ( Package::is_internetmarke_enabled() ) {
89
+ $label_settings = Settings::get_internetmarke_default_settings( true );
90
+ $settings = array_merge( $settings, $label_settings );
91
+
92
+ $settings = array_merge( $settings, array(
93
+ 'deutsche_post_label_print_title' => array(
94
+ 'title' => _x( 'Printing', 'dhl', 'woocommerce-germanized' ),
95
+ 'type' => 'title',
96
+ 'default' => '',
97
+ 'description' => sprintf( _x( 'Adjust label printing settings. Changes override <a href="%s">global settings</a>.', 'dhl', 'woocommerce-germanized' ), admin_url( 'admin.php?page=wc-settings&tab=germanized-dhl&section=internetmarke' ) ),
98
+ ),
99
+ ) );
100
+
101
+ $label_settings = Settings::get_internetmarke_printing_settings( true );
102
+ $settings = array_merge( $settings, $label_settings );
103
+
104
+ $settings = array_merge( $settings, array(
105
+ 'deutsche_post_label_auto_title' => array(
106
+ 'title' => _x( 'Label Automation', 'dhl', 'woocommerce-germanized' ),
107
+ 'type' => 'title',
108
+ 'default' => '',
109
+ 'description' => sprintf( _x( 'Adjust label automation settings. Changes override <a href="%s">global settings</a>.', 'dhl', 'woocommerce-germanized' ), admin_url( 'admin.php?page=wc-settings&tab=germanized-dhl&section=internetmarke' ) ),
110
+ ),
111
+ ) );
112
+
113
+ $label_settings = Settings::get_internetmarke_automation_settings( true );
114
+ $settings = array_merge( $settings, $label_settings );
115
+ }
116
+
117
  return $settings;
packages/woocommerce-germanized-dhl/includes/wc-gzd-dhl-core-functions.php CHANGED
@@ -27,6 +27,131 @@ use Vendidero\Germanized\Shipments\ShipmentFactory;
27
 
28
  defined( 'ABSPATH' ) || exit;
29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  function wc_gzd_dhl_format_preferred_api_time( $time ) {
31
  return str_replace( array( ':', '-' ), '', $time );
32
  }
@@ -86,6 +211,16 @@ function wc_gzd_dhl_is_valid_visual_min_age( $min_age ) {
86
  return true;
87
  }
88
 
 
 
 
 
 
 
 
 
 
 
89
  function wc_gzd_dhl_get_visual_min_ages() {
90
  $visual_age = array(
91
  '0' => _x( 'None', 'age context', 'woocommerce-germanized' ),
@@ -207,7 +342,13 @@ function wc_gzd_dhl_get_services() {
207
  function wc_gzd_dhl_get_shipping_method( $instance_id ) {
208
  $method = wc_gzd_get_shipping_provider_method( $instance_id );
209
 
210
- return new ShippingProviderMethodDHL( $method );
 
 
 
 
 
 
211
  }
212
 
213
  function wc_gzd_dhl_get_preferred_services() {
@@ -317,6 +458,76 @@ function wc_gzd_dhl_validate_return_label_args( $shipment, $args = array() ) {
317
  return $args;
318
  }
319
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
320
  function wc_gzd_dhl_validate_label_args( $shipment, $args = array() ) {
321
 
322
  $args = wp_parse_args( $args, array(
@@ -440,7 +651,7 @@ function wc_gzd_dhl_validate_label_args( $shipment, $args = array() ) {
440
 
441
  if ( wc_gzd_dhl_product_supports_service( $args['dhl_product'], 'VisualCheckOfAge' ) ) {
442
  if ( ! empty( $args['visual_min_age'] ) && wc_gzd_dhl_is_valid_visual_min_age( $args['visual_min_age'] ) ) {
443
- $args['services'] = array_merge( $args['services'], array( 'VisualCheckOfAge' ) );
444
  } else {
445
  if ( ! empty( $args['visual_min_age'] ) && ! wc_gzd_dhl_is_valid_visual_min_age( $args['visual_min_age'] ) ) {
446
  $error->add( 500, _x( 'The visual min age check is invalid.', 'dhl', 'woocommerce-germanized' ) );
@@ -460,21 +671,27 @@ function wc_gzd_dhl_validate_label_args( $shipment, $args = array() ) {
460
  }
461
  }
462
 
463
- if ( in_array( 'IdentCheck', $args['services'] ) ) {
464
- if ( ! empty( $args['ident_min_age'] ) && ! array_key_exists( $args['ident_min_age'], wc_gzd_dhl_get_ident_min_ages() ) ) {
465
- $error->add( 500, _x( 'The ident min age check is invalid.', 'dhl', 'woocommerce-germanized' ) );
466
-
467
- $args['ident_min_age'] = '';
468
  }
469
 
470
- if ( ! empty( $args['ident_date_of_birth'] ) ) {
471
- if ( ! wc_gzd_dhl_is_valid_datetime( $args['ident_date_of_birth'], 'Y-m-d' ) ) {
472
- $error->add( 500, _x( 'There was an error parsing the date of birth for the identity check.', 'dhl', 'woocommerce-germanized' ) );
 
 
 
 
 
 
 
 
473
  }
474
- }
475
 
476
- if ( empty( $args['ident_date_of_birth'] ) && empty( $args['ident_min_age'] ) ) {
477
- $error->add( 500, _x( 'Either a minimum age or a date of birth must be added to the ident check.', 'dhl', 'woocommerce-germanized' ) );
 
478
  }
479
  } else {
480
  $args['ident_min_age'] = '';
@@ -551,7 +768,7 @@ function wc_gzd_dhl_shipment_needs_label( $shipment, $check_status = true ) {
551
  $shipment = wc_gzd_get_shipment( $shipment );
552
  }
553
 
554
- if ( $shipment && 'dhl' !== $shipment->get_shipping_provider() ) {
555
  $needs_label = false;
556
  }
557
 
@@ -713,6 +930,116 @@ function wc_gzd_dhl_get_service_product_attributes( $service ) {
713
  );
714
  }
715
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
716
  /**
717
  * @param Order $dhl_order
718
  * @param Shipment $shipment
@@ -721,7 +1048,6 @@ function wc_gzd_dhl_get_label_default_args( $dhl_order, $shipment ) {
721
 
722
  $shipping_method = $shipment->get_shipping_method();
723
  $dhl_shipping_method = wc_gzd_dhl_get_shipping_method( $shipping_method );
724
- $shipment_weight = $shipment->get_weight();
725
 
726
  $defaults = array(
727
  'dhl_product' => wc_gzd_dhl_get_default_product( $shipment->get_country(), $dhl_shipping_method ),
@@ -800,6 +1126,25 @@ function wc_gzd_dhl_get_label_default_args( $dhl_order, $shipment ) {
800
  }
801
  }
802
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
803
  foreach( wc_gzd_dhl_get_services() as $service ) {
804
 
805
  if ( ! wc_gzd_dhl_product_supports_service( $defaults['dhl_product'], $service ) ) {
@@ -807,7 +1152,7 @@ function wc_gzd_dhl_get_label_default_args( $dhl_order, $shipment ) {
807
  }
808
 
809
  // Combination is not available
810
- if ( ! empty( $defaults['visual_min_age'] ) && 'NamedPersonOnly' === $service ) {
811
  continue;
812
  }
813
 
@@ -839,7 +1184,7 @@ function wc_gzd_dhl_get_label_default_args( $dhl_order, $shipment ) {
839
  }
840
  }
841
 
842
- if( ! Package::is_shipping_domestic( $shipment->get_country() ) ) {
843
 
844
  foreach( wc_gzd_dhl_get_international_services() as $service ) {
845
 
@@ -906,7 +1251,7 @@ function wc_gzd_dhl_get_custom_label_format( $label, $type = '' ) {
906
  */
907
  function wc_gzd_dhl_get_shipment_weight( $shipment, $unit = 'kg' ) {
908
  $shipping_method = $shipment->get_shipping_method();
909
- $shipment_weight = $shipment->get_weight();
910
  $dhl_shipping_method = wc_gzd_dhl_get_shipping_method( $shipping_method );
911
  $min_weight = wc_get_weight( Package::get_setting( 'label_minimum_shipment_weight', $dhl_shipping_method ), $unit, 'kg' );
912
  $weight = empty( $shipment_weight ) ? wc_get_weight( Package::get_setting( 'label_default_shipment_weight', $dhl_shipping_method ), $unit, 'kg' ) : wc_get_weight( $shipment_weight, $unit, $shipment->get_weight_unit() );
@@ -960,12 +1305,21 @@ function wc_gzd_dhl_create_label( $shipment, $args = array() ) {
960
 
961
  $dhl_order = wc_gzd_dhl_get_order( $order );
962
  $shipment_type = $shipment->get_type();
 
963
  $label_type = 'return' === $shipment_type ? 'return' : 'simple';
 
 
 
 
 
964
  $hook_suffix = 'simple' === $label_type ? '' : $label_type . '_';
965
 
966
  if ( 'return' === $label_type ) {
967
  $args = wp_parse_args( $args, wc_gzd_dhl_get_return_label_default_args( $dhl_order, $shipment ) );
968
  $args = wc_gzd_dhl_validate_return_label_args( $shipment, $args );
 
 
 
969
  } else {
970
  $args = wp_parse_args( $args, wc_gzd_dhl_get_label_default_args( $dhl_order, $shipment ) );
971
  $args = wc_gzd_dhl_validate_label_args( $shipment, $args );
@@ -1202,6 +1556,12 @@ function wc_gzd_dhl_get_return_products_domestic() {
1202
  return $retoure;
1203
  }
1204
 
 
 
 
 
 
 
1205
  function wc_gzd_dhl_get_products_international() {
1206
 
1207
  $country = Package::get_base_country();
@@ -1270,15 +1630,24 @@ function wc_gzd_dhl_get_default_product( $country, $method = false ) {
1270
  }
1271
  }
1272
 
1273
- function wc_gzd_dhl_get_products_domestic() {
 
 
 
 
 
 
 
 
1274
 
 
1275
  $country = Package::get_base_country();
1276
 
1277
  $germany_dom = array(
1278
  'V01PAK' => _x( 'DHL Paket', 'dhl', 'woocommerce-germanized' ),
1279
  'V01PRIO' => _x( 'DHL Paket PRIO', 'dhl', 'woocommerce-germanized' ),
1280
  'V06PAK' => _x( 'DHL Paket Taggleich', 'dhl', 'woocommerce-germanized' ),
1281
- 'V62WP' => _x( 'Warenpost', 'dhl', 'woocommerce-germanized' )
1282
  );
1283
 
1284
  $dhl_prod_dom = array();
@@ -1390,6 +1759,12 @@ function wc_gzd_dhl_get_label_type_data( $type = false ) {
1390
  'return' => array(
1391
  'class_name' => '\Vendidero\Germanized\DHL\ReturnLabel'
1392
  ),
 
 
 
 
 
 
1393
  );
1394
 
1395
  if ( $type && array_key_exists( $type, $types ) ) {
27
 
28
  defined( 'ABSPATH' ) || exit;
29
 
30
+ /**
31
+ * @param Label $label
32
+ *
33
+ * @return array|false
34
+ */
35
+ function wc_gzd_dhl_get_shipment_customs_data( $label ) {
36
+
37
+ if ( ! $shipment = $label->get_shipment() ) {
38
+ return false;
39
+ }
40
+
41
+ $customsDetails = array();
42
+ $item_description = '';
43
+ $total_weight = $label->get_weight();
44
+ $item_weights = array();
45
+
46
+ foreach ( $shipment->get_items() as $key => $item ) {
47
+ $per_item_weight = wc_format_decimal( floatval( wc_get_weight( $item->get_weight(), 'kg', $shipment->get_weight_unit() ) ), 2 );
48
+
49
+ /**
50
+ * Set min weight to 0.01 to prevent missing weight error messages
51
+ * for really small product weights.
52
+ */
53
+ if ( $per_item_weight <= 0 ) {
54
+ $per_item_weight = '0.01';
55
+ }
56
+
57
+ $item_weights[ $key ] = $per_item_weight;
58
+ }
59
+
60
+ $item_total_weight = wc_format_decimal( array_sum( $item_weights ), 2 );
61
+ $item_count = sizeof( $item_weights );
62
+
63
+ /**
64
+ * Discrepancies detected between item weights an total shipment weight.
65
+ * Try to distribute the mismatch between items.
66
+ */
67
+ if ( $item_total_weight != $total_weight ) {
68
+ $diff = wc_format_decimal( $total_weight - $item_total_weight, 2 );
69
+ $diff_abs = abs( $diff );
70
+
71
+ if ( $diff_abs > 0 ) {
72
+ $per_item_diff = $diff / $item_count;
73
+ $per_item_diff_rounded = wc_format_decimal( $per_item_diff, 2 );
74
+ $diff_applied = 0;
75
+
76
+ if ( abs( $per_item_diff_rounded ) > 0 ) {
77
+ foreach( $item_weights as $key => $weight ) {
78
+ $item_weight_before = $item_weights[ $key ];
79
+ $new_item_weight = $item_weights[ $key ] += $per_item_diff_rounded;
80
+ $item_diff_applied = $per_item_diff;
81
+
82
+ /**
83
+ * In case the diff is negative make sure we are not
84
+ * subtracting more than available as min weight per item.
85
+ */
86
+ if ( $new_item_weight <= 0.01 ) {
87
+ $new_item_weight = 0.01;
88
+ $item_diff_applied = 0.01 - $item_weight_before;
89
+ }
90
+
91
+ $item_weights[ $key ] = $new_item_weight;
92
+ $diff_applied += $item_diff_applied;
93
+ }
94
+ }
95
+
96
+ $diff_left = wc_format_decimal( ( ( $per_item_diff_rounded * $item_count ) - $diff_applied ), 2 );
97
+
98
+ if ( abs( $diff_left ) > 0 ) {
99
+ foreach( $item_weights as $key => $weight ) {
100
+ if ( $diff_left > 0 ) {
101
+ /**
102
+ * Add the diff left to the first item and stop.
103
+ */
104
+ $item_weights[ $key ] += $diff_left;
105
+ break;
106
+ } else {
107
+ /**
108
+ * Remove the diff left from the first item with a weight greater than 0.01 to prevent 0 weights.
109
+ */
110
+ if ( $weight > 0.01 ) {
111
+ $item_weights[ $key ] += $diff_left;
112
+ break;
113
+ }
114
+ }
115
+ }
116
+ }
117
+ }
118
+ }
119
+
120
+ foreach ( $shipment->get_items() as $key => $item ) {
121
+
122
+ $item_description .= ! empty( $item_description ) ? ', ' : '';
123
+ $item_description .= $item->get_name();
124
+
125
+ $product_total = floatval( ( $item->get_total() / $item->get_quantity() ) );
126
+ $dhl_product = false;
127
+
128
+ if ( $product = $item->get_product() ) {
129
+ $dhl_product = wc_gzd_dhl_get_product( $product );
130
+ }
131
+
132
+ $json_item = array(
133
+ 'description' => substr( $item->get_name(), 0, 255 ),
134
+ 'countryCodeOrigin' => ( $dhl_product && $dhl_product->get_manufacture_country() ) ? $dhl_product->get_manufacture_country() : Package::get_base_country(),
135
+ 'customsTariffNumber' => $dhl_product ? $dhl_product->get_hs_code() : '',
136
+ 'amount' => intval( $item->get_quantity() ),
137
+ 'netWeightInKG' => wc_format_decimal( $item_weights[ $key ], 2 ),
138
+ 'customsValue' => wc_format_decimal( $product_total, 2 )
139
+ );
140
+
141
+ array_push($customsDetails, $json_item );
142
+ }
143
+
144
+ $item_description = substr( $item_description, 0, 255 );
145
+
146
+ return array(
147
+ 'invoiceNumber' => $shipment->get_id(),
148
+ 'additionalFee' => wc_format_decimal( $shipment->get_additional_total(), 2 ),
149
+ 'exportTypeDescription' => $item_description,
150
+ 'placeOfCommital' => $shipment->get_country(),
151
+ 'ExportDocPosition' => $customsDetails
152
+ );
153
+ }
154
+
155
  function wc_gzd_dhl_format_preferred_api_time( $time ) {
156
  return str_replace( array( ':', '-' ), '', $time );
157
  }
211
  return true;
212
  }
213
 
214
+ function wc_gzd_dhl_is_valid_ident_min_age( $min_age ) {
215
+ $ages = wc_gzd_dhl_get_ident_min_ages();
216
+
217
+ if ( empty( $min_age ) || ( ! array_key_exists( $min_age, $ages ) && ! in_array( $min_age, $ages ) ) ) {
218
+ return false;
219
+ }
220
+
221
+ return true;
222
+ }
223
+
224
  function wc_gzd_dhl_get_visual_min_ages() {
225
  $visual_age = array(
226
  '0' => _x( 'None', 'age context', 'woocommerce-germanized' ),
342
  function wc_gzd_dhl_get_shipping_method( $instance_id ) {
343
  $method = wc_gzd_get_shipping_provider_method( $instance_id );
344
 
345
+ return new \Vendidero\Germanized\DHL\ShippingProvider\MethodDHL( $method );
346
+ }
347
+
348
+ function wc_gzd_dhl_get_deutsche_post_shipping_method( $instance_id ) {
349
+ $method = wc_gzd_get_shipping_provider_method( $instance_id );
350
+
351
+ return new \Vendidero\Germanized\DHL\ShippingProvider\MethodDeutschePost( $method );
352
  }
353
 
354
  function wc_gzd_dhl_get_preferred_services() {
458
  return $args;
459
  }
460
 
461
+ function wc_gzd_dhl_validate_deutsche_post_label_args( $shipment, $args = array() ) {
462
+ $args = wp_parse_args( $args, array(
463
+ 'page_format' => '',
464
+ 'dhl_product' => ''
465
+ ) );
466
+
467
+ $error = new WP_Error();
468
+
469
+ if ( ! $shipment_order = $shipment->get_order() ) {
470
+ $error->add( 500, sprintf( _x( 'Shipment order #%s does not exist', 'dhl', 'woocommerce-germanized' ), $shipment->get_order_id() ) );
471
+ }
472
+
473
+ if ( ! empty( $args['additional_services'] ) ) {
474
+ /**
475
+ * Additional services are requested. Lets check whether the actual product exists and
476
+ * refresh the product code (to the child product code).
477
+ */
478
+ $im_product_code = Package::get_internetmarke_api()->get_product_code( $args['dhl_product'], $args['additional_services'] );
479
+
480
+ if ( false === $im_product_code ) {
481
+ $error->add( 500, _x( 'The services chosen are not available for the current product.', 'dhl', 'woocommerce-germanized' ) );
482
+ } else {
483
+ $args['dhl_product'] = $im_product_code;
484
+ }
485
+ }
486
+
487
+ $available_products = wc_gzd_dhl_get_deutsche_post_products( $shipment, false );
488
+
489
+ /**
490
+ * Check whether the product might not be available for the current shipment
491
+ */
492
+ if ( ! array_key_exists( $args['dhl_product'], $available_products ) ) {
493
+ if ( empty( $available_products ) ) {
494
+ $error->add( 500, sprintf( __( 'Sorry but none of your selected <a href="%s">Deutsche Post Products</a> is available for this shipment. Please verify your shipment data (e.g. weight) and try again.', 'dhl', 'woocommerce-germanized' ), admin_url( \Vendidero\Germanized\DHL\Admin\Settings::get_settings_url( 'internetmarke' ) ) ) );
495
+ } else {
496
+ /**
497
+ * In case the chosen product is not available - use the first product available instead
498
+ * to prevent errors during automation (connected with the default product option which might not fit).
499
+ */
500
+ reset( $available_products );
501
+ $im_product_code = Package::get_internetmarke_api()->get_product_parent_code( key( $available_products ) );
502
+
503
+ if ( ! empty( $args['additional_services'] ) ) {
504
+ $im_product_code_additional = Package::get_internetmarke_api()->get_product_code( $im_product_code, $args['additional_services'] );
505
+
506
+ if ( false !== $im_product_code_additional ) {
507
+ $im_product_code = $im_product_code_additional;
508
+ }
509
+ }
510
+
511
+ $args['dhl_product'] = $im_product_code;
512
+ }
513
+ }
514
+
515
+ /**
516
+ * Refresh stamp total based on actual product.
517
+ */
518
+ if ( ! empty( $args['dhl_product'] ) ) {
519
+ $args['stamp_total'] = Package::get_internetmarke_api()->get_product_total( $args['dhl_product'] );
520
+ } else {
521
+ $error->add( 500, sprintf( _x( 'Deutsche Post product is missing for %s.', 'dhl', 'woocommerce-germanized' ), $shipment->get_id() ) );
522
+ }
523
+
524
+ if ( wc_gzd_dhl_wp_error_has_errors( $error ) ) {
525
+ return $error;
526
+ }
527
+
528
+ return $args;
529
+ }
530
+
531
  function wc_gzd_dhl_validate_label_args( $shipment, $args = array() ) {
532
 
533
  $args = wp_parse_args( $args, array(
651
 
652
  if ( wc_gzd_dhl_product_supports_service( $args['dhl_product'], 'VisualCheckOfAge' ) ) {
653
  if ( ! empty( $args['visual_min_age'] ) && wc_gzd_dhl_is_valid_visual_min_age( $args['visual_min_age'] ) ) {
654
+ $args['services'] = array_merge( $args['services'], array( 'VisualCheckOfAge' ) );
655
  } else {
656
  if ( ! empty( $args['visual_min_age'] ) && ! wc_gzd_dhl_is_valid_visual_min_age( $args['visual_min_age'] ) ) {
657
  $error->add( 500, _x( 'The visual min age check is invalid.', 'dhl', 'woocommerce-germanized' ) );
671
  }
672
  }
673
 
674
+ if ( wc_gzd_dhl_product_supports_service( $args['dhl_product'], 'IdentCheck' ) ) {
675
+ if ( ! empty( $args['ident_min_age'] ) && wc_gzd_dhl_is_valid_ident_min_age( $args['ident_min_age'] ) ) {
676
+ $args['services'] = array_merge( $args['services'], array( 'IdentCheck' ) );
 
 
677
  }
678
 
679
+ if ( in_array( 'IdentCheck', $args['services'] ) ) {
680
+ if ( ! empty( $args['ident_min_age'] ) && ! array_key_exists( $args['ident_min_age'], wc_gzd_dhl_get_ident_min_ages() ) ) {
681
+ $error->add( 500, _x( 'The ident min age check is invalid.', 'dhl', 'woocommerce-germanized' ) );
682
+
683
+ $args['ident_min_age'] = '';
684
+ }
685
+
686
+ if ( ! empty( $args['ident_date_of_birth'] ) ) {
687
+ if ( ! wc_gzd_dhl_is_valid_datetime( $args['ident_date_of_birth'], 'Y-m-d' ) ) {
688
+ $error->add( 500, _x( 'There was an error parsing the date of birth for the identity check.', 'dhl', 'woocommerce-germanized' ) );
689
+ }
690
  }
 
691
 
692
+ if ( empty( $args['ident_date_of_birth'] ) && empty( $args['ident_min_age'] ) ) {
693
+ $error->add( 500, _x( 'Either a minimum age or a date of birth must be added to the ident check.', 'dhl', 'woocommerce-germanized' ) );
694
+ }
695
  }
696
  } else {
697
  $args['ident_min_age'] = '';
768
  $shipment = wc_gzd_get_shipment( $shipment );
769
  }
770
 
771
+ if ( $shipment && ! in_array( $shipment->get_shipping_provider(), array( 'dhl', 'deutsche_post' ) ) ) {
772
  $needs_label = false;
773
  }
774
 
930
  );
931
  }
932
 
933
+ function wc_gzd_dhl_get_deutsche_post_label_default_args( $dhl_order, $shipment ) {
934
+ $shipping_method = $shipment->get_shipping_method();
935
+ $dp_shipping_method = wc_gzd_dhl_get_deutsche_post_shipping_method( $shipping_method );
936
+
937
+ $defaults = array(
938
+ 'dhl_product' => wc_gzd_dhl_get_deutsche_post_default_product( $shipment->get_country(), $dp_shipping_method ),
939
+ 'page_format' => Package::get_setting( 'deutsche_post_label_default_page_format', $dp_shipping_method ),
940
+ 'stamp_total' => 0,
941
+ 'additional_services' => array(),
942
+ 'weight' => wc_gzd_dhl_get_shipment_weight( $shipment ),
943
+ );
944
+
945
+ if ( ! empty( $defaults['dhl_product'] ) ) {
946
+ /**
947
+ * Get current services from the selected product.
948
+ */
949
+ $defaults['additional_services'] = Package::get_internetmarke_api()->get_product_services( $defaults['dhl_product'] );
950
+
951
+ /**
952
+ * Force parent product by default to allow manually selecting services.
953
+ */
954
+ $defaults['dhl_product'] = Package::get_internetmarke_api()->get_product_parent_code( $defaults['dhl_product'] );
955
+ }
956
+
957
+ if ( ! empty( $defaults['dhl_product'] ) ) {
958
+ $defaults['stamp_total'] = Package::get_internetmarke_api()->get_product_total( $defaults['dhl_product'] );
959
+ }
960
+
961
+ return $defaults;
962
+ }
963
+
964
+ /**
965
+ * @param Shipment $shipment
966
+ *
967
+ * @return array
968
+ */
969
+ function wc_gzd_dhl_get_deutsche_post_products( $shipment, $parent_only = true ) {
970
+ if ( Package::is_shipping_domestic( $shipment->get_country() ) ) {
971
+ return wc_gzd_dhl_get_deutsche_post_products_domestic( $shipment, $parent_only );
972
+ } elseif ( Package::is_eu_shipment( $shipment->get_country() ) ) {
973
+ return wc_gzd_dhl_get_deutsche_post_products_eu( $shipment, $parent_only );
974
+ } else {
975
+ return wc_gzd_dhl_get_deutsche_post_products_international( $shipment, $parent_only );
976
+ }
977
+ }
978
+
979
+ /**
980
+ * @param Shipment|false $shipment
981
+ *
982
+ * @return array
983
+ */
984
+ function wc_gzd_dhl_get_deutsche_post_products_domestic( $shipment = false, $parent_only = true ) {
985
+ $dom = Package::get_internetmarke_api()->get_available_products( array(
986
+ 'product_destination' => 'national',
987
+ 'shipment_weight' => $shipment ? wc_gzd_dhl_get_shipment_weight( $shipment, 'g' ) : false,
988
+ ) );
989
+
990
+ return wc_gzd_dhl_im_get_product_list( $dom, $parent_only );
991
+ }
992
+
993
+ function wc_gzd_dhl_im_get_product_list( $products, $parent_only = true ) {
994
+ $list = array();
995
+
996
+ foreach( $products as $product ) {
997
+ if ( $parent_only && $product->product_parent_id > 0 ) {
998
+ continue;
999
+ }
1000
+
1001
+ $list[ $product->product_code ] = wc_gzd_dhl_get_im_product_title( $product->product_name );
1002
+ }
1003
+
1004
+ return $list;
1005
+ }
1006
+
1007
+ function wc_gzd_dhl_get_deutsche_post_products_eu( $shipment = false, $parent_only = true ) {
1008
+ $non_warenpost = Package::get_internetmarke_api()->get_available_products( array(
1009
+ 'product_destination' => 'international',
1010
+ 'product_is_wp_int' => 0,
1011
+ 'shipment_weight' => $shipment ? wc_gzd_dhl_get_shipment_weight( $shipment, 'g' ) : false,
1012
+ ) );
1013
+
1014
+ $warenpost = Package::get_internetmarke_api()->get_available_products( array(
1015
+ 'product_destination' => 'eu',
1016
+ 'product_is_wp_int' => 1,
1017
+ 'shipment_weight' => $shipment ? wc_gzd_dhl_get_shipment_weight( $shipment, 'g' ) : false,
1018
+ ) );
1019
+
1020
+ $international = array_merge( $non_warenpost, $warenpost );
1021
+
1022
+ return wc_gzd_dhl_im_get_product_list( $international, $parent_only );
1023
+ }
1024
+
1025
+ /**
1026
+ * @param Shipment|false $shipment
1027
+ *
1028
+ * @return array
1029
+ */
1030
+ function wc_gzd_dhl_get_deutsche_post_products_international( $shipment = false, $parent_only = true ) {
1031
+ if ( $shipment && Package::is_eu_shipment( $shipment->get_country() ) ) {
1032
+ return wc_gzd_dhl_get_deutsche_post_products_eu( $shipment );
1033
+ } else {
1034
+ $international = Package::get_internetmarke_api()->get_available_products( array(
1035
+ 'product_destination' => 'international',
1036
+ 'shipment_weight' => $shipment ? wc_gzd_dhl_get_shipment_weight( $shipment, 'g' ) : false,
1037
+ ) );
1038
+
1039
+ return wc_gzd_dhl_im_get_product_list( $international, $parent_only );
1040
+ }
1041
+ }
1042
+
1043
  /**
1044
  * @param Order $dhl_order
1045
  * @param Shipment $shipment
1048
 
1049
  $shipping_method = $shipment->get_shipping_method();
1050
  $dhl_shipping_method = wc_gzd_dhl_get_shipping_method( $shipping_method );
 
1051
 
1052
  $defaults = array(
1053
  'dhl_product' => wc_gzd_dhl_get_default_product( $shipment->get_country(), $dhl_shipping_method ),
1126
  }
1127
  }
1128
 
1129
+ if ( wc_gzd_dhl_product_supports_service( $defaults['dhl_product'], 'IdentCheck' ) ) {
1130
+ $ident_min_age = Package::get_setting( 'label_ident_min_age', $dhl_shipping_method );
1131
+
1132
+ if ( wc_gzd_dhl_is_valid_ident_min_age( $ident_min_age ) ) {
1133
+ $defaults['services'][] = 'IdentCheck';
1134
+ $defaults['ident_min_age'] = $ident_min_age;
1135
+ }
1136
+
1137
+ /**
1138
+ * Sync with order data but only in case no visual age has been synced already.
1139
+ */
1140
+ if ( ! in_array( 'VisualCheckOfAge', $defaults['services'] ) ) {
1141
+ if ( $dhl_order->needs_age_verification() && 'yes' === Package::get_setting( 'label_auto_age_check_ident_sync', $dhl_shipping_method ) ) {
1142
+ $defaults['services'][] = 'IdentCheck';
1143
+ $defaults['ident_min_age'] = $dhl_order->get_min_age();
1144
+ }
1145
+ }
1146
+ }
1147
+
1148
  foreach( wc_gzd_dhl_get_services() as $service ) {
1149
 
1150
  if ( ! wc_gzd_dhl_product_supports_service( $defaults['dhl_product'], $service ) ) {
1152
  }
1153
 
1154
  // Combination is not available
1155
+ if ( ( ! empty( $defaults['visual_min_age'] ) || ! empty( $defaults['ident_min_age'] ) ) && 'NamedPersonOnly' === $service ) {
1156
  continue;
1157
  }
1158
 
1184
  }
1185
  }
1186
 
1187
+ if ( ! Package::is_shipping_domestic( $shipment->get_country() ) ) {
1188
 
1189
  foreach( wc_gzd_dhl_get_international_services() as $service ) {
1190
 
1251
  */
1252
  function wc_gzd_dhl_get_shipment_weight( $shipment, $unit = 'kg' ) {
1253
  $shipping_method = $shipment->get_shipping_method();
1254
+ $shipment_weight = $shipment->get_total_weight();
1255
  $dhl_shipping_method = wc_gzd_dhl_get_shipping_method( $shipping_method );
1256
  $min_weight = wc_get_weight( Package::get_setting( 'label_minimum_shipment_weight', $dhl_shipping_method ), $unit, 'kg' );
1257
  $weight = empty( $shipment_weight ) ? wc_get_weight( Package::get_setting( 'label_default_shipment_weight', $dhl_shipping_method ), $unit, 'kg' ) : wc_get_weight( $shipment_weight, $unit, $shipment->get_weight_unit() );
1305
 
1306
  $dhl_order = wc_gzd_dhl_get_order( $order );
1307
  $shipment_type = $shipment->get_type();
1308
+ $provider = $shipment->get_shipping_provider();
1309
  $label_type = 'return' === $shipment_type ? 'return' : 'simple';
1310
+
1311
+ if ( 'deutsche_post' === $provider ) {
1312
+ $label_type = 'return' === $shipment_type ? 'deutsche_post_return' : 'deutsche_post';
1313
+ }
1314
+
1315
  $hook_suffix = 'simple' === $label_type ? '' : $label_type . '_';
1316
 
1317
  if ( 'return' === $label_type ) {
1318
  $args = wp_parse_args( $args, wc_gzd_dhl_get_return_label_default_args( $dhl_order, $shipment ) );
1319
  $args = wc_gzd_dhl_validate_return_label_args( $shipment, $args );
1320
+ } elseif ( in_array( $label_type, array( 'deutsche_post', 'deutsche_post_return' ) ) ) {
1321
+ $args = wp_parse_args( $args, wc_gzd_dhl_get_deutsche_post_label_default_args( $dhl_order, $shipment ) );
1322
+ $args = wc_gzd_dhl_validate_deutsche_post_label_args( $shipment, $args );
1323
  } else {
1324
  $args = wp_parse_args( $args, wc_gzd_dhl_get_label_default_args( $dhl_order, $shipment ) );
1325
  $args = wc_gzd_dhl_validate_label_args( $shipment, $args );
1556
  return $retoure;
1557
  }
1558
 
1559
+ function wc_gzd_dhl_get_im_product_title( $product_name ) {
1560
+ $title = $product_name;
1561
+
1562
+ return $title;
1563
+ }
1564
+
1565
  function wc_gzd_dhl_get_products_international() {
1566
 
1567
  $country = Package::get_base_country();
1630
  }
1631
  }
1632
 
1633
+ function wc_gzd_dhl_get_deutsche_post_default_product( $country, $method = false ) {
1634
+ if ( Package::is_shipping_domestic( $country ) ) {
1635
+ return Package::get_setting( 'deutsche_post_label_default_product_dom', $method );
1636
+ } elseif( Package::is_eu_shipment( $country ) ) {
1637
+ return Package::get_setting( 'deutsche_post_label_default_product_eu', $method );
1638
+ }else {
1639
+ return Package::get_setting( 'deutsche_post_label_default_product_int', $method );
1640
+ }
1641
+ }
1642
 
1643
+ function wc_gzd_dhl_get_products_domestic() {
1644
  $country = Package::get_base_country();
1645
 
1646
  $germany_dom = array(
1647
  'V01PAK' => _x( 'DHL Paket', 'dhl', 'woocommerce-germanized' ),
1648
  'V01PRIO' => _x( 'DHL Paket PRIO', 'dhl', 'woocommerce-germanized' ),
1649
  'V06PAK' => _x( 'DHL Paket Taggleich', 'dhl', 'woocommerce-germanized' ),
1650
+ 'V62WP' => _x( 'DHL Warenpost', 'dhl', 'woocommerce-germanized' )
1651
  );
1652
 
1653
  $dhl_prod_dom = array();
1759
  'return' => array(
1760
  'class_name' => '\Vendidero\Germanized\DHL\ReturnLabel'
1761
  ),
1762
+ 'deutsche_post' => array(
1763
+ 'class_name' => '\Vendidero\Germanized\DHL\DeutschePostLabel'
1764
+ ),
1765
+ 'deutsche_post_return' => array(
1766
+ 'class_name' => '\Vendidero\Germanized\DHL\DeutschePostReturnLabel'
1767
+ ),
1768
  );
1769
 
1770
  if ( $type && array_key_exists( $type, $types ) ) {
packages/woocommerce-germanized-dhl/src/Admin/Admin.php CHANGED
@@ -1,9 +1,11 @@
1
  <?php
2
 
3
  namespace Vendidero\Germanized\DHL\Admin;
 
4
  use Vendidero\Germanized\DHL\Package;
5
  use Vendidero\Germanized\Shipments\Shipment;
6
  use Vendidero\Germanized\Shipments\ReturnShipment;
 
7
 
8
  defined( 'ABSPATH' ) || exit;
9
 
@@ -28,6 +30,9 @@ class Admin {
28
  add_action( 'woocommerce_gzd_shipment_print_dhl_label_admin_fields', array( __CLASS__, 'label_fields' ), 10, 1 );
29
  add_action( 'woocommerce_gzd_return_shipment_print_dhl_label_admin_fields', array( __CLASS__, 'return_label_fields' ), 10, 1 );
30
 
 
 
 
31
  // Template check
32
  add_filter( 'woocommerce_gzd_template_check', array( __CLASS__, 'add_template_check' ), 10, 1 );
33
 
@@ -35,14 +40,57 @@ class Admin {
35
  add_action( 'admin_notices', array( __CLASS__, 'check_upload_dir' ) );
36
 
37
  // Product Options
38
- add_action( 'woocommerce_product_options_shipping', array( __CLASS__, 'product_options' ) );
39
  add_action( 'woocommerce_admin_process_product_object', array( __CLASS__, 'save_product' ), 10, 1 );
40
 
41
  // Reveiver ID options
42
  add_action( 'woocommerce_admin_field_dhl_receiver_ids', array( __CLASS__, 'output_receiver_ids_field' ) );
43
  add_action( 'woocommerce_gzd_admin_settings_after_save_dhl_labels', array( __CLASS__, 'save_receiver_ids' ) );
 
 
 
44
  }
45
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  /**
47
  * Output label admin settings.
48
  *
@@ -60,6 +108,23 @@ class Admin {
60
  include $path;
61
  }
62
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  /**
64
  * Output label admin settings.
65
  *
@@ -172,8 +237,8 @@ class Admin {
172
  $countries = WC()->countries->get_countries();
173
  $countries = array_merge( array( '0' => _x( 'Select a country', 'dhl', 'woocommerce-germanized' ) ), $countries );
174
 
175
- woocommerce_wp_text_input( array( 'id' => '_dhl_hs_code', 'label' => _x( 'Harmonized Tariff Schedule (DHL)', 'dhl', 'woocommerce-germanized' ), 'desc_tip' => true, 'description' => _x( 'This code is needed for customs of international shipping.', 'dhl', 'woocommerce-germanized' ) ) );
176
- woocommerce_wp_select( array( 'options' => $countries, 'id' => '_dhl_manufacture_country', 'label' => _x( 'Country of manufacture (DHL)', 'dhl', 'woocommerce-germanized' ), 'desc_tip' => true, 'description' => _x( 'The country of manufacture is needed for customs of international shipping.', 'dhl', 'woocommerce-germanized' ) ) );
177
  }
178
 
179
  public static function save_product( $product ) {
@@ -215,7 +280,7 @@ class Admin {
215
  public static function add_legacy_meta_box() {
216
  global $post;
217
 
218
- if ( ! Importer::is_plugin_enabled() && ( $post && 'shop_order' === $post->post_type && get_post_meta( $post->ID, '_pr_shipment_dhl_label_tracking' ) ) ) {
219
  add_meta_box( 'woocommerce-gzd-shipment-dhl-legacy-label', _x( 'DHL Label', 'dhl', 'woocommerce-germanized' ), array( __CLASS__, 'legacy_meta_box' ), 'shop_order', 'side', 'high' );
220
  }
221
  }
@@ -262,9 +327,25 @@ class Admin {
262
  $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
263
 
264
  wp_register_script( 'wc-gzd-admin-dhl-label', Package::get_assets_url() . '/js/admin-label' . $suffix . '.js', array( 'wc-gzd-admin-shipment-label-backbone' ), Package::get_version() );
 
 
265
 
266
  if ( wp_script_is( 'wc-gzd-admin-shipment-label-backbone', 'enqueued' ) ) {
267
  wp_enqueue_script( 'wc-gzd-admin-dhl-label' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
268
  }
269
  }
270
 
1
  <?php
2
 
3
  namespace Vendidero\Germanized\DHL\Admin;
4
+ use Vendidero\Germanized\DHL\Admin\Importer\DHL;
5
  use Vendidero\Germanized\DHL\Package;
6
  use Vendidero\Germanized\Shipments\Shipment;
7
  use Vendidero\Germanized\Shipments\ReturnShipment;
8
+ use Vendidero\Germanized\DHL\DownloadHandler;
9
 
10
  defined( 'ABSPATH' ) || exit;
11
 
30
  add_action( 'woocommerce_gzd_shipment_print_dhl_label_admin_fields', array( __CLASS__, 'label_fields' ), 10, 1 );
31
  add_action( 'woocommerce_gzd_return_shipment_print_dhl_label_admin_fields', array( __CLASS__, 'return_label_fields' ), 10, 1 );
32
 
33
+ add_action( 'woocommerce_gzd_shipment_print_deutsche_post_label_admin_fields', array( __CLASS__, 'post_label_fields' ), 10, 1 );
34
+ add_action( 'woocommerce_gzd_return_shipment_print_deutsche_post_label_admin_fields', array( __CLASS__, 'post_label_fields' ), 10, 1 );
35
+
36
  // Template check
37
  add_filter( 'woocommerce_gzd_template_check', array( __CLASS__, 'add_template_check' ), 10, 1 );
38
 
40
  add_action( 'admin_notices', array( __CLASS__, 'check_upload_dir' ) );
41
 
42
  // Product Options
43
+ add_action( 'woocommerce_product_options_shipping', array( __CLASS__, 'product_options' ), 9 );
44
  add_action( 'woocommerce_admin_process_product_object', array( __CLASS__, 'save_product' ), 10, 1 );
45
 
46
  // Reveiver ID options
47
  add_action( 'woocommerce_admin_field_dhl_receiver_ids', array( __CLASS__, 'output_receiver_ids_field' ) );
48
  add_action( 'woocommerce_gzd_admin_settings_after_save_dhl_labels', array( __CLASS__, 'save_receiver_ids' ) );
49
+
50
+ add_action( 'admin_init', array( __CLASS__, 'refresh_im_data' ) );
51
+ add_action( 'admin_notices', array( __CLASS__, 'refresh_im_notices' ) );
52
  }
53
 
54
+ public static function refresh_im_notices() {
55
+ if ( current_user_can( 'manage_woocommerce' ) && isset( $_GET['im-refresh-type'] ) ) {
56
+ ?>
57
+ <div class="notice fade <?php echo ( isset( $_GET['success'] ) ? 'updated' : 'error' ); ?>"><p><?php echo ( isset( $_GET['success'] ) ? _x( 'Refreshed data successfully.', 'dhl', 'woocommerce-germanized' ) : sprintf( _x( 'Error while refreshing data. Please check your Internetmarke <a href="%s">logs</a>.', 'dhl', 'woocommerce-germanized' ), admin_url( 'admin.php?page=wc-status&tab=logs' ) ) ); ?></p></div>
58
+ <?php
59
+ }
60
+ }
61
+
62
+ public static function refresh_im_data() {
63
+ if ( current_user_can( 'manage_woocommerce' ) && isset( $_GET['action'], $_GET['_wpnonce'] ) && 'wc-gzd-dhl-im-product-refresh' === $_GET['action'] ) {
64
+ if ( wp_verify_nonce( $_GET['_wpnonce'], 'wc-gzd-dhl-refresh-im-products' ) ) {
65
+ $result = Package::get_internetmarke_api()->update_products();
66
+ $settings_url = add_query_arg( array( 'im-refresh-type' => 'products' ), Settings::get_settings_url( 'internetmarke' ) );
67
+
68
+ if ( is_wp_error( $result ) ) {
69
+ $settings_url = add_query_arg( array( 'error' => 1 ), $settings_url );
70
+ } else {
71
+ $settings_url = add_query_arg( array( 'success' => 1 ), $settings_url );
72
+ }
73
+
74
+ wp_safe_redirect( $settings_url );
75
+ exit();
76
+ }
77
+ } elseif ( current_user_can( 'manage_woocommerce' ) && isset( $_GET['action'], $_GET['_wpnonce'] ) && 'wc-gzd-dhl-im-page-formats-refresh' === $_GET['action'] ) {
78
+ if ( wp_verify_nonce( $_GET['_wpnonce'], 'wc-gzd-dhl-refresh-im-page-formats' ) ) {
79
+ $result = Package::get_internetmarke_api()->get_page_formats( true );
80
+ $settings_url = add_query_arg( array( 'im-refresh-type' => 'formats' ), Settings::get_settings_url( 'internetmarke' ) );
81
+
82
+ if ( is_wp_error( $result ) ) {
83
+ $settings_url = add_query_arg( array( 'error' => 1 ), $settings_url );
84
+ } else {
85
+ $settings_url = add_query_arg( array( 'success' => 1 ), $settings_url );
86
+ }
87
+
88
+ wp_safe_redirect( $settings_url );
89
+ exit();
90
+ }
91
+ }
92
+ }
93
+
94
  /**
95
  * Output label admin settings.
96
  *
108
  include $path;
109
  }
110
 
111
+ /**
112
+ * Output label admin settings.
113
+ *
114
+ * @param Shipment $p_shipment
115
+ */
116
+ public static function post_label_fields( $p_shipment ) {
117
+ $shipment = $p_shipment;
118
+
119
+ if ( ! $dhl_order = wc_gzd_dhl_get_order( $shipment->get_order() ) ) {
120
+ return;
121
+ }
122
+
123
+ $path = Package::get_path() . '/includes/admin/views/html-shipment-deutsche-post-label-backbone-form.php';
124
+
125
+ include $path;
126
+ }
127
+
128
  /**
129
  * Output label admin settings.
130
  *
237
  $countries = WC()->countries->get_countries();
238
  $countries = array_merge( array( '0' => _x( 'Select a country', 'dhl', 'woocommerce-germanized' ) ), $countries );
239
 
240
+ woocommerce_wp_text_input( array( 'id' => '_dhl_hs_code', 'label' => _x( 'HS-Code (DHL)', 'dhl', 'woocommerce-germanized' ), 'desc_tip' => true, 'description' => _x( 'The HS Code is a number assigned to every possible commodity that can be imported or exported from any country.', 'dhl', 'woocommerce-germanized' ) ) );
241
+ woocommerce_wp_select( array( 'options' => $countries, 'id' => '_dhl_manufacture_country', 'label' => _x( 'Country of manufacture (DHL)', 'dhl', 'woocommerce-germanized' ), 'desc_tip' => true, 'description' => _x( 'The country of manufacture is needed for customs of international shipping.', 'dhl', 'woocommerce-germanized' ) ) );
242
  }
243
 
244
  public static function save_product( $product ) {
280
  public static function add_legacy_meta_box() {
281
  global $post;
282
 
283
+ if ( ! DHL::is_plugin_enabled() && ( $post && 'shop_order' === $post->post_type && get_post_meta( $post->ID, '_pr_shipment_dhl_label_tracking' ) ) ) {
284
  add_meta_box( 'woocommerce-gzd-shipment-dhl-legacy-label', _x( 'DHL Label', 'dhl', 'woocommerce-germanized' ), array( __CLASS__, 'legacy_meta_box' ), 'shop_order', 'side', 'high' );
285
  }
286
  }
327
  $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
328
 
329
  wp_register_script( 'wc-gzd-admin-dhl-label', Package::get_assets_url() . '/js/admin-label' . $suffix . '.js', array( 'wc-gzd-admin-shipment-label-backbone' ), Package::get_version() );
330
+ wp_register_script( 'wc-gzd-admin-dhl-internetmarke', Package::get_assets_url() . '/js/admin-internetmarke' . $suffix . '.js', array( 'jquery' ), Package::get_version() );
331
+ wp_register_script( 'wc-gzd-admin-deutsche-post-label', Package::get_assets_url() . '/js/admin-deutsche-post-label' . $suffix . '.js', array( 'wc-gzd-admin-shipment-label-backbone' ), Package::get_version() );
332
 
333
  if ( wp_script_is( 'wc-gzd-admin-shipment-label-backbone', 'enqueued' ) ) {
334
  wp_enqueue_script( 'wc-gzd-admin-dhl-label' );
335
+ wp_enqueue_script( 'wc-gzd-admin-deutsche-post-label' );
336
+
337
+ wp_localize_script(
338
+ 'wc-gzd-admin-deutsche-post-label',
339
+ 'wc_gzd_admin_deutsche_post_label_params',
340
+ array(
341
+ 'refresh_label_preview_nonce' => wp_create_nonce( 'wc-gzd-dhl-refresh-deutsche-post-label-preview' ),
342
+ )
343
+ );
344
+ }
345
+
346
+ // Shipping zone methods
347
+ if ( 'woocommerce_page_wc-settings' === $screen_id && isset( $_GET['section'] ) && 'internetmarke' === $_GET['section'] ) {
348
+ wp_enqueue_script( 'wc-gzd-admin-dhl-internetmarke' );
349
  }
350
  }
351
 
packages/woocommerce-germanized-dhl/src/Admin/{Importer.php → Importer/DHL.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace Vendidero\Germanized\DHL\Admin;
4
  use Vendidero\Germanized\DHL\Package;
5
 
6
  defined( 'ABSPATH' ) || exit;
@@ -8,7 +8,7 @@ defined( 'ABSPATH' ) || exit;
8
  /**
9
  * WC_Admin class.
10
  */
11
- class Importer {
12
 
13
  public static function is_available() {
14
  $options = get_option( 'woocommerce_pr_dhl_paket_settings' );
1
  <?php
2
 
3
+ namespace Vendidero\Germanized\DHL\Admin\Importer;
4
  use Vendidero\Germanized\DHL\Package;
5
 
6
  defined( 'ABSPATH' ) || exit;
8
  /**
9
  * WC_Admin class.
10
  */
11
+ class DHL {
12
 
13
  public static function is_available() {
14
  $options = get_option( 'woocommerce_pr_dhl_paket_settings' );
packages/woocommerce-germanized-dhl/src/Admin/Importer/Internetmarke.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Vendidero\Germanized\DHL\Admin\Importer;
4
+ use Vendidero\Germanized\DHL\Package;
5
+
6
+ defined( 'ABSPATH' ) || exit;
7
+
8
+ /**
9
+ * WC_Admin class.
10
+ */
11
+ class Internetmarke {
12
+
13
+ public static function is_available() {
14
+ $options = get_option( '_wcdpi_settings_general' );
15
+ $imported = get_option( 'woocommerce_gzd_internetmarke_import_finished' );
16
+
17
+ return ( ( ! empty( $options ) && 'yes' !== $imported && Package::base_country_is_supported() ) ? true : false );
18
+ }
19
+
20
+ public static function is_plugin_enabled() {
21
+ return defined( 'WCDPI_PLUGIN_FILE' ) ? true : false;
22
+ }
23
+
24
+ public static function import_settings() {
25
+ $old_settings = array_merge( (array) get_option( '_wcdpi_settings_portokasse' ), (array) get_option( '_wcdpi_settings_internetmarke_1c4a' ) );
26
+
27
+ $settings_mapping = array(
28
+ '_wcdpi_portokasse_email' => 'woocommerce_gzd_dhl_im_api_username',
29
+ '_wcdpi_portokasse_password' => 'woocommerce_gzd_dhl_im_api_password',
30
+ );
31
+
32
+ // Bulk update settings
33
+ foreach( $settings_mapping as $setting_old_key => $setting_new_key ) {
34
+ if ( isset( $old_settings[ $setting_old_key ] ) ) {
35
+ update_option( $setting_new_key, $old_settings[ $setting_old_key ] );
36
+ }
37
+ }
38
+ }
39
+ }
packages/woocommerce-germanized-dhl/src/Admin/Settings.php CHANGED
@@ -14,6 +14,10 @@ class Settings {
14
  return '';
15
  }
16
 
 
 
 
 
17
  public static function get_pointers( $section ) {
18
  $pointers = array();
19
 
@@ -331,7 +335,7 @@ class Settings {
331
  $settings = self::get_setup_settings( true );
332
 
333
  $settings = array_merge( $settings, array(
334
- array( 'title' => _x( 'Products and Participation Numbers', 'dhl', 'woocommerce-germanized' ), 'type' => 'title', 'id' => 'dhl_product_options', 'desc' => sprintf( _x( 'For each DHL product that you would like to use, please enter your participation number here. The participation number consists of the last two characters of the respective accounting number, which you will find in your %s (e.g.: 01).', 'dhl', 'woocommerce-germanized' ), '<a href="' . Package::get_geschaeftskunden_portal_url() . '" target="_blank">' . _x( 'contract data', 'dhl', 'woocommerce-germanized' ) . '</a>' ) ),
335
  ) );
336
 
337
  $settings = array_merge( $settings, $dhl_products );
@@ -526,14 +530,6 @@ class Settings {
526
  public static function get_label_default_services_settings( $for_shipping_method = false ) {
527
 
528
  $settings = array(
529
- array(
530
- 'title' => _x( 'Visual minimum age', 'dhl', 'woocommerce-germanized' ),
531
- 'id' => 'woocommerce_gzd_dhl_label_visual_min_age',
532
- 'type' => 'select',
533
- 'default' => '0',
534
- 'options' => wc_gzd_dhl_get_visual_min_ages(),
535
- 'desc_tip' => _x( 'Choose this option if you want to let DHL check your customer\'s age.', 'dhl', 'woocommerce-germanized' ),
536
- ),
537
  array(
538
  'title' => _x( 'GoGreen', 'dhl', 'woocommerce-germanized' ),
539
  'desc' => _x( 'Enable the GoGreen Service by default.', 'dhl', 'woocommerce-germanized' ),
@@ -577,12 +573,35 @@ class Settings {
577
  'type' => 'gzd_toggle',
578
  ),
579
  array(
580
- 'title' => _x( 'Age Verification', 'dhl', 'woocommerce-germanized' ),
581
- 'desc' => _x( 'Verify ages if shipment contains applicable items.', 'dhl', 'woocommerce-germanized' ) . '<div class="wc-gzd-additional-desc">' . sprintf( _x( 'Germanized offers an %s to be enabled for certain products and/or product categories. By checking this option labels for shipments with applicable items will automatically have the visual age check service enabled.', 'dhl', 'woocommerce-germanized' ), '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=germanized-checkboxes&checkbox_id=age_verification' ) . '">' . _x( 'age verification checkbox', 'dhl', 'woocommerce-germanized' ) . '</a>' ) . '</div>',
 
 
 
 
 
 
 
 
582
  'id' => 'woocommerce_gzd_dhl_label_auto_age_check_sync',
583
  'default' => 'yes',
584
  'type' => 'gzd_toggle',
585
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
586
  array(
587
  'title' => _x( 'Premium', 'dhl', 'woocommerce-germanized' ),
588
  'desc' => _x( 'Premium delivery for international shipments.', 'dhl', 'woocommerce-germanized' ),
@@ -662,7 +681,9 @@ class Settings {
662
 
663
  foreach( $settings as $setting ) {
664
  $new_setting = array();
665
- $new_setting['id'] = str_replace( 'woocommerce_gzd_dhl_', 'dhl_', $setting['id'] );
 
 
666
  $new_setting['type'] = str_replace( 'gzd_toggle', 'checkbox', $setting['type'] );
667
  $new_setting['default'] = Package::get_setting( $new_setting['id'] );
668
 
@@ -1138,6 +1159,284 @@ class Settings {
1138
  return $settings;
1139
  }
1140
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1141
  public static function get_settings( $current_section = '' ) {
1142
  $settings = array();
1143
 
@@ -1149,6 +1448,8 @@ class Settings {
1149
  $settings = self::get_service_settings();
1150
  } elseif( 'pickup' === $current_section && Package::base_country_supports( 'pickup' ) ) {
1151
  $settings = self::get_pickup_settings();
 
 
1152
  }
1153
 
1154
  return $settings;
@@ -1156,10 +1457,11 @@ class Settings {
1156
 
1157
  public static function get_sections() {
1158
  $sections = array(
1159
- '' => _x( 'General', 'dhl', 'woocommerce-germanized' ),
1160
- 'labels' => _x( 'Labels', 'dhl', 'woocommerce-germanized' ),
1161
- 'services' => _x( 'Preferred Services', 'dhl', 'woocommerce-germanized' ),
1162
- 'pickup' => _x( 'Parcel Pickup', 'dhl', 'woocommerce-germanized' ),
 
1163
  );
1164
 
1165
  if ( ! Package::base_country_supports( 'services' ) ) {
14
  return '';
15
  }
16
 
17
+ protected static function after_disable() {
18
+
19
+ }
20
+
21
  public static function get_pointers( $section ) {
22
  $pointers = array();
23
 
335
  $settings = self::get_setup_settings( true );
336
 
337
  $settings = array_merge( $settings, array(
338
+ array( 'title' => _x( 'Products and Participation Numbers', 'dhl', 'woocommerce-germanized' ), 'type' => 'title', 'id' => 'dhl_product_options', 'desc' => sprintf( _x( 'For each DHL product that you would like to use, please enter your participation number here. The participation number consists of the last two characters of the respective accounting number, which you will find in your %s (e.g.: 01).', 'dhl', 'woocommerce-germanized' ), '<a href="' . Package::get_geschaeftskunden_portal_url() . '" target="_blank">' . _x( 'contract data', 'dhl', 'woocommerce-germanized' ) . '</a>' ) ),
339
  ) );
340
 
341
  $settings = array_merge( $settings, $dhl_products );
530
  public static function get_label_default_services_settings( $for_shipping_method = false ) {
531
 
532
  $settings = array(
 
 
 
 
 
 
 
 
533
  array(
534
  'title' => _x( 'GoGreen', 'dhl', 'woocommerce-germanized' ),
535
  'desc' => _x( 'Enable the GoGreen Service by default.', 'dhl', 'woocommerce-germanized' ),
573
  'type' => 'gzd_toggle',
574
  ),
575
  array(
576
+ 'title' => _x( 'Minimum age (Visual check)', 'dhl', 'woocommerce-germanized' ),
577
+ 'id' => 'woocommerce_gzd_dhl_label_visual_min_age',
578
+ 'type' => 'select',
579
+ 'default' => '0',
580
+ 'options' => wc_gzd_dhl_get_visual_min_ages(),
581
+ 'desc_tip' => _x( 'Choose this option if you want to let DHL check your customer\'s age.', 'dhl', 'woocommerce-germanized' ),
582
+ ),
583
+ array(
584
+ 'title' => _x( 'Sync (Visual Check)', 'dhl', 'woocommerce-germanized' ),
585
+ 'desc' => _x( 'Visually verify age if shipment contains applicable items.', 'dhl', 'woocommerce-germanized' ) . '<div class="wc-gzd-additional-desc">' . sprintf( _x( 'Germanized offers an %s to be enabled for certain products and/or product categories. By checking this option labels for shipments with applicable items will automatically have the visual age check service enabled.', 'dhl', 'woocommerce-germanized' ), '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=germanized-checkboxes&checkbox_id=age_verification' ) . '">' . _x( 'age verification checkbox', 'dhl', 'woocommerce-germanized' ) . '</a>' ) . '</div>',
586
  'id' => 'woocommerce_gzd_dhl_label_auto_age_check_sync',
587
  'default' => 'yes',
588
  'type' => 'gzd_toggle',
589
  ),
590
+ array(
591
+ 'title' => _x( 'Minimum age (Ident check)', 'dhl', 'woocommerce-germanized' ),
592
+ 'id' => 'woocommerce_gzd_dhl_label_ident_min_age',
593
+ 'type' => 'select',
594
+ 'default' => '0',
595
+ 'options' => wc_gzd_dhl_get_ident_min_ages(),
596
+ 'desc_tip' => _x( 'Choose this option if you want to let DHL check your customer\'s identity and age.', 'dhl', 'woocommerce-germanized' ),
597
+ ),
598
+ array(
599
+ 'title' => _x( 'Sync (Ident Check)', 'dhl', 'woocommerce-germanized' ),
600
+ 'desc' => _x( 'Verify identity and age if shipment contains applicable items.', 'dhl', 'woocommerce-germanized' ) . '<div class="wc-gzd-additional-desc">' . sprintf( _x( 'Germanized offers an %s to be enabled for certain products and/or product categories. By checking this option labels for shipments with applicable items will automatically have the identity check service enabled.', 'dhl', 'woocommerce-germanized' ), '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=germanized-checkboxes&checkbox_id=age_verification' ) . '">' . _x( 'age verification checkbox', 'dhl', 'woocommerce-germanized' ) . '</a>' ) . '</div>',
601
+ 'id' => 'woocommerce_gzd_dhl_label_auto_age_check_ident_sync',
602
+ 'default' => 'no',
603
+ 'type' => 'gzd_toggle',
604
+ ),
605
  array(
606
  'title' => _x( 'Premium', 'dhl', 'woocommerce-germanized' ),
607
  'desc' => _x( 'Premium delivery for international shipments.', 'dhl', 'woocommerce-germanized' ),
681
 
682
  foreach( $settings as $setting ) {
683
  $new_setting = array();
684
+ $new_setting['id'] = str_replace( 'woocommerce_gzd_deutsche_post_', 'deutsche_post_', $setting['id'] );
685
+ $new_setting['id'] = str_replace( 'woocommerce_gzd_dhl_', 'dhl_', $new_setting['id'] );
686
+
687
  $new_setting['type'] = str_replace( 'gzd_toggle', 'checkbox', $setting['type'] );
688
  $new_setting['default'] = Package::get_setting( $new_setting['id'] );
689
 
1159
  return $settings;
1160
  }
1161
 
1162
+ public static function get_internetmarke_setup_settings( $is_settings_page = false ) {
1163
+ $settings = array(
1164
+ array( 'title' => '', 'type' => 'title', 'id' => 'dhl_internetmarke_options' ),
1165
+
1166
+ array(
1167
+ 'title' => _x( 'Enable', 'dhl', 'woocommerce-germanized' ),
1168
+ 'desc' => _x( 'Enable Internetmarke integration.', 'dhl', 'woocommerce-germanized' ),
1169
+ 'id' => 'woocommerce_gzd_dhl_internetmarke_enable',
1170
+ 'default' => 'no',
1171
+ 'type' => 'gzd_toggle',
1172
+ ),
1173
+
1174
+ array(
1175
+ 'title' => _x( 'Username', 'dhl', 'woocommerce-germanized' ),
1176
+ 'type' => 'text',
1177
+ 'desc' => '<div class="wc-gzd-additional-desc">' . sprintf( _x( 'Your credentials to the <a href="%s" target="_blank">Portokasse</a>. Please test your credentials before connecting.', 'dhl', 'woocommerce-germanized' ), 'https://portokasse.deutschepost.de/portokasse/#!/' ) . '</div>',
1178
+ 'id' => 'woocommerce_gzd_dhl_im_api_username',
1179
+ 'default' => '',
1180
+ 'custom_attributes' => array( 'autocomplete' => 'new-password' )
1181
+ ),
1182
+
1183
+ array(
1184
+ 'title' => _x( 'Password', 'dhl', 'woocommerce-germanized' ),
1185
+ 'type' => 'password',
1186
+ 'id' => 'woocommerce_gzd_dhl_im_api_password',
1187
+ 'default' => '',
1188
+ 'custom_attributes' => array( 'autocomplete' => 'new-password' )
1189
+ ),
1190
+
1191
+ array( 'type' => 'sectionend', 'id' => 'dhl_internetmarke_options' )
1192
+ );
1193
+
1194
+ return $settings;
1195
+ }
1196
+
1197
+ public static function get_internetmarke_default_settings( $for_shipping_method = false ) {
1198
+ $settings = array(
1199
+ array(
1200
+ 'title' => _x( 'Domestic Default Service', 'dhl', 'woocommerce-germanized' ),
1201
+ 'type' => 'select',
1202
+ 'default' => '',
1203
+ 'id' => 'woocommerce_gzd_deutsche_post_label_default_product_dom',
1204
+ 'desc' => '<div class="wc-gzd-additional-desc">' . _x( 'Please select your default shipping service for domestic shipments that you want to offer to your customers (you can always change this within each individual shipment afterwards).', 'dhl', 'woocommerce-germanized' ) . '</div>',
1205
+ 'options' => wc_gzd_dhl_get_deutsche_post_products_domestic( false, false ),
1206
+ 'class' => 'wc-enhanced-select',
1207
+ ),
1208
+
1209
+ array(
1210
+ 'title' => _x( 'EU Default Service', 'dhl', 'woocommerce-germanized' ),
1211
+ 'type' => 'select',
1212
+ 'default' => '',
1213
+ 'id' => 'woocommerce_gzd_deutsche_post_label_default_product_eu',
1214
+ 'desc' => '<div class="wc-gzd-additional-desc">' . _x( 'Please select your default shipping service for EU shipments that you want to offer to your customers.', 'dhl', 'woocommerce-germanized' ) . '</div>',
1215
+ 'options' => wc_gzd_dhl_get_deutsche_post_products_eu( false, false ),
1216
+ 'class' => 'wc-enhanced-select',
1217
+ ),
1218
+
1219
+ array(
1220
+ 'title' => _x( 'Int. Default Service', 'dhl', 'woocommerce-germanized' ),
1221
+ 'type' => 'select',
1222
+ 'default' => '',
1223
+ 'id' => 'woocommerce_gzd_deutsche_post_label_default_product_int',
1224
+ 'desc' => '<div class="wc-gzd-additional-desc">' . _x( 'Please select your default shipping service for cross-border shipments that you want to offer to your customers.', 'dhl', 'woocommerce-germanized' ) . '</div>',
1225
+ 'options' => wc_gzd_dhl_get_deutsche_post_products_international( false, false ),
1226
+ 'class' => 'wc-enhanced-select',
1227
+ ),
1228
+ );
1229
+
1230
+ if ( $for_shipping_method ) {
1231
+ $settings = self::convert_for_shipping_method( $settings );
1232
+ }
1233
+
1234
+ return $settings;
1235
+ }
1236
+
1237
+ public static function get_internetmarke_automation_settings( $for_shipping_method = false ) {
1238
+ $shipment_statuses = array_diff_key( wc_gzd_get_shipment_statuses(), array_fill_keys( array( 'gzd-draft', 'gzd-delivered', 'gzd-returned', 'gzd-requested' ), '' ) );
1239
+
1240
+ $settings = array(
1241
+ array(
1242
+ 'title' => _x( 'Labels', 'dhl', 'woocommerce-germanized' ),
1243
+ 'desc' => _x( 'Automatically create labels for shipments.', 'dhl', 'woocommerce-germanized' ),
1244
+ 'id' => 'woocommerce_gzd_deutsche_post_label_auto_enable',
1245
+ 'default' => 'no',
1246
+ 'type' => 'gzd_toggle',
1247
+ ),
1248
+
1249
+ array(
1250
+ 'title' => _x( 'Status', 'dhl', 'woocommerce-germanized' ),
1251
+ 'type' => 'select',
1252
+ 'default' => 'gzd-processing',
1253
+ 'id' => 'woocommerce_gzd_deutsche_post_label_auto_shipment_status',
1254
+ 'desc' => '<div class="wc-gzd-additional-desc">' . _x( 'Choose a shipment status which should trigger generation of a label.', 'dhl', 'woocommerce-germanized' ) . '</div>',
1255
+ 'options' => $shipment_statuses,
1256
+ 'class' => 'wc-enhanced-select',
1257
+ 'custom_attributes' => array( 'data-show_if_woocommerce_gzd_deutsche_post_label_auto_enable' => '' )
1258
+ ),
1259
+
1260
+ array(
1261
+ 'title' => _x( 'Shipment Status', 'dhl', 'woocommerce-germanized' ),
1262
+ 'desc' => _x( 'Mark shipment as shipped after label has been created successfully.', 'dhl', 'woocommerce-germanized' ),
1263
+ 'id' => 'woocommerce_gzd_deutsche_post_label_auto_shipment_status_shipped',
1264
+ 'default' => 'no',
1265
+ 'type' => 'gzd_toggle',
1266
+ )
1267
+ );
1268
+
1269
+ if ( $for_shipping_method ) {
1270
+ $settings = self::convert_for_shipping_method( $settings );
1271
+ }
1272
+
1273
+ return $settings;
1274
+ }
1275
+
1276
+ public static function get_internetmarke_printing_settings( $for_shipping_method = false ) {
1277
+ $settings_url = self::get_settings_url( 'internetmarke' );
1278
+
1279
+ $settings = array(
1280
+ array(
1281
+ 'title' => _x( 'Default Format', 'dhl', 'woocommerce-germanized' ),
1282
+ 'id' => 'woocommerce_gzd_deutsche_post_label_default_page_format',
1283
+ 'class' => 'wc-enhanced-select',
1284
+ 'desc' => '<div class="wc-gzd-additional-desc">' . sprintf( _x( 'Choose a print format which will be selected by default when creating labels. Manually <a href="%s">refresh</a> available print formats to make sure the list is up-to-date.', 'dhl', 'woocommerce-germanized' ), wp_nonce_url( add_query_arg( array( 'action' => 'wc-gzd-dhl-im-page-formats-refresh' ), $settings_url ), 'wc-gzd-dhl-refresh-im-page-formats' ) ) . '</div>',
1285
+ 'type' => 'select',
1286
+ 'options' => Package::get_internetmarke_api()->get_page_format_list(),
1287
+ 'default' => 1,
1288
+ ),
1289
+ );
1290
+
1291
+ if ( $for_shipping_method ) {
1292
+ $settings = self::convert_for_shipping_method( $settings );
1293
+ }
1294
+
1295
+ return $settings;
1296
+ }
1297
+
1298
+ protected static function get_internetmarke_settings() {
1299
+ $settings = self::get_internetmarke_setup_settings( true );
1300
+
1301
+ if ( Package::is_internetmarke_enabled() ) {
1302
+ $api = Package::get_internetmarke_api();
1303
+
1304
+ if ( $api && $api->auth() && $api->is_available() ) {
1305
+ $api->reload_products();
1306
+
1307
+ $balance = $api->get_balance( true );
1308
+ $settings_url = self::get_settings_url( 'internetmarke' );
1309
+
1310
+ $settings = array_merge( $settings, array(
1311
+ array( 'title' => _x( 'Portokasse', 'dhl', 'woocommerce-germanized' ), 'type' => 'title', 'id' => 'dhl_internetmarke_portokasse_options' ),
1312
+
1313
+ array(
1314
+ 'title' => _x( 'Balance', 'dhl', 'woocommerce-germanized' ),
1315
+ 'type' => 'html',
1316
+ 'id' => 'woocommerce_gzd_dhl_im_portokasse_balance',
1317
+ 'html' => wc_price( Package::cents_to_eur( $balance ), array( 'currency' => 'EUR' ) ),
1318
+ ),
1319
+
1320
+ array(
1321
+ 'title' => _x( 'Charge (€)', 'dhl', 'woocommerce-germanized' ),
1322
+ 'type' => 'html',
1323
+ 'id' => 'woocommerce_gzd_dhl_im_portokasse_charge',
1324
+ 'html' => self::get_portokasse_charge_button(),
1325
+ ),
1326
+
1327
+ array( 'type' => 'sectionend', 'id' => 'dhl_internetmarke_portokasse_options' )
1328
+ ) );
1329
+
1330
+ $settings = array_merge( $settings, array(
1331
+ array( 'title' => _x( 'Products', 'dhl', 'woocommerce-germanized' ), 'type' => 'title', 'id' => 'dhl_internetmarke_product_options' ),
1332
+
1333
+ array(
1334
+ 'title' => _x( 'Available Products', 'dhl', 'woocommerce-germanized' ),
1335
+ 'id' => 'woocommerce_gzd_dhl_im_available_products',
1336
+ 'class' => 'wc-enhanced-select',
1337
+ 'desc' => '<div class="wc-gzd-additional-desc">' . sprintf( _x( 'Choose the products you want to be available for your shipments from the list above. Manually <a href="%s">refresh</a> the product list to make sure it is up-to-date.', 'dhl', 'woocommerce-germanized' ), wp_nonce_url( add_query_arg( array( 'action' => 'wc-gzd-dhl-im-product-refresh' ), $settings_url ), 'wc-gzd-dhl-refresh-im-products' ) ) . '</div>',
1338
+ 'type' => 'multiselect',
1339
+ 'options' => self::get_products(),
1340
+ 'default' => self::get_internetmarke_default_available_products(),
1341
+ ),
1342
+ ) );
1343
+
1344
+ $products = wc_gzd_dhl_get_deutsche_post_products_domestic( false, false );
1345
+
1346
+ if ( ! empty( $products ) ) {
1347
+ $settings = array_merge( $settings, self::get_internetmarke_default_settings() );
1348
+ }
1349
+
1350
+ $settings = array_merge( $settings, array(
1351
+ array( 'type' => 'sectionend', 'id' => 'dhl_internetmarke_product_options' ),
1352
+ array( 'title' => _x( 'Printing', 'dhl', 'woocommerce-germanized' ), 'type' => 'title', 'id' => 'dhl_internetmarke_print_options' ),
1353
+ ) );
1354
+
1355
+ $settings = array_merge( $settings, self::get_internetmarke_printing_settings() );
1356
+
1357
+ $settings = array_merge( $settings, array(
1358
+ array( 'type' => 'sectionend', 'id' => 'dhl_internetmarke_print_options' )
1359
+ ) );
1360
+ } elseif ( $api->has_errors() ) {
1361
+ $settings = array_merge( $settings, array(
1362
+ array( 'title' => _x( 'API Error', 'dhl', 'woocommerce-germanized' ), 'type' => 'title', 'id' => 'dhl_internetmarke_api_error', 'desc' => '<div class="notice inline notice-error"><p>' . implode( ", ", $api->get_errors()->get_error_messages() ) . '</p></div>' ),
1363
+ array( 'type' => 'sectionend', 'id' => 'dhl_internetmarke_api_error' )
1364
+ ) );
1365
+ }
1366
+ }
1367
+
1368
+ $settings = array_merge( $settings, array(
1369
+ array( 'title' => _x( 'Automation', 'dhl', 'woocommerce-germanized' ), 'type' => 'title', 'id' => 'dhl_internetmarke_auto_options' ),
1370
+ ) );
1371
+
1372
+ $settings = array_merge( $settings, self::get_internetmarke_automation_settings() );
1373
+
1374
+ $settings = array_merge( $settings, array(
1375
+ array( 'type' => 'sectionend', 'id' => 'dhl_internetmarke_auto_options' )
1376
+ ) );
1377
+
1378
+ return $settings;
1379
+ }
1380
+
1381
+ public static function get_settings_url( $section = '' ) {
1382
+ return admin_url( 'admin.php?page=wc-settings&tab=germanized-dhl&section=' . $section );
1383
+ }
1384
+
1385
+ protected static function get_internetmarke_default_available_products() {
1386
+ return array(
1387
+ '11',
1388
+ '21',
1389
+ '31',
1390
+ '282',
1391
+ '290',
1392
+ '10246',
1393
+ '10247',
1394
+ '10248',
1395
+ '10249',
1396
+ '10254',
1397
+ '10255',
1398
+ '10256',
1399
+ '10257',
1400
+ );
1401
+ }
1402
+
1403
+ protected static function get_products() {
1404
+ $products = Package::get_internetmarke_api()->get_products();
1405
+ $options = wc_gzd_dhl_im_get_product_list( $products, false );
1406
+
1407
+ return $options;
1408
+ }
1409
+
1410
+ protected static function get_portokasse_charge_button() {
1411
+ if ( ! Package::get_internetmarke_api()->get_user() ) {
1412
+ return '';
1413
+ }
1414
+
1415
+ $balance = Package::get_internetmarke_api()->get_balance();
1416
+ $user_token = Package::get_internetmarke_api()->get_user()->getUserToken();
1417
+ $settings_url = self::get_settings_url( 'internetmarke' );
1418
+
1419
+ $html = '
1420
+ <input type="text" placeholder="10.00" style="max-width: 150px; margin-right: 10px;" class="wc-input-price short" name="woocommerce_gzd_dhl_im_portokasse_charge_amount" id="woocommerce_gzd_dhl_im_portokasse_charge_amount" />
1421
+ <a id="woocommerce_gzd_dhl_im_portokasse_charge" class="button button-secondary" data-url="https://portokasse.deutschepost.de/portokasse/marketplace/enter-app-payment" data-success_url="' . esc_url( add_query_arg( array( 'wallet-charge-success' => 'yes' ), $settings_url ) ) . '" data-cancel_url="' . esc_url( add_query_arg( array( 'wallet-charge-success' => 'no' ), $settings_url ) ) . '" data-partner_id="' . esc_attr( Package::get_internetmarke_partner_id() ) . '" data-key_phase="' . esc_attr( Package::get_internetmarke_key_phase() ) . '" data-user_token="' . esc_attr( $user_token ) . '" data-schluessel_dpwn_partner="' . esc_attr( Package::get_internetmarke_token() ) . '" data-wallet="' . esc_attr( $balance ) . '">' . _x( 'Charge Portokasse', 'dhl', 'woocommerce-germanized' ) . '</a>
1422
+ <p class="description">' . sprintf( _x( 'The minimum amount is %s', 'dhl', 'woocommerce-germanized' ), wc_price( 10, array( 'currency' => 'EUR' ) ) ) . '</p>
1423
+ ';
1424
+
1425
+ return $html;
1426
+ }
1427
+
1428
+ public static function get_new_customer_label( $current_section = '' ) {
1429
+ $label = '';
1430
+
1431
+ if ( empty( $current_section ) ) {
1432
+ $label = '<a href="https://www.dhl.de/de/geschaeftskunden/paket/kunde-werden/angebot-dhl-geschaeftskunden-online.html" class="page-title-action" target="_blank">' . _x( 'Not yet a customer?', 'dhl', 'woocommerce-germanized' ) . '</a>';
1433
+ } elseif( 'internetmarke' === $current_section ) {
1434
+ $label = '<a href="https://portokasse.deutschepost.de/portokasse/#!/register/" class="page-title-action" target="_blank">' . _x( 'Not yet a customer?', 'dhl', 'woocommerce-germanized' ) . '</a>';
1435
+ }
1436
+
1437
+ return $label;
1438
+ }
1439
+
1440
  public static function get_settings( $current_section = '' ) {
1441
  $settings = array();
1442
 
1448
  $settings = self::get_service_settings();
1449
  } elseif( 'pickup' === $current_section && Package::base_country_supports( 'pickup' ) ) {
1450
  $settings = self::get_pickup_settings();
1451
+ } elseif( 'internetmarke' === $current_section ) {
1452
+ $settings = self::get_internetmarke_settings();
1453
  }
1454
 
1455
  return $settings;
1457
 
1458
  public static function get_sections() {
1459
  $sections = array(
1460
+ '' => _x( 'DHL', 'dhl', 'woocommerce-germanized' ),
1461
+ 'labels' => _x( 'DHL Labels', 'dhl', 'woocommerce-germanized' ),
1462
+ 'internetmarke' => _x( 'Internetmarke', 'dhl', 'woocommerce-germanized' ),
1463
+ 'services' => _x( 'Preferred Services', 'dhl', 'woocommerce-germanized' ),
1464
+ 'pickup' => _x( 'Parcel Pickup', 'dhl', 'woocommerce-germanized' ),
1465
  );
1466
 
1467
  if ( ! Package::base_country_supports( 'services' ) ) {
packages/woocommerce-germanized-dhl/src/Ajax.php ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Vendidero\Germanized\DHL;
4
+
5
+ /**
6
+ * WC_Ajax class.
7
+ */
8
+ class Ajax {
9
+
10
+ /**
11
+ * Hook in ajax handlers.
12
+ */
13
+ public static function init() {
14
+ self::add_ajax_events();
15
+ }
16
+
17
+ /**
18
+ * Hook in methods - uses WordPress ajax handlers (admin-ajax).
19
+ */
20
+ public static function add_ajax_events() {
21
+
22
+ $ajax_events = array(
23
+ 'refresh_deutsche_post_label_preview',
24
+ );
25
+
26
+ foreach ( $ajax_events as $ajax_event ) {
27
+ add_action( 'wp_ajax_woocommerce_gzd_dhl_' . $ajax_event, array( __CLASS__, 'suppress_errors' ), 5 );
28
+ add_action( 'wp_ajax_woocommerce_gzd_dhl_' . $ajax_event, array( __CLASS__, $ajax_event ) );
29
+ }
30
+ }
31
+
32
+ public static function suppress_errors() {
33
+ if ( ! WP_DEBUG || ( WP_DEBUG && ! WP_DEBUG_DISPLAY ) ) {
34
+ @ini_set( 'display_errors', 0 ); // Turn off display_errors during AJAX events to prevent malformed JSON.
35
+ }
36
+
37
+ $GLOBALS['wpdb']->hide_errors();
38
+ }
39
+
40
+ /**
41
+ *
42
+ */
43
+ public static function refresh_deutsche_post_label_preview() {
44
+ check_ajax_referer( 'wc-gzd-dhl-refresh-deutsche-post-label-preview', 'security' );
45
+
46
+ if ( ! current_user_can( 'edit_shop_orders' ) || ! isset( $_POST['product_id'] ) ) {
47
+ wp_die( -1 );
48
+ }
49
+
50
+ $selected_services = isset( $_POST['selected_services'] ) ? wc_clean( $_POST['selected_services'] ) : array();
51
+ $im_product_id = absint( $_POST['product_id'] );
52
+ $product_id = 0;
53
+ $is_wp_int = false;
54
+ $response = array(
55
+ 'success' => true,
56
+ 'preview_url' => '',
57
+ 'preview_data' => array(),
58
+ 'fragments' => array(),
59
+ );
60
+
61
+ if ( ! empty( $im_product_id ) ) {
62
+ $product_id = Package::get_internetmarke_api()->get_product_id( $im_product_id );
63
+
64
+ /**
65
+ * Refresh im product id by selected services.
66
+ */
67
+ $im_product_id = Package::get_internetmarke_api()->get_product_code( $im_product_id, $selected_services );
68
+ $preview_url = Package::get_internetmarke_api()->preview_stamp( $im_product_id );
69
+ $preview_data = Package::get_internetmarke_api()->get_product_preview_data( $im_product_id );
70
+ $is_wp_int = Package::get_internetmarke_api()->is_warenpost_international( $im_product_id );
71
+
72
+ if ( $preview_url ) {
73
+ $response['preview_url'] = $preview_url;
74
+ $response['preview_data'] = $preview_data;
75
+ }
76
+ }
77
+
78
+ ob_start();
79
+ include( Package::get_path() . '/includes/admin/views/html-deutsche-post-additional-services.php' );
80
+ $html = ob_get_clean();
81
+
82
+ $response['is_wp_int'] = $is_wp_int;
83
+ $response['fragments']['.wc-gzd-shipment-im-additional-services'] = '<div class="wc-gzd-shipment-im-additional-services">' . $html . '</div>';
84
+
85
+ wp_send_json( $response );
86
+ }
87
+ }
packages/woocommerce-germanized-dhl/src/Api/ImProductList.php ADDED
@@ -0,0 +1,486 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Vendidero\Germanized\DHL\Api;
4
+
5
+ use Vendidero\Germanized\DHL\Package;
6
+
7
+ defined( 'ABSPATH' ) || exit;
8
+
9
+ /**
10
+ * DHL Shipment class.
11
+ */
12
+ class ImProductList {
13
+
14
+ protected $products = null;
15
+
16
+ protected $available_products = null;
17
+
18
+ public function __construct() {}
19
+
20
+ public function get_products( $filters = array() ) {
21
+ if ( is_null( $this->products ) ) {
22
+ $this->load_products();
23
+ }
24
+
25
+ $products = $this->products;
26
+
27
+ return $this->filter_products( $products, $filters );
28
+ }
29
+
30
+ protected function load_products() {
31
+ global $wpdb;
32
+
33
+ $products = $wpdb->get_results( "SELECT * FROM {$wpdb->gzd_dhl_im_products}" );
34
+
35
+ $this->products = $products;
36
+ }
37
+
38
+ protected function load_available_products() {
39
+ global $wpdb;
40
+
41
+ $available_products = Package::get_setting( 'im_available_products' );
42
+
43
+ if ( ! empty( $available_products ) ) {
44
+ $available_products = array_filter( array_map( 'absint', $available_products ) );
45
+ } else {
46
+ $available_products = array();
47
+ }
48
+
49
+ $available_products = array_map( function( $p ) {
50
+ return "'" . esc_sql( $p ) . "'";
51
+ }, $available_products );
52
+
53
+ $available_products = implode( ',', $available_products );
54
+
55
+ $products = $wpdb->get_results( "SELECT * FROM {$wpdb->gzd_dhl_im_products} WHERE product_code IN ($available_products)" );
56
+
57
+ $this->available_products = $products;
58
+ }
59
+
60
+ public function get_product_services( $product_id ) {
61
+ global $wpdb;
62
+
63
+ $services = array();
64
+ $results = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$wpdb->gzd_dhl_im_product_services} WHERE product_service_product_id = %d", $product_id ) );
65
+
66
+ if ( ! empty( $results ) ) {
67
+ foreach( $results as $result ) {
68
+ $services[] = $result->product_service_slug;
69
+ }
70
+ }
71
+
72
+ return $services;
73
+ }
74
+
75
+ /**
76
+ * Returns available service slugs for a certain (parent) product.
77
+ *
78
+ * In case additional services chosen are supplied, only those services (e.g. Zusatzentgelt MBf which is only available if EINSCHREIBEN has been selected)
79
+ * are added which are compatible with the current selection.
80
+ *
81
+ * @param $parent_id
82
+ * @param array $services
83
+ *
84
+ * @return string[]
85
+ */
86
+ public function get_services_for_product( $parent_id, $services = array() ) {
87
+ global $wpdb;
88
+
89
+ $query = "SELECT * FROM {$wpdb->gzd_dhl_im_products}";
90
+ $count = 1;
91
+
92
+ if ( empty( $services ) ) {
93
+ $query .= " INNER JOIN {$wpdb->gzd_dhl_im_product_services} S{$count} ON {$wpdb->gzd_dhl_im_products}.product_id = S{$count}.product_service_product_id";
94
+ } else {
95
+ foreach( $services as $service ) {
96
+ $count++;
97
+
98
+ $query .= $wpdb->prepare( " INNER JOIN {$wpdb->gzd_dhl_im_product_services} S{$count} ON {$wpdb->gzd_dhl_im_products}.product_id = S{$count}.product_service_product_id AND S{$count}.product_service_slug = %s", $service );
99
+ }
100
+ }
101
+
102
+ $query .= $wpdb->prepare(" WHERE {$wpdb->gzd_dhl_im_products}.product_parent_id = %d", $parent_id );
103
+
104
+ if ( empty( $services ) ) {
105
+ $query .= $wpdb->prepare(" AND {$wpdb->gzd_dhl_im_products}.product_service_count = %d", 1 );
106
+ }
107
+
108
+ $results = $wpdb->get_results( $query );
109
+ $available_services = array();
110
+
111
+ if ( ! empty( $results ) ) {
112
+ foreach( $results as $result ) {
113
+ $product_id = $result->product_id;
114
+ $product_services = $wpdb->get_results( $wpdb->prepare( "SELECT product_service_slug FROM {$wpdb->gzd_dhl_im_product_services} WHERE {$wpdb->gzd_dhl_im_product_services}.product_service_product_id = %d", $product_id ) );
115
+
116
+ if ( ! empty( $product_services ) ) {
117
+ foreach( $product_services as $product_service ) {
118
+ $service_slug = $product_service->product_service_slug;
119
+
120
+ if ( ! in_array( $service_slug, $available_services ) ) {
121
+ $available_services[] = $service_slug;
122
+ }
123
+ }
124
+ }
125
+ }
126
+ }
127
+
128
+ return $available_services;
129
+ }
130
+
131
+ /**
132
+ * Returns the product id based on a list of services.
133
+ * In case no services are supplied, the main product is returned.
134
+ *
135
+ * @param $parent_id
136
+ * @param $services
137
+ *
138
+ * @return object|false
139
+ */
140
+ public function get_product_data_by_services( $parent_id, $services = array() ) {
141
+ global $wpdb;
142
+
143
+ $product_data = $this->get_product_data( $parent_id );
144
+
145
+ if ( empty( $product_data ) && $product_data->product_parent_id > 0 ) {
146
+ $parent_id = $product_data->product_parent_id;
147
+ }
148
+
149
+ $query = "SELECT * FROM {$wpdb->gzd_dhl_im_products}";
150
+ $count = 0;
151
+
152
+ if ( ! empty( $services ) ) {
153
+ foreach( $services as $service ) {
154
+ $count++;
155
+ $query .= $wpdb->prepare( " INNER JOIN {$wpdb->gzd_dhl_im_product_services} S{$count} ON {$wpdb->gzd_dhl_im_products}.product_id = S{$count}.product_service_product_id AND S{$count}.product_service_slug = %s", $service );
156
+ }
157
+
158
+ $all_services = array_map( function( $p ) {
159
+ return "'" . esc_sql( $p ) . "'";
160
+ }, $services );
161
+
162
+ $all_services = implode( ',', $all_services );
163
+
164
+ // Add a left join which must be NULL making sure that no other services are linked to that product.
165
+ $query .= " LEFT JOIN {$wpdb->gzd_dhl_im_product_services} S ON {$wpdb->gzd_dhl_im_products}.product_id = S.product_service_product_id AND S.product_service_slug NOT IN ($all_services)";
166
+ $query .= $wpdb->prepare(" WHERE {$wpdb->gzd_dhl_im_products}.product_parent_id = %d AND S.product_service_id IS NULL LIMIT 1", $parent_id );
167
+ } else {
168
+ $query .= $wpdb->prepare(" WHERE {$wpdb->gzd_dhl_im_products}.product_id = %d AND {$wpdb->gzd_dhl_im_products}.product_parent_id = %d LIMIT 1", $parent_id, 0 );
169
+ }
170
+
171
+ $result = $wpdb->get_row( $query );
172
+
173
+ if ( ! empty( $result ) ) {
174
+ return $result;
175
+ } else {
176
+ return false;
177
+ }
178
+ }
179
+
180
+ public function get_available_products( $filters = array() ) {
181
+ if ( is_null( $this->available_products ) ) {
182
+ $this->load_available_products();
183
+ }
184
+
185
+ $products = $this->available_products;
186
+
187
+ return $this->filter_products( $products, $filters );
188
+ }
189
+
190
+ protected function filter_products( $products, $filters = array() ) {
191
+ $shipment_weight = false;
192
+
193
+ if ( array_key_exists( 'shipment_weight', $filters ) ) {
194
+ $shipment_weight = $filters['shipment_weight'];
195
+
196
+ unset( $filters['shipment_weight'] );
197
+ }
198
+
199
+ $products = wp_list_filter( $products, $filters );
200
+
201
+ if ( false !== $shipment_weight ) {
202
+ foreach( $products as $key => $product ) {
203
+ if ( 0 !== $product->product_weight_min ) {
204
+ if ( $product->product_weight_min > $shipment_weight ) {
205
+ unset( $products[ $key ] );
206
+ continue;
207
+ }
208
+ }
209
+
210
+ if ( 0 !== $product->product_weight_max ) {
211
+ if ( $product->product_weight_max < $shipment_weight ) {
212
+ unset( $products[ $key ] );
213
+ continue;
214
+ }
215
+ }
216
+ }
217
+ }
218
+
219
+ return array_values( $products );
220
+ }
221
+
222
+ public function get_base_products() {
223
+ return self::get_products( array( 'product_parent_id' => 0 ) );
224
+ }
225
+
226
+ public function get_product_data_by_code( $product_code ) {
227
+ global $wpdb;
228
+
229
+ $product = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->gzd_dhl_im_products} WHERE product_code = %s", $product_code ) );
230
+
231
+ return $product;
232
+ }
233
+
234
+ public function get_product_data( $product_id ) {
235
+ global $wpdb;
236
+
237
+ $product = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->gzd_dhl_im_products} WHERE product_id = %d", $product_id ) );
238
+
239
+ return $product;
240
+ }
241
+
242
+ private function get_information_text( $stamp_type ) {
243
+ $information_text = '';
244
+
245
+ foreach ( $stamp_type as $stamp ) {
246
+ if ( $stamp->name == 'Internetmarke' ) {
247
+ foreach ( $stamp->propertyList as $properties ) {
248
+ foreach ( $properties as $property ) {
249
+ if ( $property->name == 'InformationText' ) {
250
+ $information_text = $property->propertyValue->alphanumericValue->fixValue;
251
+ }
252
+ }
253
+ }
254
+ }
255
+ }
256
+
257
+ return $information_text;
258
+ }
259
+
260
+ protected function get_dimensions( $dimensions, $type = 'width' ) {
261
+ $data = array(
262
+ "product_{$type}_min" => null,
263
+ "product_{$type}_max" => null,
264
+ "product_{$type}_unit" => null,
265
+ );
266
+
267
+ if ( property_exists( $dimensions, $type ) ) {
268
+ $d = $dimensions->{ $type };
269
+
270
+ $data["product_{$type}_min"] = property_exists( $d, 'minValue' ) ? $d->minValue : null;
271
+ $data["product_{$type}_max"] = property_exists( $d, 'maxValue' ) ? $d->maxValue : null;
272
+ $data["product_{$type}_unit"] = property_exists( $d, 'unit' ) ? $d->unit : null;
273
+ }
274
+
275
+ return $data;
276
+ }
277
+
278
+ public function get_additional_services() {
279
+ return array(
280
+ 'PRIO' => _x( 'PRIO', 'dhl', 'woocommerce-germanized' ),
281
+ 'ESEW' => _x( 'Einschreiben (Einwurf)', 'dhl', 'woocommerce-germanized' ),
282
+ 'ESCH' => _x( 'Einschreiben', 'dhl', 'woocommerce-germanized' ),
283
+ 'ESEH' => _x( 'Einschreiben (Eigenhändig)', 'dhl', 'woocommerce-germanized' ),
284
+ 'AS16' => _x( 'Alterssichtprüfung 16', 'dhl', 'woocommerce-germanized' ),
285
+ 'AS18' => _x( 'Alterssichtprüfung 18', 'dhl', 'woocommerce-germanized' ),
286
+ 'ZMBF' => _x( 'Zusatzentgelt MBf', 'dhl', 'woocommerce-germanized' ),
287
+ 'USFT' => _x( 'Unterschrift', 'dhl', 'woocommerce-germanized' ),
288
+ 'TRCK' => _x( 'Tracked', 'dhl', 'woocommerce-germanized' ),
289
+ );
290
+ }
291
+
292
+ public function get_additional_service_title( $service ) {
293
+ $services = $this->get_additional_services();
294
+
295
+ return array_key_exists( $service, $services ) ? $services[ $service ] : '';
296
+ }
297
+
298
+ protected function get_additional_service_identifiers() {
299
+ return array(
300
+ '+ einschreiben einwurf' => 'ESEW',
301
+ '+ einschreiben + einwurf' => 'ESEW',
302
+ '+ einschreiben + eigenhändig' => 'ESEH',
303
+ '+ einschreiben' => 'ESCH',
304
+ '+ zusatzentgelt mbf' => 'ZMBF',
305
+ '+ prio' => 'PRIO',
306
+ 'unterschrift' => 'USFT',
307
+ 'tracked' => 'TRCK',
308
+ );
309
+ }
310
+
311
+ protected function is_additional_service( $slug ) {
312
+ $service_slug = $this->get_product_service_slugs( $slug );
313
+
314
+ return ! empty( $service_slug ) ? true : false;
315
+ }
316
+
317
+ protected function get_product_base_slug( $slug ) {
318
+ $additional_services = $this->get_additional_service_identifiers();
319
+ $slug = str_replace( 'integral', '', $slug );
320
+
321
+ foreach( array_keys( $additional_services ) as $identifier ) {
322
+ $slug = str_replace( $identifier, ' ', $slug );
323
+ }
324
+
325
+ return $this->sanitize_product_slug( $slug );
326
+ }
327
+
328
+ protected function get_product_service_slugs( $slug ) {
329
+ $service_slugs = array();
330
+ $has_einschreiben = false;
331
+
332
+ foreach( $this->get_additional_service_identifiers() as $identifier => $service ) {
333
+ if ( strpos( $slug, $identifier ) !== false ) {
334
+ if ( strpos( $identifier, 'einschreiben' ) !== false ) {
335
+ if ( ! $has_einschreiben ) {
336
+ $has_einschreiben = true;
337
+ $service_slugs[] = $service;
338
+ }
339
+ } elseif( strpos( $slug, $identifier ) !== false ) {
340
+ $service_slugs[] = $service;
341
+ }
342
+ }
343
+ }
344
+
345
+ return array_unique( $service_slugs );
346
+ }
347
+
348
+ protected function sanitize_product_slug( $product_name ) {
349
+ $product_name = trim( mb_strtolower( $product_name ) );
350
+
351
+ // Remove duplicate whitespaces
352
+ $product_name = preg_replace( '/\s+/', ' ', $product_name );
353
+
354
+ return $product_name;
355
+ }
356
+
357
+ public function update() {
358
+ global $wpdb;
359
+
360
+ $product_soap = new ImProductsSoap();
361
+ $result = new \WP_Error();
362
+
363
+ try {
364
+ $product_list = $product_soap->getProducts();
365
+
366
+ $wpdb->query( "TRUNCATE TABLE {$wpdb->gzd_dhl_im_products}" );
367
+ $wpdb->query( "TRUNCATE TABLE {$wpdb->gzd_dhl_im_product_services}" );
368
+
369
+ $products = array(
370
+ 'sales' => $product_list->Response->salesProductList->SalesProduct,
371
+ 'additional' => $product_list->Response->additionalProductList->AdditionalProduct,
372
+ 'basic' => $product_list->Response->basicProductList->BasicProduct
373
+ );
374
+
375
+ $products_with_additional_service = array();
376
+
377
+ foreach( $products as $product_type => $inner_products ) {
378
+ foreach( $inner_products as $product ) {
379
+
380
+ $extended_identifier = $product->extendedIdentifier;
381
+ $extern_identifier = property_exists( $extended_identifier, 'externIdentifier' ) ? $extended_identifier->externIdentifier[0] : new \stdClass();
382
+
383
+ if ( ! property_exists( $extern_identifier, 'id' ) || empty( $extern_identifier->id ) ) {
384
+ continue;
385
+ }
386
+
387
+ $to_insert = array(
388
+ 'product_im_id' => $extended_identifier->{'ProdWS-ID'},
389
+ 'product_code' => property_exists( $extern_identifier, 'id' ) ? $extern_identifier->id : $extended_identifier->{'ProdWS-ID'},
390
+ 'product_name' => property_exists( $extern_identifier, 'name' ) ? $extern_identifier->name : $extended_identifier->name,
391
+ 'product_type' => $product_type,
392
+ 'product_annotation' => property_exists( $extended_identifier, 'annotation' ) ? $extended_identifier->annotation : '',
393
+ 'product_description' => property_exists( $extended_identifier, 'description' ) ? $extended_identifier->description : '',
394
+ 'product_destination' => $extended_identifier->destination,
395
+ 'product_price' => property_exists( $product->priceDefinition, 'price' ) ? Package::eur_to_cents( $product->priceDefinition->price->calculatedGrossPrice->value ) : Package::eur_to_cents( $product->priceDefinition->grossPrice->value ),
396
+ 'product_information_text' => property_exists( $product, 'stampTypeList' ) ? $this->get_information_text( (array) $product->stampTypeList->stampType ) : '',
397
+ 'product_is_wp_int' => false,
398
+ );
399
+
400
+ $product_slug = $this->sanitize_product_slug( $to_insert['product_name'] );
401
+
402
+ /**
403
+ * Exclude national Warenpost as this service won't be available
404
+ * in the future (only via DHL).
405
+ */
406
+ if ( strpos( $product_slug, 'warenpost' ) !== false && 'international' !== $to_insert['product_destination'] ) {
407
+ continue;
408
+ }
409
+
410
+ /**
411
+ * Warenpost International
412
+ */
413
+ if ( strpos( $product_slug, 'warenpost' ) !== false ) {
414
+ $to_insert['product_is_wp_int'] = 1;
415
+ }
416
+
417
+ /**
418
+ * EU Warenpost
419
+ */
420
+ if ( strpos( $product_slug, 'warenpost' ) !== false && strpos( $product_slug, '(eu' ) !== false ) {
421
+ $to_insert['product_destination'] = 'eu';
422
+ }
423
+
424
+ if ( property_exists( $product, 'dimensionList' ) ) {
425
+ $dimensions = $product->dimensionList;
426
+
427
+ $to_insert = array_merge( $to_insert, $this->get_dimensions( $dimensions, 'width' ) );
428
+ $to_insert = array_merge( $to_insert, $this->get_dimensions( $dimensions, 'height' ) );
429
+ $to_insert = array_merge( $to_insert, $this->get_dimensions( $dimensions, 'length' ) );
430
+ }
431
+
432
+ if ( property_exists( $product, 'weight' ) ) {
433
+ $to_insert = array_merge( $to_insert, $this->get_dimensions( $product, 'weight' ) );
434
+ }
435
+
436
+ $to_insert['product_slug'] = $this->sanitize_product_slug( $to_insert['product_name'] );
437
+
438
+ $to_insert = array_map( 'wc_clean', $to_insert );
439
+
440
+ /**
441
+ * Skip product creation if this is an additional service
442
+ */
443
+ if ( $this->is_additional_service( $to_insert['product_slug'] ) ) {
444
+ $products_with_additional_service[] = $to_insert;
445
+
446
+ continue;
447
+ }
448
+
449
+ $wpdb->insert( $wpdb->gzd_dhl_im_products, $to_insert );
450
+ }
451
+ }
452
+
453
+ foreach( $products_with_additional_service as $product_to_insert ) {
454
+ $product_base_slug = $this->get_product_base_slug( $product_to_insert['product_slug'] );
455
+ $parent_product = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->gzd_dhl_im_products} WHERE product_slug = %s", $product_base_slug ) );
456
+ $service_slugs = $this->get_product_service_slugs( $product_to_insert['product_slug'] );
457
+
458
+ if ( ! empty( $parent_product ) && ! empty( $service_slugs ) ) {
459
+ $product_to_insert['product_parent_id'] = $parent_product->product_id;
460
+ $product_to_insert['product_service_count'] = sizeof( $service_slugs );
461
+ }
462
+
463
+ $wpdb->insert( $wpdb->gzd_dhl_im_products, $product_to_insert );
464
+
465
+ $product_id = $wpdb->insert_id;
466
+
467
+ if ( $product_id && ! empty( $parent_product ) && ! empty( $service_slugs ) ) {
468
+ foreach( $service_slugs as $service_slug ) {
469
+ $service_insert = array(
470
+ 'product_service_product_id' => $product_id,
471
+ 'product_service_product_parent_id' => $parent_product->product_id,
472
+ 'product_service_slug' => $service_slug,
473
+ );
474
+
475
+ $wpdb->insert( $wpdb->gzd_dhl_im_product_services, $service_insert );
476
+ }
477
+ }
478
+ }
479
+
480
+ } catch( \Exception $e ) {
481
+ $result->add( 'soap', $e->getMessage() );
482
+ }
483
+
484
+ return wc_gzd_dhl_wp_error_has_errors( $result ) ? $result : true;
485
+ }
486
+ }
packages/woocommerce-germanized-dhl/src/Api/ImProductsSoap.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Vendidero\Germanized\DHL\Api;
4
+
5
+ use Vendidero\Germanized\DHL\Package;
6
+ use WsdlToPhp\WsSecurity\WsSecurity;
7
+
8
+ defined( 'ABSPATH' ) || exit;
9
+
10
+ class ImProductsSoap extends \SoapClient {
11
+
12
+ public function __construct( $options = array(), $wsdl = null ) {
13
+ $options = array_merge( array( 'features' => SOAP_SINGLE_ELEMENT_ARRAYS ), $options );
14
+
15
+ if ( $wsdl === null ) {
16
+ $wsdl = 'https://prodws.deutschepost.de:8443/ProdWSProvider_1_1/prodws?wsdl';
17
+ }
18
+
19
+ parent::__construct( $wsdl, $options );
20
+
21
+ $this->__setSoapHeaders( $this->get_headers() );
22
+ }
23
+
24
+ protected function get_headers() {
25
+ return WsSecurity::createWsSecuritySoapHeader( Package::get_internetmarke_product_username(), Package::get_internetmarke_product_password() );
26
+ }
27
+
28
+ public function getProducts( $dedicatedProducts = 1 ) {
29
+ return $this->__soapCall(
30
+ 'getProductList',
31
+ array(
32
+ 'getProductListRequest' => array(
33
+ 'mandantID' => Package::get_internetmarke_product_mandant_id(),
34
+ 'dedicatedProducts' => $dedicatedProducts,
35
+ 'responseMode' => 0
36
+ )
37
+ )
38
+ );
39
+ }
40
+ }
packages/woocommerce-germanized-dhl/src/Api/ImRefundSoap.php ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Vendidero\Germanized\DHL\Api;
4
+
5
+ use baltpeter\Internetmarke\PartnerInformation;
6
+ use baltpeter\Internetmarke\User;
7
+ use Vendidero\Germanized\DHL\Package;
8
+
9
+ class ImRefundSoap extends \SoapClient {
10
+
11
+ /**
12
+ * Service constructor.
13
+ *
14
+ * @param $partner_information PartnerInformation
15
+ * @param array $options A array of config values for `SoapClient` (see PHP docs)
16
+ * @param string $wsdl The wsdl file to use (defaults to 'https://internetmarke.deutschepost.de/OneClickForAppV3?wsdl')
17
+ */
18
+ public function __construct( $partner_information, $options = array(), $wsdl = null ) {
19
+ $this->partner_information = $partner_information;
20
+ $options = array_merge( array( 'features' => SOAP_SINGLE_ELEMENT_ARRAYS ), $options );
21
+
22
+ if ( $wsdl === null ) {
23
+ $wsdl = 'https://internetmarke.deutschepost.de/OneClickForRefund?wsdl';
24
+ }
25
+
26
+ parent::__construct( $wsdl, $options );
27
+
28
+ $this->__setSoapHeaders( $this->partner_information->soapHeaderArray() );
29
+ }
30
+
31
+ /**
32
+ * Authenticate user request.
33
+ *
34
+ * @return User
35
+ */
36
+ public function authenticateUser( $username, $password ) {
37
+ $result = $this->__soapCall( 'authenticateUser', array(
38
+ 'AuthenticateUserRequest' => array(
39
+ 'username' => $username,
40
+ 'password' => $password
41
+ )
42
+ ) );
43
+
44
+ return User::fromStdObject( $result );
45
+ }
46
+
47
+ /**
48
+ * Return retoure id.
49
+ *
50
+ * @return int
51
+ */
52
+ public function createRetoureId() {
53
+ $result = $this->__soapCall( 'createRetoureId', array(
54
+ 'CreateRetoureIdRequest' => ''
55
+ ) );
56
+
57
+ return $result->shopRetoureId;
58
+ }
59
+
60
+ /**
61
+ * Retoure/refund selected shipping labels.
62
+ *
63
+ * @param $user_token
64
+ * @param $shop_retoure_id
65
+ * @param $shop_retoure_id
66
+ * @param $voucher_set
67
+ *
68
+ * @return int
69
+ */
70
+ public function retoureVouchers( $user_token, $shop_retoure_id, $shop_order_id, $voucher_set = array() ) {
71
+ $data = array(
72
+ 'RetoureVouchersRequest' => array(
73
+ 'userToken' => $user_token,
74
+ 'shopRetoureId' => $shop_retoure_id,
75
+ 'shoppingCart' => array(
76
+ 'shopOrderId' => $shop_order_id
77
+ )
78
+ )
79
+ );
80
+
81
+ if ( ! empty( $voucher_set ) ) {
82
+ $data['RetoureVouchersRequest']['shoppingCart']['voucherSet'] = array();
83
+
84
+ foreach ( $voucher_set as $voucher_no ) {
85
+ $data['RetoureVouchersRequest']['shoppingCart']['voucherSet']['voucherNo'] = $voucher_no;
86
+ }
87
+ }
88
+
89
+ $result = $this->__soapCall('retoureVouchers', $data );
90
+
91
+ return $result->retoureTransactionId;
92
+ }
93
+ }
packages/woocommerce-germanized-dhl/src/Api/ImWarenpostIntRest.php ADDED
@@ -0,0 +1,333 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Vendidero\Germanized\DHL\Api;
4
+
5
+ use Exception;
6
+ use Vendidero\Germanized\DHL\DeutschePostLabel;
7
+ use Vendidero\Germanized\DHL\DeutschePostReturnLabel;
8
+ use Vendidero\Germanized\DHL\Package;
9
+
10
+ defined( 'ABSPATH' ) || exit;
11
+
12
+ class ImWarenpostIntRest extends Rest {
13
+
14
+ public function __construct() {
15
+ parent::__construct();
16
+ }
17
+
18
+ public function get_base_url() {
19
+ return self::is_sandbox() ? 'https://api-qa.deutschepost.com' : 'https://api.deutschepost.com';
20
+ }
21
+
22
+ public function get_pdf( $awb ) {
23
+ $pdf = $this->get_request( '/dpi/shipping/v1/shipments/' . $awb . '/itemlabels', array(), 'pdf' );
24
+
25
+ return $pdf;
26
+ }
27
+
28
+ /**
29
+ * Updates the label
30
+ *
31
+ * @param DeutschePostLabel|DeutschePostReturnLabel $label
32
+ * @param \stdClass $result
33
+ *
34
+ * @throws Exception
35
+ */
36
+ public function update_label( &$label, $result ) {
37
+ $order_id = wc_clean( $result->orderId );
38
+ $awb = wc_clean( $result->shipments[0]->awb );
39
+ $barcode = wc_clean( $result->shipments[0]->items[0]->barcode );
40
+ $pdf = $this->get_pdf( $awb );
41
+
42
+ if ( ! $pdf ) {
43
+ throw new Exception( _x( 'Error while fetching label PDF', 'dhl', 'woocommerce-germanized' ) );
44
+ }
45
+
46
+ $filename = wc_gzd_dhl_generate_label_filename( $label, 'dp-wp-int-label' );
47
+
48
+ if ( $path = wc_gzd_dhl_upload_data( $filename, $pdf ) ) {
49
+ $label->set_default_path( $path );
50
+ $label->set_path( $path );
51
+ } else {
52
+ throw new Exception( _x( 'Error while fetching label PDF', 'dhl', 'woocommerce-germanized' ) );
53
+ }
54
+
55
+ $label->set_shop_order_id( $order_id );
56
+ $label->set_wp_int_awb( $awb );
57
+ $label->set_wp_int_barcode( $barcode );
58
+ $label->set_number( $barcode );
59
+
60
+ $label->save();
61
+
62
+ return $label;
63
+ }
64
+
65
+ /**
66
+ * Creates a new order based on the given data
67
+ *
68
+ * @see https://api-qa.deutschepost.com/dpi-apidoc/index_prod_v1.html#/reference/orders/create-order/create-order
69
+ *
70
+ * @param DeutschePostLabel|DeutschePostReturnLabel $label
71
+ *
72
+ * @throws Exception
73
+ */
74
+ public function create_label( &$label ) {
75
+
76
+ if ( ! $shipment = $label->get_shipment() ) {
77
+ throw new Exception( _x( 'Missing shipment', 'dhl', 'woocommerce-germanized' ) );
78
+ }
79
+
80
+ $customs_data = wc_gzd_dhl_get_shipment_customs_data( $label );
81
+ $positions = array();
82
+ $position_index = 0;
83
+
84
+ foreach( $customs_data['ExportDocPosition'] as $position ) {
85
+ array_push($positions, array(
86
+ 'contentPieceIndexNumber' => $position_index++,
87
+ 'contentPieceHsCode' => $position['customsTariffNumber'],
88
+ 'contentPieceDescription' => substr( $position['description'], 0, 33 ),
89
+ 'contentPieceValue' => $position['customsValue'],
90
+ 'contentPieceNetweight' => wc_get_weight( $position['netWeightInKG'], 'g', 'kg' ),
91
+ 'contentPieceOrigin' => $position['countryCodeOrigin'],
92
+ 'contentPieceAmount' => $position['amount']
93
+ ) );
94
+ }
95
+
96
+ $is_return = is_a( $shipment, 'Vendidero\Germanized\Shipments\ReturnShipment' );
97
+
98
+ if ( $is_return ) {
99
+ $sender_name = ( $shipment->get_sender_company() ? $shipment->get_sender_company() . ' ' : '' ) . $shipment->get_formatted_sender_full_name();
100
+ } else {
101
+ $sender_name = ( Package::get_setting( 'shipper_company' ) ? Package::get_setting( 'shipper_company' ) . ' ' : '' ) . Package::get_setting( 'shipper_name' );
102
+ }
103
+
104
+ $request_data = array(
105
+ 'customerEkp' => $this->get_ekp(),
106
+ 'orderId' => null,
107
+ 'items' => array(
108
+ array(
109
+ 'id' => 0,
110
+ 'product' => $label->get_dhl_product(),
111
+ 'serviceLevel' => 'STANDARD',
112
+ 'recipient' => $shipment->get_formatted_full_name(),
113
+ 'recipientPhone' => $shipment->get_phone(),
114
+ 'recipientEmail' => $shipment->get_email(),
115
+ 'addressLine1' => $shipment->get_address_1(),
116
+ 'addressLine2' => $shipment->get_address_2(),
117
+ 'city' => $shipment->get_city(),
118
+ 'state' => $shipment->get_state(),
119
+ 'postalCode' => $shipment->get_postcode(),
120
+ 'destinationCountry' => $shipment->get_country(),
121
+ 'shipmentAmount' => wc_format_decimal( $shipment->get_total() + $shipment->get_additional_total(), 2 ),
122
+ 'shipmentCurrency' => get_woocommerce_currency(),
123
+ 'shipmentGrossWeight' => wc_get_weight( $label->get_weight(), 'g', 'kg' ),
124
+ 'senderName' => $sender_name,
125
+ 'senderAddressLine1' => $is_return ? $shipment->get_sender_address_1() : Package::get_setting( 'shipper_street' ) . ' ' . Package::get_setting( 'shipper_street_no' ),
126
+ 'senderAddressLine2' => $is_return ? $shipment->get_sender_address_2() : '',
127
+ 'senderCountry' => $is_return ? $shipment->get_sender_country() : Package::get_setting( 'shipper_country' ),
128
+ 'senderCity' => $is_return ? $shipment->get_sender_city() : Package::get_setting( 'shipper_city' ),
129
+ 'senderPostalCode' => $is_return ? $shipment->get_sender_postcode() : Package::get_setting( 'shipper_postcode' ),
130
+ 'senderPhone' => $is_return ? $shipment->get_sender_phone() : Package::get_setting( 'shipper_phone' ),
131
+ 'senderEmail' => $is_return ? $shipment->get_sender_email() : Package::get_setting( 'shipper_email' ),
132
+ 'returnItemWanted' => false,
133
+ 'shipmentNaturetype' => strtoupper( apply_filters( 'woocommerce_gzd_deutsche_post_label_api_customs_shipment_nature_type', ( is_a( $label, 'Vendidero\Germanized\DHL\DeutschePostReturnLabel' ) ? 'RETURN_GOODS' : 'SALE_GOODS' ), $label ) ),
134
+ 'contents' => $positions
135
+ )
136
+ ),
137
+ 'orderStatus' => 'FINALIZE',
138
+ 'paperwork' => array(
139
+ 'contactName' => $sender_name,
140
+ 'awbCopyCount' => 1,
141
+ 'jobReference' => null,
142
+ 'pickupType' => 'CUSTOMER_DROP_OFF',
143
+ 'pickupLocation' => null,
144
+ 'pickupDate' => null,
145
+ 'pickupTimeSlot' => null,
146
+ 'telephoneNumber' => null
147
+ )
148
+ );
149
+
150
+ $transmit_data = 'yes' === Package::get_setting( 'label_force_email_transfer' );
151
+
152
+ if ( ! apply_filters( 'woocommerce_gzd_deutsche_post_label_api_customs_transmit_communication_data', $transmit_data ) ) {
153
+ if ( $is_return ) {
154
+ $request_data['senderPhone'] = '';
155
+ $request_data['senderEmail'] = '';
156
+ } else {
157
+ $request_data['recipientPhone'] = '';
158
+ $request_data['recipientEmail'] = '';
159
+ }
160
+ }
161
+
162
+ $request_data = $this->walk_recursive_remove( $request_data );
163
+ $result = $this->post_request( '/dpi/shipping/v1/orders', json_encode( $request_data, JSON_PRETTY_PRINT ) );
164
+
165
+ if ( isset( $result->shipments ) ) {
166
+ return $this->update_label( $label, $result );
167
+ } else {
168
+ throw new Exception( _x( 'Invalid API response', 'dhl', 'woocommerce-germanized' ) );
169
+ }
170
+ }
171
+
172
+ protected function get_user_token() {
173
+ $user_token = false;
174
+
175
+ delete_transient( 'woocommerce_gzd_im_wp_int_user_token' );
176
+
177
+ if ( get_transient( 'woocommerce_gzd_im_wp_int_user_token' ) ) {
178
+ $user_token = get_transient( 'woocommerce_gzd_im_wp_int_user_token' );
179
+ } else {
180
+ $response_body = $this->get_request( '/v1/auth/accesstoken', array(), 'xml' );
181
+
182
+ $reg_exp_ut = "/<userToken>(.+?)<\/userToken>/";
183
+
184
+ if ( preg_match( $reg_exp_ut, $response_body, $match_ut ) ) {
185
+ $user_token = $match_ut[1];
186
+
187
+ set_transient( 'woocommerce_gzd_im_wp_int_user_token', $user_token, ( MINUTE_IN_SECONDS * 3 ) );
188
+ }
189
+ }
190
+
191
+ if ( ! $user_token ) {
192
+ throw new Exception( _x( 'Error while authenticating user.', 'dhl', 'woocommerce-germanized' ) );
193
+ }
194
+
195
+ return $user_token;
196
+ }
197
+
198
+ protected function is_sandbox() {
199
+ return Package::is_debug_mode() && defined( 'WC_GZD_DHL_IM_WP_SANDBOX_USER' );
200
+ }
201
+
202
+ protected function get_auth() {
203
+ return $this->get_basic_auth_encode( Package::get_internetmarke_warenpost_int_username(), Package::get_internetmarke_warenpost_int_password() );
204
+ }
205
+
206
+ /**
207
+ * Could be either:
208
+ *
209
+ * - application/pdf (A6)
210
+ * - application/pdf+singlepage (A6)
211
+ * - application/pdf+singlepage+6x4 (6x4 inch)
212
+ * - application/zpl (A6)
213
+ * - application/zpl+rotated (rotated by 90 degrees for label printers)
214
+ * - application/zpl+6x4 (6x4 inch)
215
+ * - application/zpl+rotated+6x4 (6x4 inch and rotated by 90 degrees for label printers)
216
+ *
217
+ * @return string
218
+ */
219
+ protected function get_pdf_accept_header() {
220
+ return 'application/pdf';
221
+ }
222
+
223
+ protected function set_header( $authorization = '', $request_type = 'GET', $endpoint = '' ) {
224
+ if ( '/v1/auth/accesstoken' !== $endpoint ) {
225
+ $token = $this->get_user_token();
226
+ $authorization = $token;
227
+ }
228
+
229
+ parent::set_header( $authorization );
230
+
231
+ /**
232
+ * Add PDF header to make sure we are receiving the right file type from DP API
233
+ */
234
+ if ( strpos( $endpoint, 'itemlabels' ) !== false ) {
235
+ $this->remote_header['Accept'] = $this->get_pdf_accept_header();
236
+ }
237
+
238
+ $date = new \DateTime( null, new \DateTimeZone( 'Europe/Berlin' ) );
239
+
240
+ $this->remote_header = array_merge( $this->remote_header, array(
241
+ 'KEY_PHASE' => $this->get_key_phase(),
242
+ 'PARTNER_ID' => $this->get_partner_id(),
243
+ 'REQUEST_TIMESTAMP' => $date->format( 'dmY-His' ),
244
+ 'PARTNER_SIGNATURE' => $this->get_signature( $date ),
245
+ ) );
246
+ }
247
+
248
+ protected function get_ekp() {
249
+ return Package::get_internetmarke_warenpost_int_ekp();
250
+ }
251
+
252
+ protected function walk_recursive_remove( array $array ) {
253
+ foreach ( $array as $k => $v ) {
254
+
255
+ if ( is_array( $v ) ) {
256
+ $array[ $k ] = $this->walk_recursive_remove( $v );
257
+ }
258
+
259
+ // Explicitly allow street_number fields to equal 0
260
+ if ( '' === $v || is_null( $v ) ) {
261
+ unset( $array[ $k ] );
262
+ }
263
+ }
264
+
265
+ return $array;
266
+ }
267
+
268
+ protected function get_basic_auth_encode( $user, $pass ) {
269
+ return base64_encode( $user . ':' . $pass );
270
+ }
271
+
272
+ protected function handle_get_response( $response_code, $response_body ) {
273
+ switch ( $response_code ) {
274
+ case '200':
275
+ case '201':
276
+ break;
277
+ default:
278
+ throw new Exception( _x( 'Error during Warenpost International request.', 'dhl', 'woocommerce-germanized' ) );
279
+ }
280
+ }
281
+
282
+ protected function handle_post_response( $response_code, $response_body ) {
283
+ switch ( $response_code ) {
284
+ case '200':
285
+ case '201':
286
+ break;
287
+ default:
288
+ $error_message = '';
289
+
290
+ if ( isset( $response_body->messages ) ) {
291
+ foreach( $response_body->messages as $message ) {
292
+ $error_message .= ( ! empty( $error_message ) ? ', ' : '' ) . $message;
293
+ }
294
+ }
295
+
296
+ throw new Exception( sprintf( _x( 'Error during request: %s', 'dhl', 'woocommerce-germanized' ), $error_message ) );
297
+ }
298
+ }
299
+
300
+ protected function get_partner_id() {
301
+ return $this->is_sandbox() ? 'DP_LT' : Package::get_internetmarke_partner_id();
302
+ }
303
+
304
+ protected function get_key_phase() {
305
+ return $this->is_sandbox() ? 1 : Package::get_internetmarke_key_phase();
306
+ }
307
+
308
+ protected function get_partner_token() {
309
+ return Package::get_internetmarke_token();
310
+ }
311
+
312
+ protected function get_signature( $date = null ) {
313
+ if ( ! $date ) {
314
+ $date = new \DateTime( null, new \DateTimeZone( 'Europe/Berlin' ) );
315
+ }
316
+
317
+ return substr(
318
+ md5(
319
+ join(
320
+ '::',
321
+ array(
322
+ $this->get_partner_id(),
323
+ $date->format('dmY-His'),
324
+ $this->get_key_phase(),
325
+ $this->get_partner_token()
326
+ )
327
+ )
328
+ ),
329
+ 0,
330
+ 8
331
+ );
332
+ }
333
+ }
packages/woocommerce-germanized-dhl/src/Api/Internetmarke.php ADDED
@@ -0,0 +1,785 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Vendidero\Germanized\DHL\Api;
4
+
5
+ use baltpeter\Internetmarke\Address;
6
+ use baltpeter\Internetmarke\CompanyName;
7
+ use baltpeter\Internetmarke\Name;
8
+ use baltpeter\Internetmarke\PageFormat;
9
+ use baltpeter\Internetmarke\PartnerInformation;
10
+ use baltpeter\Internetmarke\PersonName;
11
+ use baltpeter\Internetmarke\Service;
12
+ use baltpeter\Internetmarke\User;
13
+ use Vendidero\Germanized\DHL\Admin\Settings;
14
+ use Vendidero\Germanized\DHL\DeutschePostLabel;
15
+ use Vendidero\Germanized\DHL\Package;
16
+
17
+ defined( 'ABSPATH' ) || exit;
18
+
19
+ class Internetmarke {
20
+
21
+ /**
22
+ * @var PartnerInformation|null
23
+ */
24
+ protected $partner = null;
25
+
26
+ /**
27
+ * @var Service|null
28
+ */
29
+ protected $api = null;
30
+
31
+ protected $wp_int_api = null;
32
+
33
+ /**
34
+ * @var User|null
35
+ */
36
+ protected $user = null;
37
+
38
+ /**
39
+ * @var \WP_Error
40
+ */
41
+ protected $errors = null;
42
+
43
+ /**
44
+ * @var ImProductList|null
45
+ */
46
+ protected $products = null;
47
+
48
+ /**
49
+ * @var ImRefundSoap|null
50
+ */
51
+ protected $refund_api = null;
52
+
53
+ /**
54
+ * @var null|PageFormat[]
55
+ */
56
+ protected $page_formats = null;
57
+
58
+ public function __construct() {
59
+ $this->partner = new PartnerInformation( Package::get_internetmarke_partner_id(), Package::get_internetmarke_key_phase(), Package::get_internetmarke_token() );
60
+ $this->errors = new \WP_Error();
61
+
62
+ try {
63
+ if ( ! Package::has_load_dependencies() ) {
64
+ throw new \Exception( sprintf( _x( 'To enable communication between your shop and DHL, the PHP <a href="%s">SOAPClient</a> is required. Please contact your host and make sure that SOAPClient is <a href="%s">installed</a>.', 'dhl', 'woocommerce-germanize-dhl' ), 'https://www.php.net/manual/class.soapclient.php', admin_url( 'admin.php?page=wc-status' ) ) );
65
+ }
66
+
67
+ $this->api = new Service( $this->partner, array(), Package::get_wsdl_file( 'https://internetmarke.deutschepost.de/OneClickForAppV3?wsdl' ) );
68
+ } catch( \Exception $e ) {
69
+ $this->errors->add( 'startup', sprintf( _x( 'Error while instantiating main Internetmarke API: %s', 'dhl', 'woocommerce-germanized' ), $e->getMessage() ) );
70
+ }
71
+
72
+ if ( ! Package::is_internetmarke_enabled() ) {
73
+ $this->errors->add( 'startup', _x( 'Internetmarke is disabled. Please enable Internetmarke.', 'dhl', 'woocommerce-germanized' ) );
74
+ }
75
+ }
76
+
77
+ public function auth() {
78
+ if ( Package::get_internetmarke_username() && Package::get_internetmarke_password() ) {
79
+ try {
80
+ $this->errors->remove( 'authentication' );
81
+
82
+ $this->user = $this->api->authenticateUser( Package::get_internetmarke_username(), Package::get_internetmarke_password() );
83
+ } catch( \Exception $e ) {
84
+ $this->errors->add( 'authentication', _x( 'Wrong username or password', 'dhl', 'woocommerce-germanized' ) );
85
+ }
86
+ }
87
+
88
+ if ( ! $this->has_authentication_error() ) {
89
+ return true;
90
+ } else {
91
+ return false;
92
+ }
93
+ }
94
+
95
+ public function has_authentication_error() {
96
+ $errors = $this->errors->get_error_message( 'authentication' );
97
+
98
+ return empty( $errors ) ? false : true;
99
+ }
100
+
101
+ public function get_authentication_error() {
102
+ $error = $this->errors->get_error_message( 'authentication' );
103
+
104
+ return $error;
105
+ }
106
+
107
+ public function has_startup_error() {
108
+ $errors = $this->errors->get_error_message( 'startup' );
109
+
110
+ return empty( $errors ) ? false : true;
111
+ }
112
+
113
+ public function get_startup_error() {
114
+ $error = $this->errors->get_error_message( 'startup' );
115
+
116
+ return $error;
117
+ }
118
+
119
+ public function has_errors() {
120
+ return wc_gzd_dhl_wp_error_has_errors( $this->errors ) ? true : false;
121
+ }
122
+
123
+ public function get_errors() {
124
+ return wc_gzd_dhl_wp_error_has_errors( $this->errors ) ? $this->errors : false;
125
+ }
126
+
127
+ public function is_available() {
128
+ return ! $this->has_authentication_error() && ! $this->has_startup_error();
129
+ }
130
+
131
+ public function get_user() {
132
+ if ( ! $this->user ) {
133
+ $this->auth();
134
+ }
135
+
136
+ if ( $this->user ) {
137
+ return $this->user;
138
+ } else {
139
+ return false;
140
+ }
141
+ }
142
+
143
+ public function get_balance( $force_refresh = false ) {
144
+ $balance = get_transient( 'wc_gzd_dhl_portokasse_balance' );
145
+
146
+ if ( ! $balance || $force_refresh ) {
147
+ if ( $user = $this->get_user() ) {
148
+ $balance = $user->getWalletBalance();
149
+
150
+ set_transient( 'wc_gzd_dhl_portokasse_balance', $user->getWalletBalance(), HOUR_IN_SECONDS );
151
+ } else {
152
+ $balance = 0;
153
+ }
154
+ }
155
+
156
+ return $balance;
157
+ }
158
+
159
+ protected function invalidate_balance() {
160
+ delete_transient( 'wc_gzd_dhl_portokasse_balance' );
161
+ }
162
+
163
+ public function reload_products() {
164
+ $this->products = null;
165
+ }
166
+
167
+ protected function load_products() {
168
+ if ( is_null( $this->products ) ) {
169
+ $this->products = new ImProductList();
170
+ }
171
+
172
+ $transient = get_transient( 'wc_gzd_dhl_im_products_expire' );
173
+
174
+ if ( ! $transient ) {
175
+ $result = $this->products->update();
176
+
177
+ if ( is_wp_error( $result ) ) {
178
+ Package::log( 'Error while refreshing Internetmarke product data: ' . $result->get_error_message() );
179
+ }
180
+
181
+ /**
182
+ * Refresh product data once per day.
183
+ */
184
+ set_transient( 'wc_gzd_dhl_im_products_expire', DAY_IN_SECONDS );
185
+ }
186
+ }
187
+
188
+ public function get_products( $filters = array() ) {
189
+ $this->load_products();
190
+
191
+ return $this->products->get_products( $filters );
192
+ }
193
+
194
+ public function get_base_products() {
195
+ $this->load_products();
196
+
197
+ return $this->products->get_base_products();
198
+ }
199
+
200
+ public function get_available_products( $filters = array() ) {
201
+ $this->load_products();
202
+
203
+ return $this->products->get_available_products( $filters );
204
+ }
205
+
206
+ public function get_product_list() {
207
+ $this->load_products();
208
+
209
+ return $this->products;
210
+ }
211
+
212
+ public function is_warenpost_international( $im_product_code ) {
213
+ $is_wp_int = false;
214
+
215
+ if ( $product_data = $this->get_product_data_by_code( $im_product_code ) ) {
216
+ if ( 1 == $product_data->product_is_wp_int ) {
217
+ return true;
218
+ }
219
+ }
220
+
221
+ return $is_wp_int;
222
+ }
223
+
224
+ public function is_warenpost_international_eu( $im_product_code ) {
225
+ $is_wp_int = false;
226
+
227
+ if ( $product_data = $this->get_product_data_by_code( $im_product_code ) ) {
228
+ if ( 1 == $product_data->product_is_wp_int && 'eu' === $product_data->product_destination ) {
229
+ return true;
230
+ }
231
+ }
232
+
233
+ return $is_wp_int;
234
+ }
235
+
236
+ protected function format_dimensions( $product, $type = 'length' ) {
237
+ $dimension = '';
238
+
239
+ if ( ! empty( $product->{"product_{$type}_min"} ) ) {
240
+ $dimension .= $product->{"product_{$type}_min"};
241
+
242
+ if ( ! empty( $product->{"product_{$type}_max"} ) ) {
243
+ $dimension .= '-' . $product->{"product_{$type}_max"};
244
+ }
245
+ } elseif( 0 == $product->{"product_{$type}_min"} ) {
246
+ $dimension = sprintf( _x( 'until %s', 'dhl', 'woocommerce-germanized' ), $product->{"product_{$type}_max"} );
247
+ }
248
+
249
+ if ( ! empty( $dimension ) ) {
250
+ $dimension .= ' ' . $product->{"product_{$type}_unit"};
251
+ }
252
+
253
+ return $dimension;
254
+ }
255
+
256
+ public function get_product_data_by_code( $im_product_id ) {
257
+ $this->load_products();
258
+
259
+ return $this->products->get_product_data_by_code( $im_product_id );
260
+ }
261
+
262
+ public function get_product_data( $product_id ) {
263
+ $this->load_products();
264
+
265
+ return $this->products->get_product_data( $product_id );
266
+ }
267
+
268
+ public function get_product_id( $im_product_id ) {
269
+ $this->load_products();
270
+ $data = $this->products->get_product_data_by_code( $im_product_id );
271
+
272
+ return ( ! empty( $data ) ? $data->product_id : 0 );
273
+ }
274
+
275
+ public function get_product_parent_code( $im_product_id ) {
276
+ $this->load_products();
277
+ $data = $this->products->get_product_data_by_code( $im_product_id );
278
+
279
+ if ( ! empty( $data ) ) {
280
+ if ( $data->product_parent_id > 0 ) {
281
+ $im_product_data = $this->get_product_data( $data->product_parent_id );
282
+
283
+ $im_product_id = $im_product_data->product_code;
284
+ }
285
+ }
286
+
287
+ return $im_product_id;
288
+ }
289
+
290
+ public function get_product_total( $product_code ) {
291
+ $total = 0;
292
+
293
+ if ( $data = $this->get_product_data_by_code( $product_code ) ) {
294
+ $total = $data->product_price;
295
+ }
296
+
297
+ return $total;
298
+ }
299
+
300
+ public function get_available_products_printable() {
301
+ $printable = array();
302
+
303
+ foreach( $this->get_available_products() as $product ) {
304
+ $printable[ $product->product_code ] = $this->get_product_preview_data( $product );
305
+ }
306
+
307
+ return $printable;
308
+ }
309
+
310
+ public function get_product_preview_data( $im_product_id ) {
311
+ $product = is_numeric( $im_product_id ) ? $this->get_product_data_by_code( $im_product_id ) : $im_product_id;
312
+ $formatted = array(
313
+ 'title_formatted' => '',
314
+ 'price_formatted' => '',
315
+ 'description_formatted' => '',
316
+ 'information_text_formatted' => '',
317
+ 'dimensions_formatted' => '',
318
+ );
319
+
320
+ if ( ! $product || ! isset( $product->product_id ) ) {
321
+ return $formatted;
322
+ }
323
+
324
+ $dimensions = array();
325
+ $formatted_length = $this->format_dimensions( $product, 'length' );
326
+ $formatted_width = $this->format_dimensions( $product, 'width' );
327
+ $formatted_height = $this->format_dimensions( $product, 'height' );
328
+ $formatted_weight = $this->format_dimensions( $product, 'weight' );
329
+
330
+ if ( ! empty( $formatted_length ) ) {
331
+ $dimensions[] = sprintf( _x( 'Length: %s', 'dhl', 'woocommerce-germanized' ), $formatted_length );
332
+ }
333
+
334
+ if ( ! empty( $formatted_width ) ) {
335
+ $dimensions[] = sprintf( _x( 'Width: %s', 'dhl', 'woocommerce-germanized' ), $formatted_width );
336
+ }
337
+
338
+ if ( ! empty( $formatted_height ) ) {
339
+ $dimensions[] = sprintf( _x( 'Height: %s', 'dhl', 'woocommerce-germanized' ), $formatted_height );
340
+ }
341
+
342
+ if ( ! empty( $formatted_weight ) ) {
343
+ $dimensions[] = sprintf( _x( 'Weight: %s', 'dhl', 'woocommerce-germanized' ), $formatted_weight );
344
+ }
345
+
346
+ $formatted = array_merge( (array) $product, array(
347
+ 'title_formatted' => wc_gzd_dhl_get_im_product_title( $product->product_name ),
348
+ 'price_formatted' => wc_price( Package::cents_to_eur( $product->product_price ), array( 'currency' => 'EUR' ) ) . ' <span class="price-suffix">' . _x( 'Total', 'dhl', 'woocommerce-germanized' ) . '</span>',
349
+ 'description_formatted' => ! empty( $product->product_annotation ) ? $product->product_annotation : $product->product_description,
350
+ 'information_text_formatted' => $product->product_information_text,
351
+ 'dimensions_formatted' => implode( '<br/>', $dimensions ),
352
+ ) );
353
+
354
+ return $formatted;
355
+ }
356
+
357
+ public function get_page_formats( $force_refresh = false ) {
358
+ if ( is_null( $this->page_formats ) ) {
359
+ $this->page_formats = get_transient( 'wc_gzd_dhl_im_page_formats' );
360
+
361
+ if ( ! $this->page_formats || $force_refresh ) {
362
+ $this->page_formats = array();
363
+
364
+ try {
365
+ $this->page_formats = $this->api->retrievePageFormats();
366
+
367
+ set_transient( 'wc_gzd_dhl_im_page_formats', $this->page_formats, DAY_IN_SECONDS );
368
+ } catch( \Exception $e ) {
369
+ Package::log( 'Error while refreshing Internetmarke page formats: ' . $e->getMessage() );
370
+ }
371
+
372
+ $page_formats = $this->page_formats;
373
+ } else {
374
+ $page_formats = $this->page_formats;
375
+ }
376
+ } else {
377
+ $page_formats = $this->page_formats;
378
+ }
379
+
380
+ return $page_formats;
381
+ }
382
+
383
+ public function get_page_format_list() {
384
+ $formats = $this->get_page_formats();
385
+ $options = array();
386
+
387
+ foreach( $formats as $format ) {
388
+ if ( ! $format->isIsAddressPossible() ) {
389
+ continue;
390
+ }
391
+
392
+ $options[ $format->getId() ] = $format->getName();
393
+ }
394
+
395
+ return $options;
396
+ }
397
+
398
+ public function get_product_services( $im_product_id ) {
399
+ $this->load_products();
400
+
401
+ $product_id = $this->get_product_id( $im_product_id );
402
+
403
+ if ( $product_id ) {
404
+ return $this->products->get_product_services( $product_id );
405
+ }
406
+
407
+ return array();
408
+ }
409
+
410
+ public function get_product_code( $maybe_parent_product_code, $services = array() ) {
411
+ $this->load_products();
412
+
413
+ $product_id = $this->get_product_id( $maybe_parent_product_code );
414
+
415
+ if ( $product_id ) {
416
+ $new_product_data = $this->products->get_product_data_by_services( $product_id, $services );
417
+
418
+ if ( $new_product_data ) {
419
+ return $new_product_data->product_code;
420
+ } else {
421
+ return false;
422
+ }
423
+ }
424
+
425
+ return $maybe_parent_product_code;
426
+ }
427
+
428
+ public function preview_stamp( $product_id, $address_type = 'FrankingZone', $image_id = null ) {
429
+ $preview_url = false;
430
+
431
+ try {
432
+ if ( $this->is_warenpost_international( $product_id ) ) {
433
+ if ( $this->is_warenpost_international_eu( $product_id ) ) {
434
+ $preview_url = trailingslashit( Package::get_assets_url() ) . 'img/wp-int-eu-preview.png';
435
+ } else {
436
+ $preview_url = trailingslashit( Package::get_assets_url() ) . 'img/wp-int-preview.png';
437
+ }
438
+ } else {
439
+ $preview_url = $this->api->retrievePreviewVoucherPng( $product_id, $address_type, $image_id );
440
+ }
441
+ } catch( \Exception $e ) {}
442
+
443
+ return $preview_url;
444
+ }
445
+
446
+ /**
447
+ * @param DeutschePostLabel $label
448
+ *
449
+ * @return mixed
450
+ */
451
+ public function get_label( &$label ) {
452
+ if ( $label->is_warenpost_international() ) {
453
+ $result = $this->create_or_update_wp_int_label( $label );
454
+ } else {
455
+ $result = $this->create_or_update_default_label( $label );
456
+ }
457
+
458
+ $this->invalidate_balance();
459
+
460
+ return $result;
461
+ }
462
+
463
+ protected function get_wp_int_api() {
464
+ if ( is_null( $this->wp_int_api ) ) {
465
+ $this->wp_int_api = new ImWarenpostIntRest();
466
+ }
467
+
468
+ return $this->wp_int_api;
469
+ }
470
+
471
+ /**
472
+ * @param DeutschePostLabel $label
473
+ *
474
+ * @return mixed
475
+ */
476
+ protected function create_or_update_wp_int_label( &$label ) {
477
+ if ( empty( $label->get_wp_int_awb() ) ) {
478
+ return $this->get_wp_int_api()->create_label( $label );
479
+ } else {
480
+ try {
481
+ $pdf = $this->get_wp_int_api()->get_pdf( $label->get_wp_int_awb() );
482
+
483
+ if ( ! $pdf ) {
484
+ throw new \Exception( _x( 'Error while fetching label PDF', 'dhl', 'woocommerce-germanized' ) );
485
+ }
486
+ } catch( \Exception $e ) {
487
+ return $this->get_wp_int_api()->create_label( $label );
488
+ }
489
+
490
+ return true;
491
+ }
492
+ }
493
+
494
+ /**
495
+ * @param DeutschePostLabel $label
496
+ *
497
+ * @return mixed
498
+ */
499
+ protected function create_or_update_default_label( &$label ) {
500
+ if ( empty( $label->get_shop_order_id() ) ) {
501
+ return $this->create_default_label( $label );
502
+ } else {
503
+ if ( ! $this->auth() ) {
504
+ throw new \Exception( $this->get_authentication_error() );
505
+ }
506
+
507
+ try {
508
+ $stamp = $this->api->retrieveOrder( $this->get_user()->getUserToken(), $label->get_shop_order_id() );
509
+ } catch( \Exception $e ) {
510
+ return $this->create_default_label( $label );
511
+ }
512
+
513
+ return $this->update_default_label( $label, $stamp );
514
+ }
515
+ }
516
+
517
+ public function get_refund_api() {
518
+ if ( is_null( $this->refund_api ) ) {
519
+ $this->refund_api = new ImRefundSoap( $this->partner, array(), Package::get_wsdl_file( 'https://internetmarke.deutschepost.de/OneClickForRefund?wsdl' ) );
520
+ }
521
+
522
+ return $this->refund_api;
523
+ }
524
+
525
+ /**
526
+ * @param DeutschePostLabel $label
527
+ *
528
+ * @return false|int
529
+ */
530
+ public function refund_label( $label ) {
531
+ try {
532
+ if ( $label->is_warenpost_international() ) {
533
+ return $this->refund_wp_int_label( $label );
534
+ } else {
535
+ return $this->refund_default_label( $label );
536
+ }
537
+ } catch( \Exception $e ) {
538
+ throw new \Exception( sprintf( _x( 'Could not refund post label: %s', 'dhl', 'woocommerce-germanized' ), $e->getMessage() ) );
539
+ }
540
+ }
541
+
542
+ /**
543
+ * @param DeutschePostLabel $label
544
+ *
545
+ * @return false|int
546
+ * @throws \Exception
547
+ */
548
+ protected function refund_default_label( $label ) {
549
+ $refund = $this->get_refund_api();
550
+
551
+ if ( ! $refund ) {
552
+ throw new \Exception( _x( 'Refund API could not be instantiated', 'dhl', 'woocommerce-germanized' ) );
553
+ }
554
+
555
+ $refund_id = $refund->createRetoureId();
556
+
557
+ if ( $refund_id ) {
558
+ $user = $refund->authenticateUser( Package::get_internetmarke_username(), Package::get_internetmarke_password() );
559
+
560
+ if ( $user ) {
561
+ $transaction_id = $refund->retoureVouchers( $user->getUserToken(), $refund_id, $label->get_shop_order_id() );
562
+ }
563
+
564
+ Package::log( sprintf( 'Refunded DP label %s: %s', $label->get_number(), $transaction_id ) );
565
+
566
+ return $transaction_id;
567
+ }
568
+ }
569
+
570
+ /**
571
+ * @param DeutschePostLabel $label
572
+ *
573
+ * @return false|int
574
+ * @throws \Exception
575
+ */
576
+ protected function refund_wp_int_label( $label ) {
577
+ return false;
578
+ }
579
+
580
+ /**
581
+ * @param DeutschePostLabel $label
582
+ *
583
+ * @return mixed
584
+ */
585
+ public function delete_label( &$label ) {
586
+ if ( ! empty( $label->get_shop_order_id() ) ) {
587
+ $transaction_id = $this->refund_label( $label );
588
+
589
+ if ( false !== $transaction_id ) {
590
+ $this->invalidate_balance();
591
+ }
592
+
593
+ /**
594
+ * Action fires before deleting a Deutsche Post PDF label through an API call.
595
+ *
596
+ * @param DeutschePostLabel $label The label object.
597
+ *
598
+ * @since 3.2.0
599
+ * @package Vendidero/Germanized/DHL
600
+ */
601
+ do_action( 'woocommerce_gzd_dhl_deutsche_post_label_api_before_delete', $label );
602
+
603
+ $label->set_number( '' );
604
+ $label->set_wp_int_awb( '' );
605
+ $label->set_wp_int_barcode( '' );
606
+ $label->set_shop_order_id( '' );
607
+
608
+ if ( $file = $label->get_file() ) {
609
+ wp_delete_file( $file );
610
+ }
611
+
612
+ $label->set_path( '' );
613
+
614
+ if ( $file = $label->get_default_file() ) {
615
+ wp_delete_file( $file );
616
+ }
617
+
618
+ /**
619
+ * Action fires after deleting a Deutsche Post PDF label through an API call.
620
+ *
621
+ * @param DeutschePostLabel $label The label object.
622
+ *
623
+ * @since 3.2.0
624
+ * @package Vendidero/Germanized/DHL
625
+ */
626
+ do_action( 'woocommerce_gzd_dhl_deutsche_post_label_api_deleted', $label );
627
+
628
+ return $label;
629
+ }
630
+
631
+ return false;
632
+ }
633
+
634
+ /**
635
+ * @param DeutschePostLabel $label
636
+ */
637
+ protected function create_default_label( &$label ) {
638
+ $shipment = $label->get_shipment();
639
+
640
+ if ( ! $shipment ) {
641
+ throw new \Exception( sprintf( _x( 'Could not fetch shipment %d.', 'dhl', 'woocommerce-germanized' ), $label->get_shipment_id() ) );
642
+ }
643
+
644
+ $sender_name = explode( " ", Package::get_setting( 'shipper_name' ) );
645
+ $sender_name_first = $sender_name;
646
+ $sender_first_name = array_splice( $sender_name_first, 0, ( sizeof( $sender_name ) - 1 ) );
647
+ $sender_last_name = $sender_name[ sizeof( $sender_name ) - 1 ];
648
+
649
+ $person_name = new PersonName( '', '', implode( ' ', $sender_first_name ), $sender_last_name );
650
+ $sender_country = Package::get_country_iso_alpha3( Package::get_setting( 'shipper_country' ) );
651
+
652
+ if ( Package::get_setting( 'shipper_company' ) ) {
653
+ $name = new Name( null, new CompanyName( Package::get_setting( 'shipper_company' ), $person_name ) );
654
+ } else {
655
+ $name = new Name( $person_name, null );
656
+ }
657
+
658
+ $address = new Address( '', Package::get_setting( 'shipper_street' ), Package::get_setting( 'shipper_street_no' ), Package::get_setting( 'shipper_postcode' ), Package::get_setting( 'shipper_city' ), $sender_country );
659
+ $sender = new \baltpeter\Internetmarke\NamedAddress( $name, $address );
660
+
661
+ $receiver_person_name = new PersonName( '', '', $shipment->get_first_name(), $shipment->get_last_name() );
662
+
663
+ if ( $shipment->get_company() ) {
664
+ $receiver_name = new Name( null, new CompanyName( $shipment->get_company(), $receiver_person_name ) );
665
+ } else {
666
+ $receiver_name = new Name( $receiver_person_name, null );
667
+ }
668
+
669
+ $receiver_address = new Address( '', $shipment->get_address_street(), $shipment->get_address_street_number(), $shipment->get_postcode(), $shipment->get_city(), Package::get_country_iso_alpha3( $shipment->get_country() ) );
670
+ $receiver = new \baltpeter\Internetmarke\NamedAddress( $receiver_name, $receiver_address );
671
+ $address_binding = new \baltpeter\Internetmarke\AddressBinding( $sender, $receiver );
672
+
673
+ if ( ! $this->auth() ) {
674
+ throw new \Exception( $this->get_authentication_error() );
675
+ }
676
+
677
+ try {
678
+ $shop_order_id = $this->api->createShopOrderId( $this->get_user()->getUserToken() );
679
+
680
+ if ( ! $shop_order_id ) {
681
+ throw new \Exception( _x( 'Error while generating shop order id.', 'dhl', 'woocommerce-germanized' ) );
682
+ }
683
+
684
+ $label->set_shop_order_id( $shop_order_id );
685
+
686
+ $order_item = new \baltpeter\Internetmarke\OrderItem( $label->get_dhl_product(), null, $address_binding, new \baltpeter\Internetmarke\Position( 1, 1, 1 ), 'AddressZone' );
687
+ $stamp = $this->api->checkoutShoppingCartPdf( $this->get_user()->getUserToken(), $label->get_page_format(), array( $order_item ), $label->get_stamp_total(), $shop_order_id, null, true, 2 );
688
+
689
+ return $this->update_default_label( $label, $stamp );
690
+ } catch( \Exception $e ) {
691
+ throw new \Exception( sprintf( _x( 'Error while trying to purchase the stamp. Please manually <a href="%s">refresh</a> your product database and try again.', 'dhl', 'woocommerce-germanized' ), Settings::get_settings_url( 'internetmarke' ) ) );
692
+ }
693
+ }
694
+
695
+ /**
696
+ * @param DeutschePostLabel $label
697
+ * @param \stdClass $stamp
698
+ *
699
+ * @return mixed
700
+ * @throws \Exception
701
+ */
702
+ protected function update_default_label( &$label, $stamp ) {
703
+ if ( isset( $stamp->link ) ) {
704
+
705
+ $label->set_original_url( $stamp->link );
706
+ $voucher_list = $stamp->shoppingCart->voucherList;
707
+
708
+ if ( ! empty( $voucher_list->voucher ) ) {
709
+ foreach ( $voucher_list->voucher as $i => $voucher ) {
710
+
711
+ if ( isset( $voucher->trackId ) ) {
712
+ $label->set_number( $voucher->trackId );
713
+ } else {
714
+ $label->set_number( $voucher->voucherId );
715
+ }
716
+
717
+ $label->set_voucher_id( $voucher->voucherId );
718
+ }
719
+ }
720
+
721
+ if ( isset( $stamp->manifestLink ) ) {
722
+ $label->set_manifest_url( $stamp->manifestLink );
723
+ }
724
+
725
+ $label->save();
726
+
727
+ $timeout_seconds = 5;
728
+
729
+ if ( ! function_exists( 'download_url' ) ) {
730
+ include_once( ABSPATH . 'wp-admin/includes/file.php' );
731
+ }
732
+
733
+ if ( ! function_exists( 'download_url' ) ) {
734
+ throw new \Exception( _x( 'Error while downloading the PDF stamp.', 'dhl', 'woocommerce-germanized' ) );
735
+ }
736
+
737
+ // Download file to temp dir.
738
+ $temp_file = download_url( $stamp->link, $timeout_seconds );
739
+
740
+ if ( is_wp_error( $temp_file ) ) {
741
+ throw new \Exception( _x( 'Error while downloading the PDF stamp.', 'dhl', 'woocommerce-germanized' ) );
742
+ }
743
+
744
+ $file = [
745
+ 'name' => wc_gzd_dhl_generate_label_filename( $label, 'dp-label' ),
746
+ 'type' => 'application/pdf',
747
+ 'tmp_name' => $temp_file,
748
+ 'error' => 0,
749
+ 'size' => filesize( $temp_file ),
750
+ ];
751
+
752
+ $overrides = [
753
+ 'test_type' => false,
754
+ 'test_form' => false,
755
+ 'test_size' => true,
756
+ ];
757
+
758
+ // Move the temporary file into the fonts uploads directory.
759
+ Package::set_upload_dir_filter();
760
+ $results = wp_handle_sideload( $file, $overrides );
761
+ Package::unset_upload_dir_filter();
762
+
763
+ if ( empty( $results['error'] ) ) {
764
+ $path = Package::get_relative_upload_dir( $results['file'] );
765
+
766
+ $label->set_path( $path );
767
+ $label->set_default_path( $path );
768
+ } else {
769
+ throw new \Exception( _x( 'Error while downloading the PDF stamp.', 'dhl', 'woocommerce-germanized' ) );
770
+ }
771
+
772
+ $label->save();
773
+
774
+ return $label;
775
+ } else {
776
+ throw new \Exception( _x( 'Invalid stamp response.', 'dhl', 'woocommerce-germanized' ) );
777
+ }
778
+ }
779
+
780
+ public function update_products() {
781
+ $this->load_products();
782
+
783
+ return $this->products->update();
784
+ }
785
+ }
packages/woocommerce-germanized-dhl/src/Api/LabelSoap.php CHANGED
@@ -97,7 +97,11 @@ class LabelSoap extends Soap {
97
  switch( $e->getMessage() ) {
98
  case "Unauthorized":
99
  throw new Exception( _x( 'Your DHL API credentials seem to be invalid. Please check your DHL settings.', 'dhl', 'woocommerce-germanized' ) );
100
- break;
 
 
 
 
101
  }
102
 
103
  throw $e;
@@ -644,60 +648,35 @@ class LabelSoap extends Soap {
644
  throw new Exception( sprintf( _x( 'Only %s shipment items can be processed, your shipment has %s items.', 'dhl', 'woocommerce-germanized' ), self::DHL_MAX_ITEMS, sizeof( $shipment->get_items() ) ) );
645
  }
646
 
647
- $customsDetails = array();
648
- $item_description = '';
649
-
650
- foreach ( $shipment->get_items() as $key => $item ) {
651
-
652
- $item_description .= ! empty( $item_description ) ? ', ' : '';
653
- $item_description .= $item->get_name();
654
-
655
- $product_total = floatval( ( $item->get_total() / $item->get_quantity() ) );
656
- $per_item_weight = wc_format_decimal( floatval( wc_get_weight( $item->get_weight(), 'kg', $shipment->get_weight_unit() ) ), 2 );
657
-
658
- /**
659
- * Set min weight to 0.01 to prevent missing weight error messages
660
- * for really small product weights.
661
- */
662
- if ( $per_item_weight <= 0 ) {
663
- $per_item_weight = '0.01';
664
- }
665
-
666
- $dhl_product = false;
667
-
668
- if ( $product = $item->get_product() ) {
669
- $dhl_product = wc_gzd_dhl_get_product( $product );
670
- }
671
-
672
- $json_item = array(
673
- 'description' => substr( $item->get_name(), 0, 255 ),
674
- 'countryCodeOrigin' => $dhl_product ? $dhl_product->get_manufacture_country() : '',
675
- 'customsTariffNumber' => $dhl_product ? $dhl_product->get_hs_code() : '',
676
- 'amount' => intval( $item->get_quantity() ),
677
- 'netWeightInKG' => wc_format_decimal( $per_item_weight, 2 ),
678
- 'customsValue' => wc_format_decimal( $product_total, 2 ),
679
- );
680
-
681
- array_push($customsDetails, $json_item );
682
- }
683
-
684
- $item_description = substr( $item_description, 0, 255 );
685
-
686
- $dhl_label_body['ShipmentOrder']['Shipment']['ExportDocument'] = array(
687
- 'invoiceNumber' => $shipment->get_id(),
688
- 'exportType' => 'COMMERCIAL_GOODS',
689
- 'exportTypeDescription' => $item_description,
690
- 'termsOfTrade' => $label->get_duties(),
691
- 'placeOfCommital' => $shipment->get_country(),
692
- 'ExportDocPosition' => $customsDetails
693
- );
694
  }
695
 
696
  // Unset/remove any items that are empty strings or 0, even if required!
697
  $this->body_request = $this->walk_recursive_remove( $dhl_label_body );
698
 
699
  // Ensure Export Document is set before adding additional fee
700
- if ( isset( $this->body_request['ShipmentOrder']['Shipment']['ExportDocument'] ) ) {
701
  // Additional fees, required and 0 so place after check
702
  $this->body_request['ShipmentOrder']['Shipment']['ExportDocument']['additionalFee'] = 0;
703
  }
97
  switch( $e->getMessage() ) {
98
  case "Unauthorized":
99
  throw new Exception( _x( 'Your DHL API credentials seem to be invalid. Please check your DHL settings.', 'dhl', 'woocommerce-germanized' ) );
100
+ break;
101
+ case "SOAP-ERROR: Encoding: object has no 'customsTariffNumber' property":
102
+ case "SOAP-ERROR: Encoding: object has no 'countryCodeOrigin' property":
103
+ throw new Exception( _x( 'Your products are missing data relevant for custom declarations. Please provide missing DHL fields (country of origin, HS code) in your product data > shipping tab.', 'dhl', 'woocommerce-germanized' ) );
104
+ break;
105
  }
106
 
107
  throw $e;
648
  throw new Exception( sprintf( _x( 'Only %s shipment items can be processed, your shipment has %s items.', 'dhl', 'woocommerce-germanized' ), self::DHL_MAX_ITEMS, sizeof( $shipment->get_items() ) ) );
649
  }
650
 
651
+ $customs_data = wc_gzd_dhl_get_shipment_customs_data( $label );
652
+ $customs_data['termsOfTrade'] = $label->get_duties();
653
+
654
+ /**
655
+ * Filter to allow adjusting the export type of a DHL label (for customs). Could be:
656
+ * <ul>
657
+ * <li>OTHER</li>
658
+ * <li>PRESENT</li>
659
+ * <li>COMMERCIAL_SAMPLE</li>
660
+ * <li>DOCUMENT</li>
661
+ * <li>RETURN_OF_GOODS</li>
662
+ * <li>COMMERCIAL_GOODS</li>
663
+ * </ul>
664
+ *
665
+ * @param string $export_type The export type.
666
+ * @param Label $label The label instance.
667
+ *
668
+ * @since 3.3.0
669
+ * @package Vendidero/Germanized/DHL
670
+ */
671
+ $customs_data['exportType'] = strtoupper( apply_filters( 'woocommerce_gzd_dhl_label_api_export_type', 'COMMERCIAL_GOODS', $label ) );
672
+ $dhl_label_body['ShipmentOrder']['Shipment']['ExportDocument'] = $customs_data;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
673
  }
674
 
675
  // Unset/remove any items that are empty strings or 0, even if required!
676
  $this->body_request = $this->walk_recursive_remove( $dhl_label_body );
677
 
678
  // Ensure Export Document is set before adding additional fee
679
+ if ( isset( $this->body_request['ShipmentOrder']['Shipment']['ExportDocument'] ) && ! isset( $this->body_request['ShipmentOrder']['Shipment']['ExportDocument']['additionalFee'] ) ) {
680
  // Additional fees, required and 0 so place after check
681
  $this->body_request['ShipmentOrder']['Shipment']['ExportDocument']['additionalFee'] = 0;
682
  }
packages/woocommerce-germanized-dhl/src/Api/Paket.php CHANGED
@@ -44,16 +44,24 @@ class Paket {
44
  }
45
 
46
  public function get_label_api() {
 
 
47
  if ( is_null( $this->label_api ) ) {
48
  try {
49
  $this->label_api = new LabelSoap();
50
  } catch( Exception $e ) {
 
 
51
  $this->label_api = null;
52
  }
53
  }
54
 
55
  if ( is_null( $this->label_api ) ) {
56
- throw new Exception( _x( 'Label API not available', 'dhl', 'woocommerce-germanized' ) );
 
 
 
 
57
  }
58
 
59
  return $this->label_api;
44
  }
45
 
46
  public function get_label_api() {
47
+ $error_message = '';
48
+
49
  if ( is_null( $this->label_api ) ) {
50
  try {
51
  $this->label_api = new LabelSoap();
52
  } catch( Exception $e ) {
53
+ $error_message = $e->getMessage();
54
+
55
  $this->label_api = null;
56
  }
57
  }
58
 
59
  if ( is_null( $this->label_api ) ) {
60
+ if ( ! empty( $error_message ) ) {
61
+ throw new Exception( sprintf( _x( 'Label API not available: %s', 'dhl', 'woocommerce-germanized' ), $error_message ) );
62
+ } else {
63
+ throw new Exception( _x( 'Label API not available', 'dhl', 'woocommerce-germanized' ) );
64
+ }
65
  }
66
 
67
  return $this->label_api;
packages/woocommerce-germanized-dhl/src/Api/ParcelRest.php CHANGED
@@ -38,7 +38,7 @@ class ParcelRest extends Rest {
38
  return $this->get_request( '/checkout/' . $args['postcode'] . '/availableServices', array( 'startDate' => $args['start_date'] ) );
39
  }
40
 
41
- protected function set_header( $authorization = '' ) {
42
  parent::set_header();
43
 
44
  if ( ! empty( $authorization ) ) {
38
  return $this->get_request( '/checkout/' . $args['postcode'] . '/availableServices', array( 'startDate' => $args['start_date'] ) );
39
  }
40
 
41
+ protected function set_header( $authorization = '', $request_type = 'GET', $endpoint = '' ) {
42
  parent::set_header();
43
 
44
  if ( ! empty( $authorization ) ) {
packages/woocommerce-germanized-dhl/src/Api/Rest.php CHANGED
@@ -58,10 +58,10 @@ abstract class Rest {
58
  return $this->get_basic_auth_encode( Package::get_cig_user(), Package::get_cig_password() );
59
  }
60
 
61
- public function get_request( $endpoint = '', $query_args = array() ) {
62
- $api_url = Package::get_rest_url();
63
 
64
- $this->set_header( $this->get_auth() );
65
 
66
  $wp_request_url = add_query_arg( $query_args, $api_url . $endpoint );
67
  $wp_request_headers = $this->get_header();
@@ -77,51 +77,63 @@ abstract class Rest {
77
  );
78
 
79
  $response_code = wp_remote_retrieve_response_code( $wp_dhl_rest_response );
80
- $response_body = json_decode( wp_remote_retrieve_body( $wp_dhl_rest_response ) );
 
 
 
 
81
 
82
  Package::log( 'GET Response Code: ' . $response_code );
83
  Package::log( 'GET Response Body: ' . print_r( $response_body, true ) );
84
 
85
- switch ( $response_code ) {
86
- case '200':
87
- case '201':
88
- break;
89
- case '400':
90
- $error_message = str_replace('/', ' / ', isset( $response_body->statusText ) ? $response_body->statusText : '' );
91
- throw new Exception( _x( '400 - ', 'dhl', 'woocommerce-germanized' ) . $error_message );
92
- break;
93
- case '401':
94
- throw new Exception( _x( '401 - Unauthorized Access - Invalid token or Authentication Header parameter', 'dhl', 'woocommerce-germanized' ) );
95
- break;
96
- case '408':
97
- throw new Exception( _x( '408 - Request Timeout', 'dhl', 'woocommerce-germanized' ) );
98
- break;
99
- case '429':
100
- throw new Exception( _x( '429 - Too many requests in given amount of time', 'dhl', 'woocommerce-germanized' ) );
101
- break;
102
- case '503':
103
- throw new Exception( _x( '503 - Service Unavailable', 'dhl', 'woocommerce-germanized' ) );
104
- break;
105
- default:
106
- if ( empty( $response_body->statusText ) ) {
107
- $error_message = _x( 'GET error or timeout occured. Please try again later.', 'dhl', 'woocommerce-germanized' );
108
- } else {
109
- $error_message = str_replace('/', ' / ', $response_body->statusText);
110
- }
111
-
112
- Package::log( 'GET Error: ' . $response_code . ' - ' . $error_message );
113
-
114
- throw new Exception( $response_code .' - ' . $error_message );
115
- break;
116
- }
117
 
118
  return $response_body;
119
  }
120
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  public function post_request( $endpoint = '', $query_args = array() ) {
122
- $api_url = Package::get_rest_url();
123
 
124
- $this->set_header( $this->get_auth() );
125
 
126
  $wp_request_url = $api_url . $endpoint;
127
  $wp_request_headers = $this->get_header();
@@ -143,6 +155,12 @@ abstract class Rest {
143
  Package::log( 'POST Response Code: ' . $response_code );
144
  Package::log( 'POST Response Body: ' . print_r( $response_body, true ) );
145
 
 
 
 
 
 
 
146
  switch ( $response_code ) {
147
  case '200':
148
  case '201':
@@ -159,15 +177,13 @@ abstract class Rest {
159
  throw new Exception( $response_code .' - ' . $error_message );
160
  break;
161
  }
162
-
163
- return $response_body;
164
  }
165
 
166
  protected function get_basic_auth_encode( $user, $pass ) {
167
  return 'Basic ' . base64_encode( $user . ':' . $pass );
168
  }
169
 
170
- protected function set_header( $authorization = '' ) {
171
  $wp_version = get_bloginfo( 'version' );
172
  $wc_version = defined( 'WC_Version' ) ? WC_Version : '';
173
 
@@ -176,7 +192,7 @@ abstract class Rest {
176
  $dhl_header['Authorization'] = 'Bearer ' . $authorization;
177
  $dhl_header['User-Agent'] = 'WooCommerce/'. $wc_version . ' (WordPress/'. $wp_version . ') Germanized-DHL/' . Package::get_version();
178
 
179
- $this->remote_header = array_merge( $this->remote_header, $dhl_header );
180
  }
181
 
182
  protected function get_header( ) {
58
  return $this->get_basic_auth_encode( Package::get_cig_user(), Package::get_cig_password() );
59
  }
60
 
61
+ public function get_request( $endpoint = '', $query_args = array(), $content_type = 'json' ) {
62
+ $api_url = $this->get_base_url();
63
 
64
+ $this->set_header( $this->get_auth(), 'GET', $endpoint );
65
 
66
  $wp_request_url = add_query_arg( $query_args, $api_url . $endpoint );
67
  $wp_request_headers = $this->get_header();
77
  );
78
 
79
  $response_code = wp_remote_retrieve_response_code( $wp_dhl_rest_response );
80
+ $response_body = wp_remote_retrieve_body( $wp_dhl_rest_response );
81
+
82
+ if ( 'json' === $content_type ) {
83
+ $response_body = json_decode( $response_body );
84
+ }
85
 
86
  Package::log( 'GET Response Code: ' . $response_code );
87
  Package::log( 'GET Response Body: ' . print_r( $response_body, true ) );
88
 
89
+ $this->handle_get_response( $response_code, $response_body );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
 
91
  return $response_body;
92
  }
93
 
94
+ protected function handle_get_response( $response_code, $response_body ) {
95
+ switch ( $response_code ) {
96
+ case '200':
97
+ case '201':
98
+ break;
99
+ case '400':
100
+ $error_message = str_replace('/', ' / ', isset( $response_body->statusText ) ? $response_body->statusText : '' );
101
+ throw new Exception( _x( '400 - ', 'dhl', 'woocommerce-germanized' ) . $error_message );
102
+ break;
103
+ case '401':
104
+ throw new Exception( _x( '401 - Unauthorized Access - Invalid token or Authentication Header parameter', 'dhl', 'woocommerce-germanized' ) );
105
+ break;
106
+ case '408':
107
+ throw new Exception( _x( '408 - Request Timeout', 'dhl', 'woocommerce-germanized' ) );
108
+ break;
109
+ case '429':
110
+ throw new Exception( _x( '429 - Too many requests in given amount of time', 'dhl', 'woocommerce-germanized' ) );
111
+ break;
112
+ case '503':
113
+ throw new Exception( _x( '503 - Service Unavailable', 'dhl', 'woocommerce-germanized' ) );
114
+ break;
115
+ default:
116
+ if ( empty( $response_body->statusText ) ) {
117
+ $error_message = _x( 'GET error or timeout occured. Please try again later.', 'dhl', 'woocommerce-germanized' );
118
+ } else {
119
+ $error_message = str_replace('/', ' / ', $response_body->statusText);
120
+ }
121
+
122
+ Package::log( 'GET Error: ' . $response_code . ' - ' . $error_message );
123
+
124
+ throw new Exception( $response_code .' - ' . $error_message );
125
+ break;
126
+ }
127
+ }
128
+
129
+ public function get_base_url() {
130
+ return Package::get_rest_url();
131
+ }
132
+
133
  public function post_request( $endpoint = '', $query_args = array() ) {
134
+ $api_url = $this->get_base_url();
135
 
136
+ $this->set_header( $this->get_auth(), 'POST', $endpoint );
137
 
138
  $wp_request_url = $api_url . $endpoint;
139
  $wp_request_headers = $this->get_header();
155
  Package::log( 'POST Response Code: ' . $response_code );
156
  Package::log( 'POST Response Body: ' . print_r( $response_body, true ) );
157
 
158
+ $this->handle_post_response( $response_code, $response_body );
159
+
160
+ return $response_body;
161
+ }
162
+
163
+ protected function handle_post_response( $response_code, $response_body ) {
164
  switch ( $response_code ) {
165
  case '200':
166
  case '201':
177
  throw new Exception( $response_code .' - ' . $error_message );
178
  break;
179
  }
 
 
180
  }
181
 
182
  protected function get_basic_auth_encode( $user, $pass ) {
183
  return 'Basic ' . base64_encode( $user . ':' . $pass );
184
  }
185
 
186
+ protected function set_header( $authorization = '', $request_type = 'GET', $endpoint = '' ) {
187
  $wp_version = get_bloginfo( 'version' );
188
  $wc_version = defined( 'WC_Version' ) ? WC_Version : '';
189
 
192
  $dhl_header['Authorization'] = 'Bearer ' . $authorization;
193
  $dhl_header['User-Agent'] = 'WooCommerce/'. $wc_version . ' (WordPress/'. $wp_version . ') Germanized-DHL/' . Package::get_version();
194
 
195
+ $this->remote_header = $dhl_header;
196
  }
197
 
198
  protected function get_header( ) {
packages/woocommerce-germanized-dhl/src/Api/ReturnRest.php CHANGED
@@ -163,7 +163,7 @@ class ReturnRest extends Rest {
163
  return base64_encode( Package::get_retoure_api_user() . ':' . Package::get_retoure_api_signature() );
164
  }
165
 
166
- protected function set_header( $authorization = '' ) {
167
  parent::set_header();
168
 
169
  if ( ! empty( $authorization ) ) {
163
  return base64_encode( Package::get_retoure_api_user() . ':' . Package::get_retoure_api_signature() );
164
  }
165
 
166
+ protected function set_header( $authorization = '', $request_type = 'GET', $endpoint = '' ) {
167
  parent::set_header();
168
 
169
  if ( ! empty( $authorization ) ) {
packages/woocommerce-germanized-dhl/src/Api/Soap.php CHANGED
@@ -7,6 +7,7 @@
7
  namespace Vendidero\Germanized\DHL\Api;
8
 
9
  use Exception;
 
10
 
11
  defined( 'ABSPATH' ) || exit;
12
 
@@ -49,6 +50,10 @@ abstract class Soap {
49
  */
50
  public function __construct( $wsdl_link ) {
51
  try {
 
 
 
 
52
  $this->soap_auth = new AuthSoap( $wsdl_link );
53
  } catch ( Exception $e ) {
54
  throw $e;
7
  namespace Vendidero\Germanized\DHL\Api;
8
 
9
  use Exception;
10
+ use Vendidero\Germanized\DHL\Package;
11
 
12
  defined( 'ABSPATH' ) || exit;
13
 
50
  */
51
  public function __construct( $wsdl_link ) {
52
  try {
53
+ if ( ! Package::has_load_dependencies() ) {
54
+ throw new Exception( sprintf( _x( 'To enable communication between your shop and DHL, the PHP <a href="%s">SOAPClient</a> is required. Please contact your host and make sure that SOAPClient is <a href="%s">installed</a>.', 'dhl', 'woocommerce-germanize-dhl' ), 'https://www.php.net/manual/class.soapclient.php', admin_url( 'admin.php?page=wc-status' ) ) );
55
+ }
56
+
57
  $this->soap_auth = new AuthSoap( $wsdl_link );
58
  } catch ( Exception $e ) {
59
  throw $e;
packages/woocommerce-germanized-dhl/src/Automation.php CHANGED
@@ -65,9 +65,19 @@ class Automation {
65
  return;
66
  }
67
 
68
- $shipping_method = wc_gzd_dhl_get_shipping_method( $shipment->get_shipping_method() );
 
 
 
 
 
 
 
 
69
  $setting = 'return' === $shipment->get_type() ? 'label_return_auto_enable' : 'label_auto_enable';
70
  $setting_status = 'return' === $shipment->get_type() ? 'label_return_auto_shipment_status' : 'label_auto_shipment_status';
 
 
71
  $hook_prefix = 'woocommerce_gzd_' . ( 'return' === $shipment->get_type() ? 'return_' : '' ) . 'shipment_status_';
72
 
73
  if ( 'yes' === Package::get_setting( $setting, $shipping_method ) ) {
65
  return;
66
  }
67
 
68
+ $method_prefix = '';
69
+
70
+ if ( 'deutsche_post' === $shipment->get_shipping_provider() ) {
71
+ $shipping_method = wc_gzd_dhl_get_deutsche_post_shipping_method( $shipment->get_shipping_method() );
72
+ $method_prefix = 'deutsche_post_';
73
+ } else {
74
+ $shipping_method = wc_gzd_dhl_get_shipping_method( $shipment->get_shipping_method() );
75
+ }
76
+
77
  $setting = 'return' === $shipment->get_type() ? 'label_return_auto_enable' : 'label_auto_enable';
78
  $setting_status = 'return' === $shipment->get_type() ? 'label_return_auto_shipment_status' : 'label_auto_shipment_status';
79
+ $setting = $method_prefix . $setting;
80
+ $setting_status = $method_prefix . $setting_status;
81
  $hook_prefix = 'woocommerce_gzd_' . ( 'return' === $shipment->get_type() ? 'return_' : '' ) . 'shipment_status_';
82
 
83
  if ( 'yes' === Package::get_setting( $setting, $shipping_method ) ) {
packages/woocommerce-germanized-dhl/src/DataStores/Label.php CHANGED
@@ -62,6 +62,15 @@ class Label extends WC_Data_Store_WP implements WC_Object_Data_Store_Interface {
62
  '_weight',
63
  '_created_via',
64
  '_receiver_slug',
 
 
 
 
 
 
 
 
 
65
  );
66
 
67
  /*
@@ -353,7 +362,7 @@ class Label extends WC_Data_Store_WP implements WC_Object_Data_Store_Interface {
353
  $props = array();
354
 
355
  foreach( $this->internal_meta_keys as $meta_key ) {
356
- $props[ substr( $meta_key, 1 ) ] = get_metadata( 'gzd_dhl_label', $label->get_id(), $meta_key, true );
357
  }
358
 
359
  $label->set_props( $props );
@@ -373,7 +382,7 @@ class Label extends WC_Data_Store_WP implements WC_Object_Data_Store_Interface {
373
  $meta_key_to_props[ $meta_key ] = $prop_name;
374
  }
375
 
376
- $props_to_update = $this->get_props_to_update( $label, $meta_key_to_props, 'gzd_dhl_label' );
377
 
378
  foreach ( $props_to_update as $meta_key => $prop ) {
379
 
@@ -439,9 +448,9 @@ class Label extends WC_Data_Store_WP implements WC_Object_Data_Store_Interface {
439
  */
440
  protected function update_or_delete_meta( $object, $meta_key, $meta_value ) {
441
  if ( in_array( $meta_value, array( array(), '' ), true ) && ! in_array( $meta_key, $this->must_exist_meta_keys, true ) ) {
442
- $updated = delete_metadata( 'gzd_dhl_label', $object->get_id(), $meta_key );
443
  } else {
444
- $updated = update_metadata( 'gzd_dhl_label', $object->get_id(), $meta_key, $meta_value );
445
  }
446
 
447
  return (bool) $updated;
62
  '_weight',
63
  '_created_via',
64
  '_receiver_slug',
65
+ '_page_format',
66
+ '_shop_order_id',
67
+ '_stamp_total',
68
+ '_voucher_id',
69
+ '_original_url',
70
+ '_manifest_url',
71
+ '_additional_services',
72
+ '_wp_int_awb',
73
+ '_wp_int_barcode',
74
  );
75
 
76
  /*
362
  $props = array();
363
 
364
  foreach( $this->internal_meta_keys as $meta_key ) {
365
+ $props[ substr( $meta_key, 1 ) ] = get_metadata( $this->meta_type, $label->get_id(), $meta_key, true );
366
  }
367
 
368
  $label->set_props( $props );
382
  $meta_key_to_props[ $meta_key ] = $prop_name;
383
  }
384
 
385
+ $props_to_update = $this->get_props_to_update( $label, $meta_key_to_props, $this->meta_type );
386
 
387
  foreach ( $props_to_update as $meta_key => $prop ) {
388
 
448
  */
449
  protected function update_or_delete_meta( $object, $meta_key, $meta_value ) {
450
  if ( in_array( $meta_value, array( array(), '' ), true ) && ! in_array( $meta_key, $this->must_exist_meta_keys, true ) ) {
451
+ $updated = delete_metadata( $this->meta_type, $object->get_id(), $meta_key );
452
  } else {
453
+ $updated = update_metadata( $this->meta_type, $object->get_id(), $meta_key, $meta_value );
454
  }
455
 
456
  return (bool) $updated;
packages/woocommerce-germanized-dhl/src/DeutschePostLabel.php ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Vendidero\Germanized\DHL;
4
+
5
+ defined( 'ABSPATH' ) || exit;
6
+
7
+ /**
8
+ * Deutsche Post Label class.
9
+ */
10
+ class DeutschePostLabel extends Label {
11
+
12
+ /**
13
+ * Stores product data.
14
+ *
15
+ * @var array
16
+ */
17
+ protected $extra_data = array(
18
+ 'page_format' => '',
19
+ 'shop_order_id' => '',
20
+ 'stamp_total' => 0,
21
+ 'voucher_id' => '',
22
+ 'original_url' => '',
23
+ 'manifest_url' => '',
24
+ 'additional_services' => array(),
25
+ 'wp_int_awb' => '',
26
+ 'wp_int_barcode' => '',
27
+ );
28
+
29
+ public function get_type() {
30
+ return 'deutsche_post';
31
+ }
32
+
33
+ public function get_number( $context = 'view' ) {
34
+ $number = parent::get_number( $context );
35
+
36
+ return $number;
37
+ }
38
+
39
+ public function get_page_format( $context = 'view' ) {
40
+ return $this->get_prop( 'page_format', $context );
41
+ }
42
+
43
+ public function get_wp_int_awb( $context = 'view' ) {
44
+ return $this->get_prop( 'wp_int_awb', $context );
45
+ }
46
+
47
+ public function get_wp_int_barcode( $context = 'view' ) {
48
+ return $this->get_prop( 'wp_int_barcode', $context );
49
+ }
50
+
51
+ public function get_additional_services( $context = 'view' ) {
52
+ return $this->get_prop( 'additional_services', $context );
53
+ }
54
+
55
+ public function set_additional_services( $value ) {
56
+ $this->set_prop( 'additional_services', (array) $value );
57
+ }
58
+
59
+ public function set_page_format( $value ) {
60
+ $this->set_prop( 'page_format', $value );
61
+ }
62
+
63
+ public function set_wp_int_awb( $value ) {
64
+ $this->set_prop( 'wp_int_awb', $value );
65
+ }
66
+
67
+ public function set_wp_int_barcode( $value ) {
68
+ $this->set_prop( 'wp_int_barcode', $value );
69
+ }
70
+
71
+ public function get_stamp_total( $context = 'view' ) {
72
+ return $this->get_prop( 'stamp_total', $context );
73
+ }
74
+
75
+ public function set_stamp_total( $value ) {
76
+ $this->set_prop( 'stamp_total', absint( $value ) );
77
+ }
78
+
79
+ public function get_shop_order_id( $context = 'view' ) {
80
+ return $this->get_prop( 'shop_order_id', $context );
81
+ }
82
+
83
+ public function set_shop_order_id( $value ) {
84
+ $this->set_prop( 'shop_order_id', $value );
85
+ }
86
+
87
+ public function set_dhl_product( $product ) {
88
+ $this->set_prop( 'dhl_product', $product );
89
+ }
90
+
91
+ public function get_voucher_id( $context = 'view' ) {
92
+ return $this->get_prop( 'voucher_id', $context );
93
+ }
94
+
95
+ public function set_voucher_id( $value ) {
96
+ $this->set_prop( 'voucher_id', $value );
97
+ }
98
+
99
+ public function get_original_url( $context = 'view' ) {
100
+ return $this->get_prop( 'original_url', $context );
101
+ }
102
+
103
+ public function set_original_url( $value ) {
104
+ $this->set_prop( 'original_url', $value );
105
+ }
106
+
107
+ public function get_manifest_url( $context = 'view' ) {
108
+ return $this->get_prop( 'manifest_url', $context );
109
+ }
110
+
111
+ public function set_manifest_url( $value ) {
112
+ $this->set_prop( 'manifest_url', $value );
113
+ }
114
+
115
+ public function is_warenpost_international() {
116
+ if ( ! empty( $this->get_wp_int_awb() ) ) {
117
+ return true;
118
+ } elseif ( $api = Package::get_internetmarke_api() ) {
119
+ return $api->is_warenpost_international( $this->get_dhl_product() );
120
+ }
121
+
122
+ return false;
123
+ }
124
+
125
+ public function is_trackable() {
126
+ $voucher_id = $this->get_voucher_id();
127
+
128
+ if ( ! empty( $voucher_id ) && $voucher_id !== $this->get_number() ) {
129
+ return true;
130
+ } elseif ( in_array( $this->get_dhl_product(), [ 232, 233, 234, 238, 1007, 195, 1017, 196, 1027, 197, 1037, 198, 1047, 199, 1057, 200 ] ) ) {
131
+ return true;
132
+ } elseif( ! empty( $this->get_wp_int_barcode() ) && in_array( 'TRCK', $this->get_additional_services() ) ) {
133
+ return true;
134
+ }
135
+
136
+ return false;
137
+ }
138
+ }
packages/woocommerce-germanized-dhl/src/DeutschePostReturnLabel.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Vendidero\Germanized\DHL;
4
+ use Vendidero\Germanized\Shipments\Interfaces\ShipmentReturnLabel;
5
+
6
+ defined( 'ABSPATH' ) || exit;
7
+
8
+ /**
9
+ * DHL ReturnLabel class.
10
+ */
11
+ class DeutschePostReturnLabel extends DeutschePostLabel implements ShipmentReturnLabel {
12
+
13
+ protected function get_hook_prefix() {
14
+ return 'woocommerce_gzd_deutsche_post_return_label_get_';
15
+ }
16
+
17
+ public function get_type() {
18
+ return 'deutsche_post_return';
19
+ }
20
+ }
packages/woocommerce-germanized-dhl/src/DownloadHandler.php CHANGED
@@ -1,7 +1,6 @@
1
  <?php
2
 
3
- namespace Vendidero\Germanized\DHL\Admin;
4
- use Vendidero\Germanized\DHL\Package;
5
  use WC_Download_Handler;
6
 
7
  defined( 'ABSPATH' ) || exit;
1
  <?php
2
 
3
+ namespace Vendidero\Germanized\DHL;
 
4
  use WC_Download_Handler;
5
 
6
  defined( 'ABSPATH' ) || exit;
packages/woocommerce-germanized-dhl/src/Install.php CHANGED
@@ -65,6 +65,47 @@ CREATE TABLE {$wpdb->prefix}woocommerce_gzd_dhl_labels (
65
  KEY label_shipment_id (label_shipment_id),
66
  KEY label_parent_id (label_parent_id)
67
  ) $collate;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  CREATE TABLE {$wpdb->prefix}woocommerce_gzd_dhl_labelmeta (
69
  meta_id BIGINT UNSIGNED NOT NULL auto_increment,
70
  gzd_dhl_label_id BIGINT UNSIGNED NOT NULL,
65
  KEY label_shipment_id (label_shipment_id),
66
  KEY label_parent_id (label_parent_id)
67
  ) $collate;
68
+ CREATE TABLE {$wpdb->prefix}woocommerce_gzd_dhl_im_products (
69
+ product_id BIGINT UNSIGNED NOT NULL auto_increment,
70
+ product_im_id BIGINT UNSIGNED NOT NULL,
71
+ product_code INT(16) NOT NULL,
72
+ product_name varchar(150) NOT NULL DEFAULT '',
73
+ product_slug varchar(150) NOT NULL DEFAULT '',
74
+ product_version INT(5) NOT NULL DEFAULT 1,
75
+ product_annotation varchar(500) NOT NULL DEFAULT '',
76
+ product_description varchar(500) NOT NULL DEFAULT '',
77
+ product_information_text TEXT NOT NULL DEFAULT '',
78
+ product_type varchar(50) NOT NULL DEFAULT 'sales',
79
+ product_destination varchar(20) NOT NULL DEFAULT 'national',
80
+ product_price INT(8) NOT NULL,
81
+ product_length_min INT(8) NULL,
82
+ product_length_max INT(8) NULL,
83
+ product_length_unit VARCHAR(8) NULL,
84
+ product_width_min INT(8) NULL,
85
+ product_width_max INT(8) NULL,
86
+ product_width_unit VARCHAR(8) NULL,
87
+ product_height_min INT(8) NULL,
88
+ product_height_max INT(8) NULL,
89
+ product_height_unit VARCHAR(8) NULL,
90
+ product_weight_min INT(8) NULL,
91
+ product_weight_max INT(8) NULL,
92
+ product_weight_unit VARCHAR(8) NULL,
93
+ product_parent_id BIGINT UNSIGNED NOT NULL DEFAULT 0,
94
+ product_service_count INT(3) NOT NULL DEFAULT 0,
95
+ product_is_wp_int INT(1) NOT NULL DEFAULT 0,
96
+ PRIMARY KEY (product_id),
97
+ KEY product_im_id (product_im_id),
98
+ KEY product_code (product_code)
99
+ ) $collate;
100
+ CREATE TABLE {$wpdb->prefix}woocommerce_gzd_dhl_im_product_services (
101
+ product_service_id BIGINT UNSIGNED NOT NULL auto_increment,
102
+ product_service_product_id BIGINT UNSIGNED NOT NULL,
103
+ product_service_product_parent_id BIGINT UNSIGNED NOT NULL,
104
+ product_service_slug VARCHAR(20) NOT NULL DEFAULT '',
105
+ PRIMARY KEY (product_service_id),
106
+ KEY product_service_product_id (product_service_product_id),
107
+ KEY product_service_product_parent_id (product_service_product_parent_id)
108
+ ) $collate;
109
  CREATE TABLE {$wpdb->prefix}woocommerce_gzd_dhl_labelmeta (
110
  meta_id BIGINT UNSIGNED NOT NULL auto_increment,
111
  gzd_dhl_label_id BIGINT UNSIGNED NOT NULL,
packages/woocommerce-germanized-dhl/src/Label.php CHANGED
@@ -1,9 +1,7 @@
1
  <?php
2
 
3
  namespace Vendidero\Germanized\DHL;
4
- use DateTimeZone;
5
- use Vendidero\Germanized\DHL\Admin\DownloadHandler;
6
- use Vendidero\Germanized\Shipments\PDFMerger;
7
  use Vendidero\Germanized\Shipments\Shipment;
8
  use Vendidero\Germanized\Shipments\Interfaces\ShipmentLabel;
9
  use WC_Data;
1
  <?php
2
 
3
  namespace Vendidero\Germanized\DHL;
4
+
 
 
5
  use Vendidero\Germanized\Shipments\Shipment;
6
  use Vendidero\Germanized\Shipments\Interfaces\ShipmentLabel;
7
  use WC_Data;
packages/woocommerce-germanized-dhl/src/LabelWatcher.php CHANGED
@@ -24,10 +24,20 @@ class LabelWatcher {
24
 
25
  // Create labels if they do not yet exist
26
  add_action( 'woocommerce_gzd_dhl_before_create_return_label', array( __CLASS__, 'create_return_label' ), 10, 1 );
27
- add_action( 'woocommerce_gzd_dhl_before_update_reutrn_label', array( __CLASS__, 'update_return_label' ), 10, 1 );
 
 
 
 
 
 
 
 
28
 
29
  // Delete label
30
  add_action( 'woocommerce_gzd_dhl_label_deleted', array( __CLASS__, 'delete_label' ), 10, 2 );
 
 
31
 
32
  // Sync shipment items
33
  add_action( 'woocommerce_gzd_shipment_item_synced', array( __CLASS__, 'sync_item_meta' ), 10, 3 );
@@ -63,6 +73,19 @@ class LabelWatcher {
63
  }
64
  }
65
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  public static function update_label( $label ) {
67
  try {
68
  Package::get_api()->get_label( $label );
@@ -79,6 +102,20 @@ class LabelWatcher {
79
  }
80
  }
81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  public static function delete_label( $label_id, $label ) {
83
  try {
84
  Package::get_api()->delete_label( $label );
24
 
25
  // Create labels if they do not yet exist
26
  add_action( 'woocommerce_gzd_dhl_before_create_return_label', array( __CLASS__, 'create_return_label' ), 10, 1 );
27
+ add_action( 'woocommerce_gzd_dhl_before_update_return_label', array( __CLASS__, 'update_return_label' ), 10, 1 );
28
+
29
+ // Create post labels if they do not yet exist
30
+ add_action( 'woocommerce_gzd_dhl_before_create_deutsche_post_label', array( __CLASS__, 'create_post_label' ), 10, 1 );
31
+ add_action( 'woocommerce_gzd_dhl_before_update_deutsche_post_label', array( __CLASS__, 'update_post_label' ), 10, 1 );
32
+
33
+ // Create post return labels if they do not yet exist
34
+ add_action( 'woocommerce_gzd_dhl_before_create_deutsche_post_return_label', array( __CLASS__, 'create_post_label' ), 10, 1 );
35
+ add_action( 'woocommerce_gzd_dhl_before_update_deutsche_post_return_label', array( __CLASS__, 'update_post_label' ), 10, 1 );
36
 
37
  // Delete label
38
  add_action( 'woocommerce_gzd_dhl_label_deleted', array( __CLASS__, 'delete_label' ), 10, 2 );
39
+ add_action( 'woocommerce_gzd_dhl_deutsche_post_label_deleted', array( __CLASS__, 'delete_post_label' ), 10, 2 );
40
+ add_action( 'woocommerce_gzd_dhl_deutsche_post_return_label_deleted', array( __CLASS__, 'delete_post_label' ), 10, 2 );
41
 
42
  // Sync shipment items
43
  add_action( 'woocommerce_gzd_shipment_item_synced', array( __CLASS__, 'sync_item_meta' ), 10, 3 );
73
  }
74
  }
75
 
76
+ /**
77
+ * @param DeutschePostLabel $label
78
+ *
79
+ * @throws Exception
80
+ */
81
+ public static function create_post_label( $label ) {
82
+ try {
83
+ Package::get_internetmarke_api()->get_label( $label );
84
+ } catch( Exception $e ) {
85
+ throw new Exception( nl2br( $e->getMessage() ) );
86
+ }
87
+ }
88
+
89
  public static function update_label( $label ) {
90
  try {
91
  Package::get_api()->get_label( $label );
102
  }
103
  }
104
 
105
+ public static function update_post_label( $label ) {
106
+ try {
107
+ Package::get_internetmarke_api()->get_label( $label );
108
+ } catch( Exception $e ) {
109
+ throw new Exception( nl2br( $e->getMessage() ) );
110
+ }
111
+ }
112
+
113
+ public static function delete_post_label( $label_id, $label ) {
114
+ try {
115
+ Package::get_internetmarke_api()->delete_label( $label );
116
+ } catch( Exception $e ) {}
117
+ }
118
+
119
  public static function delete_label( $label_id, $label ) {
120
  try {
121
  Package::get_api()->delete_label( $label );
packages/woocommerce-germanized-dhl/src/Package.php CHANGED
@@ -6,6 +6,9 @@ use DateTime;
6
  use DateTimeZone;
7
  use Exception;
8
  use Vendidero\Germanized\DHL\Api\Paket;
 
 
 
9
  use WP_Error;
10
 
11
  defined( 'ABSPATH' ) || exit;
@@ -20,7 +23,7 @@ class Package {
20
  *
21
  * @var string
22
  */
23
- const VERSION = '1.3.2';
24
 
25
  public static $upload_dir_suffix = '';
26
 
@@ -31,7 +34,11 @@ class Package {
31
 
32
  protected static $api = null;
33
 
 
 
34
  protected static $method_settings = null;
 
 
35
 
36
  protected static $iso = null;
37
 
@@ -54,22 +61,39 @@ class Package {
54
  // Password Settings
55
  add_filter( 'woocommerce_admin_settings_sanitize_option_woocommerce_gzd_dhl_api_sandbox_password', array( __CLASS__, 'sanitize_password_field' ), 10, 3 );
56
  add_filter( 'woocommerce_admin_settings_sanitize_option_woocommerce_gzd_dhl_api_password', array( __CLASS__, 'sanitize_password_field' ), 10, 3 );
 
57
 
58
  add_filter( 'woocommerce_admin_settings_sanitize_option_woocommerce_gzd_dhl_api_username', array( __CLASS__, 'sanitize_user_field' ), 10, 3 );
59
  add_filter( 'woocommerce_admin_settings_sanitize_option_woocommerce_gzd_dhl_api_sandbox_username', array( __CLASS__, 'sanitize_user_field' ), 10, 3 );
60
-
61
 
62
  if ( self::is_enabled() ) {
63
- self::init_hooks();
 
 
 
 
64
  }
65
 
66
  self::includes();
67
  }
68
 
 
 
 
 
 
 
 
 
69
  public static function has_dependencies() {
70
  return ( class_exists( 'WooCommerce' ) && class_exists( '\Vendidero\Germanized\Shipments\Package' ) && self::base_country_is_supported() && apply_filters( 'woocommerce_gzd_dhl_enabled', true ) );
71
  }
72
 
 
 
 
 
73
  public static function base_country_is_supported() {
74
  return in_array( self::get_base_country(), self::get_supported_countries() );
75
  }
@@ -143,8 +167,10 @@ class Package {
143
 
144
  // List of tables without prefixes.
145
  $tables = array(
146
- 'gzd_dhl_labelmeta' => 'woocommerce_gzd_dhl_labelmeta',
147
- 'gzd_dhl_labels' => 'woocommerce_gzd_dhl_labels',
 
 
148
  );
149
 
150
  foreach ( $tables as $name => $table ) {
@@ -164,8 +190,12 @@ class Package {
164
  }
165
 
166
  public static function is_enabled() {
167
- return 'yes' === self::get_setting( 'enable' );
168
  }
 
 
 
 
169
 
170
  public static function get_country_iso_alpha3( $country_code ) {
171
  if ( empty( self::$iso ) ) {
@@ -197,6 +227,7 @@ class Package {
197
  ParcelServices::init();
198
  }
199
 
 
200
  ShipmentLabelWatcher::init();
201
  LabelWatcher::init();
202
  Automation::init();
@@ -214,15 +245,6 @@ class Package {
214
 
215
  // Maybe force street number during checkout
216
  add_action( 'woocommerce_after_checkout_validation', array( __CLASS__, 'maybe_force_street_number' ), 10, 2 );
217
-
218
- // add_action( 'admin_init', array( __CLASS__, 'test' ) );
219
- }
220
-
221
- public static function test() {
222
- $label = wc_gzd_dhl_get_label( 289 );
223
-
224
- $api = self::get_api()->get_label( $label );
225
- exit();
226
  }
227
 
228
  public static function sanitize_password_field( $value, $option, $raw_value ) {
@@ -242,7 +264,7 @@ class Package {
242
  public static function maybe_force_street_number( $data, $errors ) {
243
  if ( 'yes' === self::get_setting( 'label_checkout_validate_street_number_address' ) ) {
244
  if ( function_exists( 'wc_gzd_split_shipment_street' ) && ( $method = wc_gzd_dhl_get_current_shipping_method() ) ) {
245
- if ( $method->is_dhl_enabled() ) {
246
  if ( isset( $data['shipping_country'], $data['shipping_address_1'] ) && ! empty( $data['shipping_country'] ) ) {
247
  // Do only check street numbers for inner EU.
248
  if ( ! self::is_crossborder_shipment( $data['shipping_country'] ) ) {
@@ -273,11 +295,13 @@ class Package {
273
 
274
  public static function clean_shipping_provider_settings( $p_settings, $method ) {
275
  $shipping_provider_settings = self::get_method_settings();
 
276
 
277
  foreach( $p_settings as $setting => $value ) {
278
-
279
  if ( array_key_exists( $setting, $shipping_provider_settings ) ) {
280
- if ( self::get_setting( $setting ) === $value ) {
 
 
281
  unset( $p_settings[ $setting ] );
282
  }
283
  }
@@ -294,8 +318,17 @@ class Package {
294
  return self::$method_settings;
295
  }
296
 
 
 
 
 
 
 
 
 
297
  public static function add_shipping_provider_class_name( $class_names ) {
298
- $class_names['dhl'] = '\Vendidero\Germanized\DHL\ShippingProviderDHL';
 
299
 
300
  return $class_names;
301
  }
@@ -327,6 +360,14 @@ class Package {
327
  return self::$api;
328
  }
329
 
 
 
 
 
 
 
 
 
330
  /**
331
  * Return the version of the package.
332
  *
@@ -388,6 +429,82 @@ class Package {
388
  return 'https://www.dhl-geschaeftskundenportal.de';
389
  }
390
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
391
  /**
392
  * CIG Authentication (basic auth) user. In Sandbox mode use Developer ID and password of entwickler.dhl.de
393
  *
@@ -512,7 +629,7 @@ class Package {
512
  }
513
 
514
  public static function get_gk_api_url() {
515
- return self::is_debug_mode() ? 'https://cig.dhl.de/cig-wsdls/com/dpdhl/wsdl/geschaeftskundenversand-api/3.0/geschaeftskundenversand-api-3.0.wsdl' : 'https://cig.dhl.de/cig-wsdls/com/dpdhl/wsdl/geschaeftskundenversand-api/3.0/geschaeftskundenversand-api-3.0.wsdl';
516
  }
517
 
518
  public static function get_parcel_finder_api_url() {
@@ -598,6 +715,10 @@ class Package {
598
  }
599
 
600
  public static function get_wsdl_file( $wsdl_link ) {
 
 
 
 
601
  $main_file = basename( $wsdl_link );
602
  $required_files = array( $main_file );
603
 
@@ -766,14 +887,18 @@ class Package {
766
 
767
  /**
768
  * @param $name
769
- * @param bool|ShippingProviderMethodDHL $method
770
  *
771
  * @return mixed|void
772
  */
773
  public static function get_setting( $name, $method = false ) {
 
774
 
775
  if ( substr( $name, 0, 4 ) === 'dhl_' ) {
776
  $name = substr( $name, 4 );
 
 
 
777
  }
778
 
779
  if ( self::is_debug_mode() ) {
@@ -792,7 +917,11 @@ class Package {
792
  }
793
  }
794
 
795
- $value = get_option( "woocommerce_gzd_dhl_{$name}" );
 
 
 
 
796
 
797
  if ( ! empty( $value ) && strpos( $name, 'password' ) !== false ) {
798
  return stripslashes( $value );
@@ -875,6 +1004,21 @@ class Package {
875
  }
876
  }
877
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
878
  /**
879
  * Function return whether the sender and receiver country is "crossborder" i.e. needs CUSTOMS declarations (outside EU)
880
  */
6
  use DateTimeZone;
7
  use Exception;
8
  use Vendidero\Germanized\DHL\Api\Paket;
9
+ use Vendidero\Germanized\DHL\ShippingProvider\MethodDeutschePost;
10
+ use Vendidero\Germanized\DHL\ShippingProvider\MethodDHL;
11
+ use Vendidero\Germanized\DHL\Api\Internetmarke;
12
  use WP_Error;
13
 
14
  defined( 'ABSPATH' ) || exit;
23
  *
24
  * @var string
25
  */
26
+ const VERSION = '1.4.0';
27
 
28
  public static $upload_dir_suffix = '';
29
 
34
 
35
  protected static $api = null;
36
 
37
+ protected static $im_api = null;
38
+
39
  protected static $method_settings = null;
40
+
41
+ protected static $dp_method_settings = null;
42
 
43
  protected static $iso = null;
44
 
61
  // Password Settings
62
  add_filter( 'woocommerce_admin_settings_sanitize_option_woocommerce_gzd_dhl_api_sandbox_password', array( __CLASS__, 'sanitize_password_field' ), 10, 3 );
63
  add_filter( 'woocommerce_admin_settings_sanitize_option_woocommerce_gzd_dhl_api_password', array( __CLASS__, 'sanitize_password_field' ), 10, 3 );
64
+ add_filter( 'woocommerce_admin_settings_sanitize_option_woocommerce_gzd_dhl_im_api_password', array( __CLASS__, 'sanitize_password_field' ), 10, 3 );
65
 
66
  add_filter( 'woocommerce_admin_settings_sanitize_option_woocommerce_gzd_dhl_api_username', array( __CLASS__, 'sanitize_user_field' ), 10, 3 );
67
  add_filter( 'woocommerce_admin_settings_sanitize_option_woocommerce_gzd_dhl_api_sandbox_username', array( __CLASS__, 'sanitize_user_field' ), 10, 3 );
68
+ add_filter( 'woocommerce_admin_settings_sanitize_option_woocommerce_gzd_dhl_im_api_username', array( __CLASS__, 'sanitize_user_field' ), 10, 3 );
69
 
70
  if ( self::is_enabled() ) {
71
+ if ( self::has_load_dependencies() ) {
72
+ self::init_hooks();
73
+ } else {
74
+ add_action( 'admin_notices', array( __CLASS__, 'load_dependencies_notice' ) );
75
+ }
76
  }
77
 
78
  self::includes();
79
  }
80
 
81
+ public static function load_dependencies_notice() {
82
+ ?>
83
+ <div class="notice notice-error error">
84
+ <p><?php printf( _x( 'To enable communication between your shop and DHL, the PHP <a href="%s">SOAPClient</a> is required. Please contact your host and make sure that SOAPClient is <a href="%s">installed</a>.', 'dhl', 'woocommerce-germanize-dhl' ), 'https://www.php.net/manual/class.soapclient.php', admin_url( 'admin.php?page=wc-status' ) ); ?></p>
85
+ </div>
86
+ <?php
87
+ }
88
+
89
  public static function has_dependencies() {
90
  return ( class_exists( 'WooCommerce' ) && class_exists( '\Vendidero\Germanized\Shipments\Package' ) && self::base_country_is_supported() && apply_filters( 'woocommerce_gzd_dhl_enabled', true ) );
91
  }
92
 
93
+ public static function has_load_dependencies() {
94
+ return ( ! class_exists( 'SoapClient' ) ? false : true );
95
+ }
96
+
97
  public static function base_country_is_supported() {
98
  return in_array( self::get_base_country(), self::get_supported_countries() );
99
  }
167
 
168
  // List of tables without prefixes.
169
  $tables = array(
170
+ 'gzd_dhl_labelmeta' => 'woocommerce_gzd_dhl_labelmeta',
171
+ 'gzd_dhl_labels' => 'woocommerce_gzd_dhl_labels',
172
+ 'gzd_dhl_im_products' => 'woocommerce_gzd_dhl_im_products',
173
+ 'gzd_dhl_im_product_services' => 'woocommerce_gzd_dhl_im_product_services',
174
  );
175
 
176
  foreach ( $tables as $name => $table ) {
190
  }
191
 
192
  public static function is_enabled() {
193
+ return ( self::is_dhl_enabled() || self::is_internetmarke_enabled() );
194
  }
195
+
196
+ public static function is_dhl_enabled() {
197
+ return ( 'yes' === self::get_setting( 'enable' ) );
198
+ }
199
 
200
  public static function get_country_iso_alpha3( $country_code ) {
201
  if ( empty( self::$iso ) ) {
227
  ParcelServices::init();
228
  }
229
 
230
+ Ajax::init();
231
  ShipmentLabelWatcher::init();
232
  LabelWatcher::init();
233
  Automation::init();
245
 
246
  // Maybe force street number during checkout
247
  add_action( 'woocommerce_after_checkout_validation', array( __CLASS__, 'maybe_force_street_number' ), 10, 2 );
 
 
 
 
 
 
 
 
 
248
  }
249
 
250
  public static function sanitize_password_field( $value, $option, $raw_value ) {
264
  public static function maybe_force_street_number( $data, $errors ) {
265
  if ( 'yes' === self::get_setting( 'label_checkout_validate_street_number_address' ) ) {
266
  if ( function_exists( 'wc_gzd_split_shipment_street' ) && ( $method = wc_gzd_dhl_get_current_shipping_method() ) ) {
267
+ if ( $method->is_dhl_enabled() || $method->is_deutsche_post_enabled() ) {
268
  if ( isset( $data['shipping_country'], $data['shipping_address_1'] ) && ! empty( $data['shipping_country'] ) ) {
269
  // Do only check street numbers for inner EU.
270
  if ( ! self::is_crossborder_shipment( $data['shipping_country'] ) ) {
295
 
296
  public static function clean_shipping_provider_settings( $p_settings, $method ) {
297
  $shipping_provider_settings = self::get_method_settings();
298
+ $shipping_provider = isset( $p_settings['shipping_provider'] ) ? $p_settings['shipping_provider'] : '';
299
 
300
  foreach( $p_settings as $setting => $value ) {
 
301
  if ( array_key_exists( $setting, $shipping_provider_settings ) ) {
302
+ if ( substr( $setting, 0, strlen( $shipping_provider ) + 1 ) !== $shipping_provider . '_' ) {
303
+ unset( $p_settings[ $setting ] );
304
+ } elseif ( self::get_setting( $setting ) === $value ) {
305
  unset( $p_settings[ $setting ] );
306
  }
307
  }
318
  return self::$method_settings;
319
  }
320
 
321
+ public static function eur_to_cents( $price ) {
322
+ return round( $price * 100 );
323
+ }
324
+
325
+ public static function cents_to_eur( $price ) {
326
+ return $price > 0 ? $price / 100 : 0;
327
+ }
328
+
329
  public static function add_shipping_provider_class_name( $class_names ) {
330
+ $class_names['dhl'] = '\Vendidero\Germanized\DHL\ShippingProvider\DHL';
331
+ $class_names['deutsche_post'] = '\Vendidero\Germanized\DHL\ShippingProvider\DeutschePost';
332
 
333
  return $class_names;
334
  }
360
  return self::$api;
361
  }
362
 
363
+ public static function get_internetmarke_api() {
364
+ if ( is_null( self::$im_api ) && self::is_internetmarke_enabled() ) {
365
+ self::$im_api = new Internetmarke();
366
+ }
367
+
368
+ return self::$im_api;
369
+ }
370
+
371
  /**
372
  * Return the version of the package.
373
  *
429
  return 'https://www.dhl-geschaeftskundenportal.de';
430
  }
431
 
432
+ public static function get_internetmarke_partner_id() {
433
+ return 'AVHGE';
434
+ }
435
+
436
+ public static function get_internetmarke_token() {
437
+ return 'l4e0TNkqpGKd0YIhyuz3m4vzEek1iZY4';
438
+ }
439
+
440
+ public static function get_internetmarke_key_phase() {
441
+ return 1;
442
+ }
443
+
444
+ public static function get_internetmarke_product_username() {
445
+ return 'vendidero';
446
+ }
447
+
448
+ public static function get_internetmarke_product_password() {
449
+ return 'A&5%bk?dx8';
450
+ }
451
+
452
+ public static function get_internetmarke_product_mandant_id() {
453
+ return 'VENDIDERO';
454
+ }
455
+
456
+ public static function is_internetmarke_enabled() {
457
+ return 'yes' === self::get_setting( 'internetmarke_enable' );
458
+ }
459
+
460
+ public static function get_internetmarke_username() {
461
+ if ( self::is_debug_mode() && defined( 'WC_GZD_DHL_IM_SANDBOX_USER' ) ) {
462
+ return WC_GZD_DHL_IM_SANDBOX_USER;
463
+ } else {
464
+ return self::get_setting( 'im_api_username' );
465
+ }
466
+ }
467
+
468
+ public static function get_internetmarke_warenpost_int_ekp() {
469
+ $ekp = self::get_setting( 'internetmarke_warenpost_int_ekp' );
470
+
471
+ if ( empty( $ekp ) ) {
472
+ $ekp = '0000012207';
473
+ }
474
+
475
+ return $ekp;
476
+ }
477
+
478
+ /**
479
+ * The Warenpost International API (necessary for customs forms)
480
+ * needs separate Sandbox credentials. In live mode the Portokasse credentials are being used.
481
+ *
482
+ * @return string
483
+ */
484
+ public static function get_internetmarke_warenpost_int_username() {
485
+ if ( self::is_debug_mode() && defined( 'WC_GZD_DHL_IM_WP_SANDBOX_USER' ) ) {
486
+ return WC_GZD_DHL_IM_WP_SANDBOX_USER;
487
+ } else {
488
+ return self::get_setting( 'im_api_username' );
489
+ }
490
+ }
491
+
492
+ public static function get_internetmarke_password() {
493
+ if ( self::is_debug_mode() && defined( 'WC_GZD_DHL_IM_SANDBOX_PASSWORD' ) ) {
494
+ return WC_GZD_DHL_IM_SANDBOX_PASSWORD;
495
+ } else {
496
+ return self::get_setting( 'im_api_password' );
497
+ }
498
+ }
499
+
500
+ public static function get_internetmarke_warenpost_int_password() {
501
+ if ( self::is_debug_mode() && defined( 'WC_GZD_DHL_IM_WP_SANDBOX_PASSWORD' ) ) {
502
+ return WC_GZD_DHL_IM_WP_SANDBOX_PASSWORD;
503
+ } else {
504
+ return self::get_setting( 'im_api_password' );
505
+ }
506
+ }
507
+
508
  /**
509
  * CIG Authentication (basic auth) user. In Sandbox mode use Developer ID and password of entwickler.dhl.de
510
  *
629
  }
630
 
631
  public static function get_gk_api_url() {
632
+ return self::is_debug_mode() ? 'https://cig.dhl.de/cig-wsdls/com/dpdhl/wsdl/geschaeftskundenversand-api/3.1/geschaeftskundenversand-api-3.1.wsdl' : 'https://cig.dhl.de/cig-wsdls/com/dpdhl/wsdl/geschaeftskundenversand-api/3.1/geschaeftskundenversand-api-3.1.wsdl';
633
  }
634
 
635
  public static function get_parcel_finder_api_url() {
715
  }
716
 
717
  public static function get_wsdl_file( $wsdl_link ) {
718
+ if ( self::is_debug_mode() ) {
719
+ return $wsdl_link;
720
+ }
721
+
722
  $main_file = basename( $wsdl_link );
723
  $required_files = array( $main_file );
724
 
887
 
888
  /**
889
  * @param $name
890
+ * @param bool|MethodDHL|MethodDeutschePost $method
891
  *
892
  * @return mixed|void
893
  */
894
  public static function get_setting( $name, $method = false ) {
895
+ $is_dp = false;
896
 
897
  if ( substr( $name, 0, 4 ) === 'dhl_' ) {
898
  $name = substr( $name, 4 );
899
+ } elseif( substr( $name, 0, 14 ) === 'deutsche_post_' ) {
900
+ $name = substr( $name, 14 );
901
+ $is_dp = true;
902
  }
903
 
904
  if ( self::is_debug_mode() ) {
917
  }
918
  }
919
 
920
+ if ( ! $is_dp ) {
921
+ $value = get_option( "woocommerce_gzd_dhl_{$name}" );
922
+ } else {
923
+ $value = get_option( "woocommerce_gzd_deutsche_post_{$name}" );
924
+ }
925
 
926
  if ( ! empty( $value ) && strpos( $name, 'password' ) !== false ) {
927
  return stripslashes( $value );
1004
  }
1005
  }
1006
 
1007
+ /**
1008
+ * Check if it is an EU shipment
1009
+ */
1010
+ public static function is_eu_shipment( $country_receiver ) {
1011
+ if ( self::is_shipping_domestic( $country_receiver ) ) {
1012
+ return false;
1013
+ }
1014
+
1015
+ if ( in_array( $country_receiver, WC()->countries->get_european_union_countries() ) ) {
1016
+ return true;
1017
+ } else {
1018
+ return false;
1019
+ }
1020
+ }
1021
+
1022
  /**
1023
  * Function return whether the sender and receiver country is "crossborder" i.e. needs CUSTOMS declarations (outside EU)
1024
  */
packages/woocommerce-germanized-dhl/src/ParcelLocator.php CHANGED
@@ -2,6 +2,7 @@
2
 
3
  namespace Vendidero\Germanized\DHL;
4
  use Exception;
 
5
  use Vendidero\Germanized\Shipments\Shipment;
6
  use WC_Checkout;
7
  use WC_Order;
@@ -820,7 +821,7 @@ class ParcelLocator {
820
  /**
821
  * @param string $sep
822
  * @param bool $plural
823
- * @param bool|ShippingProviderMethodDHL $method
824
  *
825
  * @return string
826
  */
@@ -881,6 +882,7 @@ class ParcelLocator {
881
  'clear' => true,
882
  'priority' => 5,
883
  'options' => self::get_address_types(),
 
884
  );
885
 
886
  $fields['shipping_dhl_postnumber'] = array(
@@ -909,8 +911,8 @@ class ParcelLocator {
909
  * Filter to adjust the pickup type address label added
910
  * to the address field when a certain pickup type was chosen.
911
  *
912
- * @param string $pickup_type_text The pickup type text.
913
- * @param boolean|ShippingProviderMethodDHL $method The shipping method object if available.
914
  *
915
  * @since 3.0.0
916
  * @package Vendidero/Germanized/DHL
@@ -923,8 +925,8 @@ class ParcelLocator {
923
  * Filter to adjust the pickup type address placeholder added
924
  * to the address field when a certain pickup type was chosen.
925
  *
926
- * @param string $pickup_type_text The pickup type placeholder text.
927
- * @param boolean|ShippingProviderMethodDHL $method The shipping method object if available.
928
  *
929
  * @since 3.0.0
930
  * @package Vendidero/Germanized/DHL
2
 
3
  namespace Vendidero\Germanized\DHL;
4
  use Exception;
5
+ use Vendidero\Germanized\DHL\ShippingProvider\MethodDHL;
6
  use Vendidero\Germanized\Shipments\Shipment;
7
  use WC_Checkout;
8
  use WC_Order;
821
  /**
822
  * @param string $sep
823
  * @param bool $plural
824
+ * @param bool|MethodDHL $method
825
  *
826
  * @return string
827
  */
882
  'clear' => true,
883
  'priority' => 5,
884
  'options' => self::get_address_types(),
885
+ 'default' => 'regular',
886
  );
887
 
888
  $fields['shipping_dhl_postnumber'] = array(
911
  * Filter to adjust the pickup type address label added
912
  * to the address field when a certain pickup type was chosen.
913
  *
914
+ * @param string $pickup_type_text The pickup type text.
915
+ * @param boolean|MethodDHL $method The shipping method object if available.
916
  *
917
  * @since 3.0.0
918
  * @package Vendidero/Germanized/DHL
925
  * Filter to adjust the pickup type address placeholder added
926
  * to the address field when a certain pickup type was chosen.
927
  *
928
+ * @param string $pickup_type_text The pickup type placeholder text.
929
+ * @param boolean|MethodDHL $method The shipping method object if available.
930
  *
931
  * @since 3.0.0
932
  * @package Vendidero/Germanized/DHL
packages/woocommerce-germanized-dhl/src/ReturnLabel.php CHANGED
@@ -1,13 +1,7 @@
1
  <?php
2
 
3
  namespace Vendidero\Germanized\DHL;
4
- use DateTimeZone;
5
- use Vendidero\Germanized\Shipments\Shipment;
6
  use Vendidero\Germanized\Shipments\Interfaces\ShipmentReturnLabel;
7
- use WC_Data;
8
- use WC_Data_Store;
9
- use Exception;
10
- use WC_DateTime;
11
 
12
  defined( 'ABSPATH' ) || exit;
13
 
@@ -22,9 +16,14 @@ class ReturnLabel extends Label implements ShipmentReturnLabel {
22
  * @var array
23
  */
24
  protected $extra_data = array(
 
 
 
 
 
 
25
  'parent_id' => 0,
26
- 'sender_address' => array(),
27
- 'receiver_slug' => '',
28
  );
29
 
30
  protected function get_hook_prefix() {
1
  <?php
2
 
3
  namespace Vendidero\Germanized\DHL;
 
 
4
  use Vendidero\Germanized\Shipments\Interfaces\ShipmentReturnLabel;
 
 
 
 
5
 
6
  defined( 'ABSPATH' ) || exit;
7
 
16
  * @var array
17
  */
18
  protected $extra_data = array(
19
+ 'page_format' => '',
20
+ 'shop_order_id' => '',
21
+ 'stamp_total' => 0,
22
+ 'voucher_id' => '',
23
+ 'original_url' => '',
24
+ 'manifest_url' => '',
25
  'parent_id' => 0,
26
+ 'sender_address' => array()
 
27
  );
28
 
29
  protected function get_hook_prefix() {
packages/woocommerce-germanized-dhl/src/ShipmentLabelWatcher.php CHANGED
@@ -21,12 +21,38 @@ class ShipmentLabelWatcher {
21
  add_action( 'woocommerce_gzd_shipment_create_dhl_label', array( __CLASS__, 'create_shipment_label' ), 10, 4 );
22
  add_action( 'woocommerce_gzd_return_shipment_create_dhl_label', array( __CLASS__, 'create_return_shipment_label' ), 10, 4 );
23
 
 
 
 
24
  // Return the DHL label for a shipment if available
25
  add_filter( 'woocommerce_gzd_shipment_get_dhl_label', array( __CLASS__, 'get_shipment_label' ), 10, 2 );
26
  add_filter( 'woocommerce_gzd_return_shipment_get_dhl_label', array( __CLASS__, 'get_shipment_label' ), 10, 2 );
27
 
 
 
 
28
  // Legacy ShippingProviderMethod hook support
29
  add_filter( 'woocommerce_gzd_shipping_provider_method_provider', array( __CLASS__, 'legacy_provider_hook_support' ), 10, 3 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  }
31
 
32
  public static function legacy_provider_hook_support( $provider, $method_id, $shipping_provider_method ) {
@@ -76,7 +102,41 @@ class ShipmentLabelWatcher {
76
  * @param array $raw_data
77
  */
78
  public static function create_return_shipment_label( $data, $error, $shipment, $raw_data ) {
79
- $label = wc_gzd_dhl_create_label( $shipment, $data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
 
81
  if ( is_wp_error( $label ) ) {
82
  foreach( $label->get_error_messages() as $message ) {
21
  add_action( 'woocommerce_gzd_shipment_create_dhl_label', array( __CLASS__, 'create_shipment_label' ), 10, 4 );
22
  add_action( 'woocommerce_gzd_return_shipment_create_dhl_label', array( __CLASS__, 'create_return_shipment_label' ), 10, 4 );
23
 
24
+ add_action( 'woocommerce_gzd_shipment_create_deutsche_post_label', array( __CLASS__, 'create_shipment_post_label' ), 10, 4 );
25
+ add_action( 'woocommerce_gzd_return_shipment_create_deutsche_post_label', array( __CLASS__, 'create_return_shipment_post_label' ), 10, 4 );
26
+
27
  // Return the DHL label for a shipment if available
28
  add_filter( 'woocommerce_gzd_shipment_get_dhl_label', array( __CLASS__, 'get_shipment_label' ), 10, 2 );
29
  add_filter( 'woocommerce_gzd_return_shipment_get_dhl_label', array( __CLASS__, 'get_shipment_label' ), 10, 2 );
30
 
31
+ add_filter( 'woocommerce_gzd_shipment_get_deutsche_post_label', array( __CLASS__, 'get_shipment_label' ), 10, 2 );
32
+ add_filter( 'woocommerce_gzd_return_shipment_get_deutsche_post_label', array( __CLASS__, 'get_shipment_label' ), 10, 2 );
33
+
34
  // Legacy ShippingProviderMethod hook support
35
  add_filter( 'woocommerce_gzd_shipping_provider_method_provider', array( __CLASS__, 'legacy_provider_hook_support' ), 10, 3 );
36
+
37
+ add_filter( 'woocommerce_gzd_shipment_get_tracking_url', array( __CLASS__, 'filter_tracking_url' ), 10, 2 );
38
+ }
39
+
40
+ /**
41
+ * In case the label is not trackable (e.g. Brief), do not return a tracking url for the shipment.
42
+ *
43
+ * @param $tracking_url
44
+ * @param Shipment $shipment
45
+ */
46
+ public static function filter_tracking_url( $tracking_url, $shipment ) {
47
+ if ( 'deutsche_post' === $shipment->get_shipping_provider() ) {
48
+ if ( $label = $shipment->get_label() ) {
49
+ if ( is_callable( array( $label, 'is_trackable' ) ) && ! $label->is_trackable() ) {
50
+ return '';
51
+ }
52
+ }
53
+ }
54
+
55
+ return $tracking_url;
56
  }
57
 
58
  public static function legacy_provider_hook_support( $provider, $method_id, $shipping_provider_method ) {
102
  * @param array $raw_data
103
  */
104
  public static function create_return_shipment_label( $data, $error, $shipment, $raw_data ) {
105
+ self::create_shipment_label( $data, $error, $shipment, $raw_data );
106
+ }
107
+
108
+ /**
109
+ * @param array $data
110
+ * @param WP_Error $error
111
+ * @param ReturnShipment $shipment
112
+ * @param array $raw_data
113
+ */
114
+ public static function create_return_shipment_post_label( $data, $error, $shipment, $raw_data ) {
115
+ self::create_shipment_post_label( $data, $error, $shipment, $raw_data );
116
+ }
117
+
118
+ /**
119
+ * @param array $data
120
+ * @param WP_Error $error
121
+ * @param Shipment $shipment
122
+ * @param array $raw_data
123
+ */
124
+ public static function create_shipment_post_label( $data, $error, $shipment, $raw_data ) {
125
+ $props = array();
126
+
127
+ /**
128
+ * Do only parse post data if raw_data was passed which indicates that the label creation request is
129
+ * a manual user based request - in other cases - use defaults instead to prevent argument overrides.
130
+ */
131
+ if ( ! empty( $raw_data ) ) {
132
+ $props = array();
133
+
134
+ foreach( $data as $key => $value ) {
135
+ $props[ $key ] = $value;
136
+ }
137
+ }
138
+
139
+ $label = wc_gzd_dhl_create_label( $shipment, $props );
140
 
141
  if ( is_wp_error( $label ) ) {
142
  foreach( $label->get_error_messages() as $message ) {
packages/woocommerce-germanized-dhl/src/{ShippingProviderDHL.php → ShippingProvider/DHL.php} RENAMED
@@ -4,13 +4,14 @@
4
  *
5
  * @package WooCommerce/Blocks
6
  */
7
- namespace Vendidero\Germanized\DHL;
8
 
 
9
  use Vendidero\Germanized\Shipments\ShippingProvider;
10
 
11
  defined( 'ABSPATH' ) || exit;
12
 
13
- class ShippingProviderDHL extends ShippingProvider {
14
 
15
  public function is_manual_integration() {
16
  return false;
@@ -26,8 +27,12 @@ class ShippingProviderDHL extends ShippingProvider {
26
  return in_array( $label_type, $label_types );
27
  }
28
 
 
 
 
 
29
  public function is_activated() {
30
- return Package::is_enabled();
31
  }
32
 
33
  public function get_title( $context = 'view' ) {
4
  *
5
  * @package WooCommerce/Blocks
6
  */
7
+ namespace Vendidero\Germanized\DHL\ShippingProvider;
8
 
9
+ use Vendidero\Germanized\DHL\Package;
10
  use Vendidero\Germanized\Shipments\ShippingProvider;
11
 
12
  defined( 'ABSPATH' ) || exit;
13
 
14
+ class DHL extends ShippingProvider {
15
 
16
  public function is_manual_integration() {
17
  return false;
27
  return in_array( $label_type, $label_types );
28
  }
29
 
30
+ public function supports_customer_return_requests() {
31
+ return ( 'yes' === Package::get_setting( 'dhl_label_retoure_enable' ) ? true : false );
32
+ }
33
+
34
  public function is_activated() {
35
+ return Package::is_dhl_enabled();
36
  }
37
 
38
  public function get_title( $context = 'view' ) {
packages/woocommerce-germanized-dhl/src/ShippingProvider/DeutschePost.php ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * ShippingProvider impl.
4
+ *
5
+ * @package WooCommerce/Blocks
6
+ */
7
+ namespace Vendidero\Germanized\DHL\ShippingProvider;
8
+
9
+ use Vendidero\Germanized\DHL\Package;
10
+ use Vendidero\Germanized\Shipments\ShippingProvider;
11
+
12
+ defined( 'ABSPATH' ) || exit;
13
+
14
+ class DeutschePost extends ShippingProvider {
15
+
16
+ public function is_manual_integration() {
17
+ return false;
18
+ }
19
+
20
+ public function supports_labels( $label_type ) {
21
+ $label_types = array( 'simple', 'return' );
22
+
23
+ return in_array( $label_type, $label_types );
24
+ }
25
+
26
+ public function is_activated() {
27
+ return Package::is_internetmarke_enabled();
28
+ }
29
+
30
+ public function get_title( $context = 'view' ) {
31
+ return _x( 'Deutsche Post', 'dhl', 'woocommerce-germanized' );
32
+ }
33
+
34
+ public function get_name( $context = 'view' ) {
35
+ return 'deutsche_post';
36
+ }
37
+
38
+ public function get_description( $context = 'view' ) {
39
+ return _x( 'Integration for products of the Deutsche Post through Internetmarke.', 'dhl', 'woocommerce-germanized' );
40
+ }
41
+
42
+ public function get_additional_options_url() {
43
+ return admin_url( 'admin.php?page=wc-settings&tab=germanized-dhl&section=internetmarke' );
44
+ }
45
+
46
+ public function get_default_tracking_url_placeholder() {
47
+ return 'https://www.deutschepost.de/sendung/simpleQueryResult.html?form.sendungsnummer={tracking_id}&form.einlieferungsdatum_tag={label_date_day}&form.einlieferungsdatum_monat={label_date_month}&form.einlieferungsdatum_jahr={label_date_year}';
48
+ }
49
+
50
+ public function get_tracking_url_placeholder( $context = 'view' ) {
51
+ $data = parent::get_tracking_url_placeholder( $context );
52
+
53
+ // In case the option value is not stored in DB yet
54
+ if ( 'view' === $context && empty( $data ) ) {
55
+ $data = $this->get_default_tracking_url_placeholder();
56
+ }
57
+
58
+ return $data;
59
+ }
60
+
61
+ public function get_tracking_desc_placeholder( $context = 'view' ) {
62
+ $data = parent::get_tracking_desc_placeholder( $context );
63
+
64
+ // In case the option value is not stored in DB yet
65
+ if ( 'view' === $context && empty( $data ) ) {
66
+ $data = $this->get_default_tracking_desc_placeholder();
67
+ }
68
+
69
+ return $data;
70
+ }
71
+
72
+ public function deactivate() {
73
+ update_option( 'woocommerce_gzd_dhl_internetmarke_enable', 'no' );
74
+
75
+ /**
76
+ * This action is documented in woocommerce-germanized-shipments/src/ShippingProvider.php
77
+ */
78
+ do_action( 'woocommerce_gzd_shipping_provider_activated', $this );
79
+ }
80
+
81
+ public function activate() {
82
+ update_option( 'woocommerce_gzd_dhl_internetmarke_enable', 'yes' );
83
+
84
+ /**
85
+ * This action is documented in woocommerce-germanized-shipments/src/ShippingProvider.php
86
+ */
87
+ do_action( 'woocommerce_gzd_shipping_provider_deactivated', $this );
88
+ }
89
+ }
packages/woocommerce-germanized-dhl/src/{ShippingProviderMethodDHL.php → ShippingProvider/MethodDHL.php} RENAMED
@@ -1,13 +1,9 @@
1
  <?php
2
 
3
- namespace Vendidero\Germanized\DHL;
4
 
 
5
  use Vendidero\Germanized\Shipments\ShippingProviderMethod;
6
- use Exception;
7
- use WC_Order;
8
- use WC_Customer;
9
- use WC_DateTime;
10
- use WC_Shipping_Method;
11
 
12
  defined( 'ABSPATH' ) || exit;
13
 
@@ -18,7 +14,7 @@ defined( 'ABSPATH' ) || exit;
18
  * @version 1.0.0
19
  * @author Vendidero
20
  */
21
- class ShippingProviderMethodDHL {
22
 
23
  /**
24
  * @var ShippingProviderMethod|null
@@ -78,8 +74,8 @@ class ShippingProviderMethodDHL {
78
  * Filter that allows adjusting whether this method supports DHL custom settings or not.
79
  * By default only shipping methods supporting instance-settings and instance-settings-modal are supported.
80
  *
81
- * @param boolean $supports_settings Whether or not the method supports custom DHL settings.
82
- * @param ShippingProviderMethodDHL $method The method instance.
83
  *
84
  * @since 3.1.1
85
  * @package Vendidero/Germanized/DHL
@@ -115,6 +111,10 @@ class ShippingProviderMethodDHL {
115
  return $this->method->is_enabled( 'dhl' );
116
  }
117
 
 
 
 
 
118
  public function is_packstation_enabled() {
119
  return $this->get_option( 'dhl_parcel_pickup_packstation_enable' ) === 'yes' ? true : false;
120
  }
1
  <?php
2
 
3
+ namespace Vendidero\Germanized\DHL\ShippingProvider;
4
 
5
+ use Vendidero\Germanized\DHL\Package;
6
  use Vendidero\Germanized\Shipments\ShippingProviderMethod;
 
 
 
 
 
7
 
8
  defined( 'ABSPATH' ) || exit;
9
 
14
  * @version 1.0.0
15
  * @author Vendidero
16
  */
17
+ class MethodDHL {
18
 
19
  /**
20
  * @var ShippingProviderMethod|null
74
  * Filter that allows adjusting whether this method supports DHL custom settings or not.
75
  * By default only shipping methods supporting instance-settings and instance-settings-modal are supported.
76
  *
77
+ * @param boolean $supports_settings Whether or not the method supports custom DHL settings.
78
+ * @param MethodDHL $method The method instance.
79
  *
80
  * @since 3.1.1
81
  * @package Vendidero/Germanized/DHL
111
  return $this->method->is_enabled( 'dhl' );
112
  }
113
 
114
+ public function is_deutsche_post_enabled() {
115
+ return $this->method->is_enabled( 'deutsche_post' );
116
+ }
117
+
118
  public function is_packstation_enabled() {
119
  return $this->get_option( 'dhl_parcel_pickup_packstation_enable' ) === 'yes' ? true : false;
120
  }
packages/woocommerce-germanized-dhl/src/ShippingProvider/MethodDeutschePost.php ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Vendidero\Germanized\DHL\ShippingProvider;
4
+
5
+ use Vendidero\Germanized\DHL\Package;
6
+ use Vendidero\Germanized\Shipments\ShippingProviderMethod;
7
+
8
+ defined( 'ABSPATH' ) || exit;
9
+
10
+ /**
11
+ * Shipment Order
12
+ *
13
+ * @class WC_GZD_Shipment_Order
14
+ * @version 1.0.0
15
+ * @author Vendidero
16
+ */
17
+ class MethodDeutschePost {
18
+
19
+ /**
20
+ * @var ShippingProviderMethod|null
21
+ */
22
+ protected $method = null;
23
+
24
+ protected $is_placeholder = false;
25
+
26
+ /**
27
+ * ShippingProviderMethodDHL constructor.
28
+ *
29
+ * @param ShippingProviderMethod $method
30
+ */
31
+ public function __construct( $method ) {
32
+ $this->method = $method;
33
+
34
+ if ( is_a( $this->method, '\Vendidero\Germanized\Shipments\ShippingProviderMethodPlaceholder' ) ) {
35
+ $this->is_placeholder = true;
36
+ }
37
+ }
38
+
39
+ protected function maybe_prefix_key( $key ) {
40
+ if ( substr( $key, 0, 14 ) !== 'deutsche_post_' ) {
41
+ $key = 'deutsche_post_' . $key;
42
+ }
43
+
44
+ return $key;
45
+ }
46
+
47
+ protected function is_placeholder() {
48
+ return $this->is_placeholder;
49
+ }
50
+
51
+ public function has_option( $key ) {
52
+ $dhl_key = $this->maybe_prefix_key( $key );
53
+
54
+ if ( ! $this->is_placeholder() ) {
55
+ return $this->method->has_option( $dhl_key );
56
+ } else {
57
+ // Check if option exists within method instance settings array
58
+ $method_settings = array_keys( Package::get_method_settings() );
59
+
60
+ if ( in_array( $dhl_key, $method_settings ) ) {
61
+ return true;
62
+ } else {
63
+ return false;
64
+ }
65
+ }
66
+ }
67
+
68
+ protected function supports_settings() {
69
+ $supports_settings = ( $this->method->supports( 'instance-settings' ) && $this->method->supports( 'instance-settings-modal' ) ) ? true : false;
70
+
71
+ /**
72
+ * Filter that allows adjusting whether this method supports Deutsche Post custom settings or not.
73
+ * By default only shipping methods supporting instance-settings and instance-settings-modal are supported.
74
+ *
75
+ * @param boolean $supports_settings Whether or not the method supports custom DHL settings.
76
+ * @param MethodDHL $method The method instance.
77
+ *
78
+ * @since 3.1.1
79
+ * @package Vendidero/Germanized/DHL
80
+ */
81
+ return apply_filters( 'woocommerce_gzd_deutsche_post_shipping_provider_method_supports_settings', $supports_settings, $this );
82
+ }
83
+
84
+ public function get_option( $key ) {
85
+ $dhl_key = $this->maybe_prefix_key( $key );
86
+
87
+ if ( $this->has_option( $key ) ) {
88
+
89
+ // Do only use method settings if the method is not a placeholder and method supports settings
90
+ if ( ! $this->is_placeholder() && $this->supports_settings() ) {
91
+ $option_value = $this->method->get_option( $dhl_key );
92
+ } else {
93
+ $option_value = Package::get_setting( $dhl_key );
94
+ }
95
+
96
+ if ( strpos( $key, 'enable' ) !== false ) {
97
+ if ( 'yes' === $option_value && ! $this->is_deutsche_post_enabled() ) {
98
+ $option_value = 'no';
99
+ }
100
+ }
101
+ } else {
102
+ $option_value = $this->method->get_option( $key );
103
+ }
104
+
105
+ return $option_value;
106
+ }
107
+
108
+ public function is_deutsche_post_enabled() {
109
+ return $this->method->is_enabled( 'deutsche_post' );
110
+ }
111
+
112
+ /**
113
+ * Call child methods if the method does not exist.
114
+ *
115
+ * @param $method
116
+ * @param $args
117
+ *
118
+ * @return bool|mixed
119
+ */
120
+ public function __call( $method, $args ) {
121
+ if ( method_exists( $this->method, $method ) ) {
122
+ return call_user_func_array( array( $this->method, $method ), $args );
123
+ }
124
+
125
+ return false;
126
+ }
127
+ }
packages/woocommerce-germanized-dhl/woocommerce-germanized-dhl.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: The Germanized DHL integration, installed as a feature plugin for development and testing purposes.
6
  * Author: vendidero
7
  * Author URI: https://vendidero.de
8
- * Version: 1.3.2
9
  * Requires PHP: 5.6
10
  * License: GPLv3
11
  *
5
  * Description: The Germanized DHL integration, installed as a feature plugin for development and testing purposes.
6
  * Author: vendidero
7
  * Author URI: https://vendidero.de
8
+ * Version: 1.4.0
9
  * Requires PHP: 5.6
10
  * License: GPLv3
11
  *
packages/woocommerce-germanized-shipments/assets/css/admin.css CHANGED
@@ -33,7 +33,8 @@
33
  .germanized-create-label p.form-field label {
34
  width: 100%;
35
  display: block;
36
- margin-bottom: 5px; }
 
37
 
38
  .germanized-create-label p.form-field select, .germanized-create-label p.form-field input[type=text], .germanized-create-label p.form-field input[type=email] {
39
  width: 100%;
@@ -50,6 +51,7 @@
50
  .germanized-create-label p.form-field.form-field-checkbox label {
51
  width: auto;
52
  margin-left: .5em;
 
53
  order: 2;
54
  margin-bottom: 0; }
55
  .germanized-create-label p.form-field.form-field-checkbox input[type=checkbox] {
@@ -429,6 +431,8 @@ table.wc-gzd-shipping-providers {
429
  display: block; }
430
  .germanized-shipments #panel-order-shipments .order-shipment p.form-row {
431
  margin-bottom: 1.5em; }
 
 
432
  .germanized-shipments #panel-order-shipments .order-shipment p.form-row input[type=text], .germanized-shipments #panel-order-shipments .order-shipment p.form-row input[type=number], .germanized-shipments #panel-order-shipments .order-shipment p.form-row input[type=email] {
433
  height: 30px; }
434
  .germanized-shipments #panel-order-shipments .order-shipment p.form-row select {
33
  .germanized-create-label p.form-field label {
34
  width: 100%;
35
  display: block;
36
+ margin-bottom: 5px;
37
+ font-weight: bold; }
38
 
39
  .germanized-create-label p.form-field select, .germanized-create-label p.form-field input[type=text], .germanized-create-label p.form-field input[type=email] {
40
  width: 100%;
51
  .germanized-create-label p.form-field.form-field-checkbox label {
52
  width: auto;
53
  margin-left: .5em;
54
+ font-weight: normal;
55
  order: 2;
56
  margin-bottom: 0; }
57
  .germanized-create-label p.form-field.form-field-checkbox input[type=checkbox] {
431
  display: block; }
432
  .germanized-shipments #panel-order-shipments .order-shipment p.form-row {
433
  margin-bottom: 1.5em; }
434
+ .germanized-shipments #panel-order-shipments .order-shipment p.form-row.wc-gzd-shipment-packaging-wrapper {
435
+ margin-top: 0; }
436
  .germanized-shipments #panel-order-shipments .order-shipment p.form-row input[type=text], .germanized-shipments #panel-order-shipments .order-shipment p.form-row input[type=number], .germanized-shipments #panel-order-shipments .order-shipment p.form-row input[type=email] {
437
  height: 30px; }
438
  .germanized-shipments #panel-order-shipments .order-shipment p.form-row select {
packages/woocommerce-germanized-shipments/assets/css/admin.min.css CHANGED
@@ -1 +1 @@
1
- .germanized-create-label .notice-wrapper .notice{margin:0;margin-bottom:1em}.germanized-create-label .notice-wrapper .notice p{margin:.5em 0!important;padding:2px!important;font-size:13px;line-height:1.5}.germanized-create-label p.form-field{display:inline-block;width:100%;margin-bottom:5px!important;margin-top:5px!important}.germanized-create-label p.form-field:first-child,.germanized-create-label p.form-field:last-child{margin-bottom:5px!important;margin-top:5px!important}.germanized-create-label .columns{margin-left:-.5rem!important;margin-right:-.5rem!important}.germanized-create-label .column{padding-left:.5rem!important;padding-right:.5rem!important}.germanized-create-label .hide-default,.germanized-create-label .show-if{display:none}.germanized-create-label .show-if label{color:#777}.germanized-create-label p.form-field label{width:100%;display:block;margin-bottom:5px}.germanized-create-label p.form-field input[type=email],.germanized-create-label p.form-field input[type=text],.germanized-create-label p.form-field select{width:100%;max-width:100%}.germanized-create-label p.form-field.form-field-checkbox{display:flex;flex-wrap:wrap;flex-direction:row;justify-content:flex-start;margin-top:10px!important;margin-bottom:10px!important;align-items:center}.germanized-create-label p.form-field.form-field-checkbox label{width:auto;margin-left:.5em;order:2;margin-bottom:0}.germanized-create-label p.form-field.form-field-checkbox input[type=checkbox]{order:1}.germanized-create-label p.form-field.form-field-checkbox .woocommerce-help-tip{order:3;margin-left:3px}.germanized-create-label p.form-field.form-field-checkbox .description{width:100%;margin-top:5px;color:#777;order:4;font-style:normal}table.wc-gzd-shipping-providers{margin-top:1.5em}table.wc-gzd-shipping-providers td,table.wc-gzd-shipping-providers th{display:table-cell!important;padding:1em!important;vertical-align:top;line-height:1.75em;font-size:14px}table.wc-gzd-shipping-providers th{font-weight:600}table.wc-gzd-shipping-providers td.wc-gzd-shipping-provider-activated,table.wc-gzd-shipping-providers th.wc-gzd-shipping-provider-activated{width:1%;text-align:center}table.wc-gzd-shipping-providers td.wc-gzd-shipping-provider-activated .status-disabled,table.wc-gzd-shipping-providers td.wc-gzd-shipping-provider-activated .status-enabled,table.wc-gzd-shipping-providers th.wc-gzd-shipping-provider-activated .status-disabled,table.wc-gzd-shipping-providers th.wc-gzd-shipping-provider-activated .status-enabled{display:inline-block;margin-top:3px}table.wc-gzd-shipping-providers td.wc-gzd-shipping-provider-actions,table.wc-gzd-shipping-providers th.wc-gzd-shipping-provider-actions{width:15%;text-align:right}table.wc-gzd-shipping-providers td.wc-gzd-shipping-provider-actions{display:flex;justify-content:flex-end;flex-wrap:wrap}table.wc-gzd-shipping-providers td.wc-gzd-shipping-provider-actions .button{margin-right:5px}table.wc-gzd-shipping-providers td.wc-gzd-shipping-provider-actions .button:last-child{margin-right:0}table.wc-gzd-shipping-providers td.wc-gzd-shipping-provider-title,table.wc-gzd-shipping-providers th.wc-gzd-shipping-provider-title{width:30ch}table.wc-gzd-shipping-providers tr:nth-child(odd) td{background:#f9f9f9}.order-return-status,.order-shipping-status,.shipment-status{background:#eee;padding:.2em .5em;font-size:.9em;border-radius:3px;display:inline-flex;white-space:nowrap}.order-return-status.status-draft,.order-return-status.status-open,.order-return-status.status-partially-returned,.order-return-status.status-partially-shipped,.order-return-status.status-processing,.order-return-status.status-requested,.order-shipping-status.status-draft,.order-shipping-status.status-open,.order-shipping-status.status-partially-returned,.order-shipping-status.status-partially-shipped,.order-shipping-status.status-processing,.order-shipping-status.status-requested,.shipment-status.status-draft,.shipment-status.status-open,.shipment-status.status-partially-returned,.shipment-status.status-partially-shipped,.shipment-status.status-processing,.shipment-status.status-requested{background:#f8dda7;color:#94660c}.order-return-status.status-not-shipped,.order-shipping-status.status-not-shipped,.shipment-status.status-not-shipped{background:#eba3a3;color:#761919}.order-return-status.status-delivered,.order-return-status.status-returned,.order-return-status.status-shipped,.order-shipping-status.status-delivered,.order-shipping-status.status-returned,.order-shipping-status.status-shipped,.shipment-status.status-delivered,.shipment-status.status-returned,.shipment-status.status-shipped{background:#c6e1c6;color:#5b841b}.order-return-status.shipment-type-return-status.status-shipped,.order-shipping-status.shipment-type-return-status.status-shipped,.shipment-status.shipment-type-return-status.status-shipped{background:#f8dda7;color:#94660c}.woocommerce_page_wc-gzd-return-shipments .tablenav .actions,.woocommerce_page_wc-gzd-shipments .tablenav .actions{overflow:visible}.woocommerce_page_wc-gzd-return-shipments .tablenav .select2-container,.woocommerce_page_wc-gzd-shipments .tablenav .select2-container{float:left;width:240px!important;font-size:14px;vertical-align:middle;margin:1px 6px 4px 1px}.woocommerce_page_wc-gzd-return-shipments .tablenav .select2-container .select2-selection--single,.woocommerce_page_wc-gzd-shipments .tablenav .select2-container .select2-selection--single{height:32px}.woocommerce_page_wc-gzd-return-shipments .tablenav .select2-container .select2-selection--single .select2-selection__rendered,.woocommerce_page_wc-gzd-shipments .tablenav .select2-container .select2-selection--single .select2-selection__rendered{line-height:29px}.woocommerce_page_wc-gzd-return-shipments .tablenav .select2-container .select2-selection--single .select2-selection__arrow,.woocommerce_page_wc-gzd-shipments .tablenav .select2-container .select2-selection--single .select2-selection__arrow{height:30px}.woocommerce_page_wc-gzd-return-shipments .tablenav input,.woocommerce_page_wc-gzd-return-shipments .tablenav select,.woocommerce_page_wc-gzd-shipments .tablenav input,.woocommerce_page_wc-gzd-shipments .tablenav select{line-height:1;height:32px}.woocommerce_page_wc-gzd-return-shipments .tablenav input,.woocommerce_page_wc-gzd-shipments .tablenav input{height:31px}.woocommerce_page_wc-gzd-return-shipments .tablenav #shipment-query-submit,.woocommerce_page_wc-gzd-shipments .tablenav #shipment-query-submit{margin:1px 8px 0 0}.woocommerce_page_wc-gzd-return-shipments #posts-filter .bulk-action-wrapper,.woocommerce_page_wc-gzd-shipments #posts-filter .bulk-action-wrapper{display:none;clear:both;margin:1em 0;float:left;width:50%}.woocommerce_page_wc-gzd-return-shipments #posts-filter .bulk-action-wrapper h4,.woocommerce_page_wc-gzd-shipments #posts-filter .bulk-action-wrapper h4{margin-top:0}.woocommerce_page_wc-gzd-return-shipments #posts-filter .bulk-action-wrapper progress,.woocommerce_page_wc-gzd-shipments #posts-filter .bulk-action-wrapper progress{width:100%;height:42px;margin:0 auto;display:block;-webkit-appearance:none;border:none;background:#f5f5f5;border:2px solid #eee;border-radius:4px;padding:0;box-shadow:0 1px 0 0 rgba(255,255,255,.2)}.woocommerce_page_wc-gzd-return-shipments #posts-filter .bulk-action-wrapper progress::-webkit-progress-bar,.woocommerce_page_wc-gzd-shipments #posts-filter .bulk-action-wrapper progress::-webkit-progress-bar{background:transparent none;border:0;border-radius:4px;padding:0;box-shadow:none}.woocommerce_page_wc-gzd-return-shipments #posts-filter .bulk-action-wrapper progress::-webkit-progress-value,.woocommerce_page_wc-gzd-shipments #posts-filter .bulk-action-wrapper progress::-webkit-progress-value{border-radius:3px;box-shadow:inset 0 1px 1px 0 rgba(255,255,255,.4);background:#a46497;background:linear-gradient(to bottom,#a46497,#66405f),#a46497;transition:width 1s ease}.woocommerce_page_wc-gzd-return-shipments #posts-filter .bulk-action-wrapper progress::-moz-progress-bar,.woocommerce_page_wc-gzd-shipments #posts-filter .bulk-action-wrapper progress::-moz-progress-bar{border-radius:3px;box-shadow:inset 0 1px 1px 0 rgba(255,255,255,.4);background:#a46497;background:linear-gradient(to bottom,#a46497,#66405f),#a46497;transition:width 1s ease}.woocommerce_page_wc-gzd-return-shipments #posts-filter .bulk-action-wrapper progress::-ms-fill,.woocommerce_page_wc-gzd-shipments #posts-filter .bulk-action-wrapper progress::-ms-fill{border-radius:3px;box-shadow:inset 0 1px 1px 0 rgba(255,255,255,.4);background:#a46497;background:linear-gradient(to bottom,#a46497,#66405f),#a46497;transition:width 1s ease}.woocommerce_page_wc-gzd-return-shipments #posts-filter.bulk-action-processing .bulk-action-wrapper,.woocommerce_page_wc-gzd-shipments #posts-filter.bulk-action-processing .bulk-action-wrapper{display:block}.woocommerce_page_wc-gzd-return-shipments .wp-list-table,.woocommerce_page_wc-gzd-shipments .wp-list-table{margin-top:1em}.woocommerce_page_wc-gzd-return-shipments .wp-list-table td,.woocommerce_page_wc-gzd-return-shipments .wp-list-table th,.woocommerce_page_wc-gzd-shipments .wp-list-table td,.woocommerce_page_wc-gzd-shipments .wp-list-table th{padding:.5em 1em;width:10ch;vertical-align:middle}.woocommerce_page_wc-gzd-return-shipments .wp-list-table tbody th,.woocommerce_page_wc-gzd-return-shipments .wp-list-table td,.woocommerce_page_wc-gzd-shipments .wp-list-table tbody th,.woocommerce_page_wc-gzd-shipments .wp-list-table td{line-height:26px}.woocommerce_page_wc-gzd-return-shipments .wp-list-table thead th,.woocommerce_page_wc-gzd-shipments .wp-list-table thead th{padding:.5em 1em}.woocommerce_page_wc-gzd-return-shipments .wp-list-table thead th.sortable a,.woocommerce_page_wc-gzd-return-shipments .wp-list-table thead th.sorted a,.woocommerce_page_wc-gzd-shipments .wp-list-table thead th.sortable a,.woocommerce_page_wc-gzd-shipments .wp-list-table thead th.sorted a{padding:0}.woocommerce_page_wc-gzd-return-shipments .wp-list-table thead th:last-child,.woocommerce_page_wc-gzd-shipments .wp-list-table thead th:last-child{padding-right:2em}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .check-column,.woocommerce_page_wc-gzd-shipments .wp-list-table .check-column{width:16px;white-space:nowrap;padding:1em 1em 1em 1em!important;vertical-align:middle}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .check-column input,.woocommerce_page_wc-gzd-shipments .wp-list-table .check-column input{vertical-align:text-top;margin:1px 0}.woocommerce_page_wc-gzd-return-shipments .wp-list-table td.column-title,.woocommerce_page_wc-gzd-shipments .wp-list-table td.column-title{font-weight:700}.woocommerce_page_wc-gzd-return-shipments .wp-list-table td.column-title .shipment-title-meta,.woocommerce_page_wc-gzd-shipments .wp-list-table td.column-title .shipment-title-meta{margin-top:0;font-weight:400;color:#999;font-style:italic}.woocommerce_page_wc-gzd-return-shipments .wp-list-table td.column-title .shipment-title-meta .shipment-tracking-id,.woocommerce_page_wc-gzd-shipments .wp-list-table td.column-title .shipment-title-meta .shipment-tracking-id{color:#999;display:block}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-title,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-title{width:20ch}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions{width:10ch}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-order,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-order{width:10ch}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-address a,.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-sender a,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-address a,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-sender a{color:#32373c}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .shipment-status,.woocommerce_page_wc-gzd-shipments .wp-list-table .shipment-status{font-size:1em}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions{text-align:right}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions a.button,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions a.button{text-indent:9999px;margin:2px 0 2px 4px;position:relative;display:inline-block;padding:0;height:2em;width:2em;overflow:hidden;vertical-align:middle}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions a.button::after,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions a.button::after{font-family:Dashicons;margin:0;margin-top:2px;speak:none;font-weight:400;font-variant:normal;text-transform:none;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;line-height:1.85}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions a.button.processing::after,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions a.button.processing::after{font-family:WooCommerce;content:"\e00f"}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions a.button.shipped::after,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions a.button.shipped::after{content:"\f147"}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions a.button.delivered::after,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions a.button.delivered::after{content:"\f147"}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions a.button.confirm::after,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions a.button.confirm::after{content:"\f147"}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions a.button.generate::after,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions a.button.generate::after{content:"\f502"}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions a.button.download::after,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions a.button.download::after{content:"\f103"}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-address,.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-sender,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-address,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-sender{width:20ch}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-items,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-items{width:20ch}.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview{font-size:.9em;border-spacing:0}.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview thead th,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview thead th{color:#adadad;padding-top:0;font-size:1.1em}.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview tr td,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview tr td{border-bottom:1px solid #ccc!important}.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview tr:last-child td,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview tr:last-child td{border-bottom:none!important}.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview td,.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview th,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview td,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview th{padding:.3em 0;vertical-align:top;line-height:20px}.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview td.wc-gzd-shipment-item-column-name,.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview th.wc-gzd-shipment-item-column-name,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview td.wc-gzd-shipment-item-column-name,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview th.wc-gzd-shipment-item-column-name{width:70%}.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview td.wc-gzd-shipment-item-column-quantity,.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview th.wc-gzd-shipment-item-column-quantity,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview td.wc-gzd-shipment-item-column-quantity,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview th.wc-gzd-shipment-item-column-quantity{text-align:right;padding-right:.5em}#woocommerce-gzd-order-shipments .inside{margin:0;padding:0;display:block!important}#woocommerce-gzd-order-shipments .handlediv,#woocommerce-gzd-order-shipments .hndle,#woocommerce-gzd-order-shipments .postbox-header{display:none}#woocommerce-gzd-order-shipments .hide-default{display:none}.germanized-shipments *{box-sizing:border-box}.germanized-shipments #panel-order-shipments{padding:23px 0 0}.germanized-shipments #panel-order-shipments .panel-inner{padding:0 24px}.germanized-shipments #panel-order-shipments .panel-title-inner{padding-left:0;margin-top:1em;padding-right:0}.germanized-shipments #panel-order-shipments .panel-title{margin-bottom:1.5em}.germanized-shipments #panel-order-shipments .panel-title h2{margin:0;font-family:HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Neue",sans-serif;font-size:21px;font-weight:400;line-height:1.2;text-shadow:1px 1px 1px #fff;padding:0}.germanized-shipments #panel-order-shipments .panel-footer{background:#f8f8f8;padding-top:1em;padding-bottom:1em;border-top:1px solid #dfdfdf;display:none}.germanized-shipments #panel-order-shipments .panel-footer .order-shipments-actions{display:flex;flex-wrap:nowrap;justify-content:space-between}.germanized-shipments #panel-order-shipments .panel-footer .order-shipments-actions .shipment-actions-left{display:flex;flex-wrap:wrap;justify-content:flex-start}.germanized-shipments #panel-order-shipments .panel-footer .order-shipments-actions .shipment-actions-left .button{margin-right:1em}.germanized-shipments #panel-order-shipments .panel-footer #order-shipments-save{display:none}.germanized-shipments #panel-order-shipments #order-return-shipment-add,.germanized-shipments #panel-order-shipments #order-shipment-add{display:none}.germanized-shipments #panel-order-shipments.needs-shipments .panel-footer{display:block}.germanized-shipments #panel-order-shipments.needs-shipments #order-shipment-add{display:block}.germanized-shipments #panel-order-shipments.needs-returns .panel-footer{display:block}.germanized-shipments #panel-order-shipments.needs-returns #order-return-shipment-add{display:block}.germanized-shipments #panel-order-shipments #order-shipments-list{margin-bottom:1.5em}.germanized-shipments #panel-order-shipments .delete{color:#a00}.germanized-shipments #panel-order-shipments .delete:hover{color:#dc3232;border:none}.germanized-shipments #panel-order-shipments .order-shipment a .woocommerce-help-tip{margin-right:3px}.germanized-shipments #panel-order-shipments .order-shipment .handlediv{display:inline-block;float:none;width:auto;height:auto}.germanized-shipments #panel-order-shipments .order-shipment .handlediv .toggle-indicator::before{content:"\f140"}.germanized-shipments #panel-order-shipments .order-shipment .wc-gzd-shipment-label h4{margin-top:0}.germanized-shipments #panel-order-shipments .order-shipment .wc-gzd-shipment-label .shipment-label-actions .shipment-label-actions-wrapper{display:flex;flex-wrap:wrap;justify-content:flex-start;margin-bottom:1em;align-items:center}.germanized-shipments #panel-order-shipments .order-shipment .wc-gzd-shipment-label .shipment-label-actions .shipment-label-actions-wrapper a{margin-right:1em}.germanized-shipments #panel-order-shipments .order-shipment .show-if{display:none}.germanized-shipments #panel-order-shipments .order-shipment.active>.shipment-content-wrapper{display:block}.germanized-shipments #panel-order-shipments .order-shipment.active>.shipment-header>.right>.handlediv .toggle-indicator::before{content:"\f142"}.germanized-shipments #panel-order-shipments .order-shipment .item-count{margin-right:1em}.germanized-shipments #panel-order-shipments .order-shipment .shipment-footer{margin-top:1em}.germanized-shipments #panel-order-shipments .order-shipment .shipment-footer .shipment-footer-inner{display:flex;flex-wrap:nowrap;justify-content:flex-end;padding:0 .5em}.germanized-shipments #panel-order-shipments .order-shipment .shipment-footer .shipment-footer-inner a.shipment-footer-action{margin-right:1em}.germanized-shipments #panel-order-shipments .order-shipment .shipment-footer .shipment-footer-inner a.shipment-footer-action:last-child{margin-right:0}.germanized-shipments #panel-order-shipments .order-shipment .shipment-header{color:#999;background:#f8f8f8;margin:1.5em 0;padding:.5em 1em;cursor:pointer}.germanized-shipments #panel-order-shipments .order-shipment .shipment-header .shipment-status{margin-left:1em}.germanized-shipments #panel-order-shipments .order-shipment .shipment-header h3{margin:0}.germanized-shipments #panel-order-shipments .order-shipment:first-child .shipment-header{margin-top:0}.germanized-shipments #panel-order-shipments .order-shipment .shipment-header:hover,.germanized-shipments #panel-order-shipments .order-shipment.active>.shipment-header{background:#f3f3f3}.germanized-shipments #panel-order-shipments .order-shipment .shipment-content-wrapper{display:none}.germanized-shipments #panel-order-shipments .order-shipment .shipment-content{padding:1em;margin-top:-1.5em;padding-bottom:0}.germanized-shipments #panel-order-shipments .order-shipment .add-shipment-return{display:none}.germanized-shipments #panel-order-shipments .order-shipment.is-returnable .add-shipment-return{display:block}.germanized-shipments #panel-order-shipments .order-shipment p.form-row{margin-bottom:1.5em}.germanized-shipments #panel-order-shipments .order-shipment p.form-row input[type=email],.germanized-shipments #panel-order-shipments .order-shipment p.form-row input[type=number],.germanized-shipments #panel-order-shipments .order-shipment p.form-row input[type=text]{height:30px}.germanized-shipments #panel-order-shipments .order-shipment p.form-row select{line-height:30px;height:30px;padding-top:0;padding-bottom:0}.germanized-shipments #panel-order-shipments .order-shipment p.form-row label{color:#999;font-weight:600}.germanized-shipments #panel-order-shipments .order-shipment p.form-row label .woocommerce-help-tip{float:none}.germanized-shipments #panel-order-shipments .order-shipment .columns .column.column-spaced{margin:5px 0}.germanized-shipments #panel-order-shipments .order-shipment .columns .column h4{margin-bottom:.7em;color:#999}.germanized-shipments #panel-order-shipments .order-shipment .columns .column h4 a{color:#999;text-decoration:none}.germanized-shipments #panel-order-shipments .order-shipment .shipment-items .shipment-item-list-wrapper .shipment-item-action{text-align:right}.germanized-shipments #panel-order-shipments .order-shipment .shipment-items .shipment-item-list-wrapper .shipment-item-quantity input{width:50px;text-align:center}.germanized-shipments #panel-order-shipments .order-shipment .shipment-items .shipment-item-list-wrapper .shipment-item-name p.form-row{margin-bottom:0;margin-top:.5em}.germanized-shipments #panel-order-shipments .order-shipment .shipment-items .shipment-item-list-wrapper .shipment-item-heading{padding:.5em;color:#999;background:#f8f8f8;font-weight:600}.germanized-shipments #panel-order-shipments .order-shipment .shipment-items .shipment-item-list-wrapper .shipment-item{padding:.5em;border-bottom:1px solid #dfdfdf}.germanized-shipments #panel-order-shipments .order-shipment .shipment-items .shipment-item-list-wrapper .shipment-item:last-child{border-bottom:none}.germanized-shipments #panel-order-shipments .order-shipment .shipment-items .shipment-item-list-wrapper .shipment-item:nth-child(2n){background:#f8f8f8}.germanized-shipments #panel-order-shipments .order-shipment .shipment-items .shipment-item-list-wrapper .shipment-item .columns{align-items:center}.germanized-shipments #panel-order-shipments .order-shipment .shipment-item-actions{display:flex;padding:.7em .5em;flex-wrap:nowrap;justify-content:flex-end;border-top:1px solid #dfdfdf}.germanized-shipments #panel-order-shipments .order-shipment .shipment-item-actions .add-items{margin-right:1em}.germanized-shipments #panel-order-shipments .order-shipment .shipment-item-actions .woocommerce-help-tip{margin-left:0}.germanized-shipments #panel-order-shipments .order-shipment .add-items{display:none}.germanized-shipments #panel-order-shipments .order-shipment .shipment-returns{margin-top:.5em}.germanized-shipments #panel-order-shipments .order-shipment .shipment-returns .shipment-return .shipment-header{background:0 0;border-bottom:1px solid #dfdfdf;padding-left:0;padding-right:0}.germanized-shipments #panel-order-shipments .order-shipment .shipment-returns .shipment-return .shipment-header h3{font-size:1.1em}.germanized-shipments #panel-order-shipments .order-shipment .shipment-returns .shipment-return .shipment-content{padding:1em 0}.germanized-shipments #panel-order-shipments .order-shipment.needs-items .add-items{display:block}.germanized-shipments #panel-order-shipments .form-row .input-inner-wrap{clear:left;margin:0;display:flex;flex-wrap:nowrap}.germanized-shipments #panel-order-shipments .form-row .input-inner-wrap input{margin-right:1em}.germanized-shipments #panel-order-shipments .form-row .input-inner-wrap input:last-child{margin-right:0}.germanized-shipments .title-spread{display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center}.germanized-shipments .title-spread .left,.germanized-shipments .title-spread .right{display:inline-flex;align-items:center}.germanized-shipments .show-lg,.germanized-shipments .show-md,.germanized-shipments .show-sm,.germanized-shipments .show-xl,.germanized-shipments .show-xs{display:none!important}.germanized-shipments .columns{display:flex;flex-wrap:wrap;margin-left:-1rem;margin-right:-1rem}.germanized-shipments .columns.col-gapless{margin-left:0;margin-right:0}.germanized-shipments .columns.col-gapless>.column{padding-left:0;padding-right:0}.germanized-shipments .columns.col-oneline{flex-wrap:nowrap;overflow-x:auto}.germanized-shipments .column{flex:1;max-width:100%;padding-left:1rem;padding-right:1rem}.germanized-shipments .column.col-1,.germanized-shipments .column.col-10,.germanized-shipments .column.col-11,.germanized-shipments .column.col-12,.germanized-shipments .column.col-2,.germanized-shipments .column.col-3,.germanized-shipments .column.col-4,.germanized-shipments .column.col-5,.germanized-shipments .column.col-6,.germanized-shipments .column.col-7,.germanized-shipments .column.col-8,.germanized-shipments .column.col-9,.germanized-shipments .column.col-auto{flex:none}.germanized-shipments .col-12{width:100%}.germanized-shipments .col-11{width:91.66666667%}.germanized-shipments .col-10{width:83.33333333%}.germanized-shipments .col-9{width:75%}.germanized-shipments .col-8{width:66.66666667%}.germanized-shipments .col-7{width:58.33333333%}.germanized-shipments .col-6{width:50%}.germanized-shipments .col-5{width:41.66666667%}.germanized-shipments .col-4{width:33.33333333%}.germanized-shipments .col-3{width:25%}.germanized-shipments .col-2{width:16.66666667%}.germanized-shipments .col-1{width:8.33333333%}.germanized-shipments .col-auto{flex:0 0 auto;max-width:none;width:auto}.germanized-shipments .col-mx-auto{margin-left:auto;margin-right:auto}.germanized-shipments .col-ml-auto{margin-left:auto}.germanized-shipments .col-mr-auto{margin-right:auto}@media (max-width:1280px){.germanized-shipments .col-xl-1,.germanized-shipments .col-xl-10,.germanized-shipments .col-xl-11,.germanized-shipments .col-xl-12,.germanized-shipments .col-xl-2,.germanized-shipments .col-xl-3,.germanized-shipments .col-xl-4,.germanized-shipments .col-xl-5,.germanized-shipments .col-xl-6,.germanized-shipments .col-xl-7,.germanized-shipments .col-xl-8,.germanized-shipments .col-xl-9,.germanized-shipments .col-xl-auto{flex:none}.germanized-shipments .col-xl-12{width:100%}.germanized-shipments .col-xl-11{width:91.66666667%}.germanized-shipments .col-xl-10{width:83.33333333%}.germanized-shipments .col-xl-9{width:75%}.germanized-shipments .col-xl-8{width:66.66666667%}.germanized-shipments .col-xl-7{width:58.33333333%}.germanized-shipments .col-xl-6{width:50%}.germanized-shipments .col-xl-5{width:41.66666667%}.germanized-shipments .col-xl-4{width:33.33333333%}.germanized-shipments .col-xl-3{width:25%}.germanized-shipments .col-xl-2{width:16.66666667%}.germanized-shipments .col-xl-1{width:8.33333333%}.germanized-shipments .col-xl-auto{width:auto}.germanized-shipments .hide-xl{display:none!important}.germanized-shipments .show-xl{display:block!important}}@media (max-width:960px){.germanized-shipments .col-lg-1,.germanized-shipments .col-lg-10,.germanized-shipments .col-lg-11,.germanized-shipments .col-lg-12,.germanized-shipments .col-lg-2,.germanized-shipments .col-lg-3,.germanized-shipments .col-lg-4,.germanized-shipments .col-lg-5,.germanized-shipments .col-lg-6,.germanized-shipments .col-lg-7,.germanized-shipments .col-lg-8,.germanized-shipments .col-lg-9,.germanized-shipments .col-lg-auto{flex:none}.germanized-shipments .col-lg-12{width:100%}.germanized-shipments .col-lg-11{width:91.66666667%}.germanized-shipments .col-lg-10{width:83.33333333%}.germanized-shipments .col-lg-9{width:75%}.germanized-shipments .col-lg-8{width:66.66666667%}.germanized-shipments .col-lg-7{width:58.33333333%}.germanized-shipments .col-lg-6{width:50%}.germanized-shipments .col-lg-5{width:41.66666667%}.germanized-shipments .col-lg-4{width:33.33333333%}.germanized-shipments .col-lg-3{width:25%}.germanized-shipments .col-lg-2{width:16.66666667%}.germanized-shipments .col-lg-1{width:8.33333333%}.germanized-shipments .col-lg-auto{width:auto}.germanized-shipments .hide-lg{display:none!important}.germanized-shipments .show-lg{display:block!important}}@media (max-width:840px){.germanized-shipments .col-md-1,.germanized-shipments .col-md-10,.germanized-shipments .col-md-11,.germanized-shipments .col-md-12,.germanized-shipments .col-md-2,.germanized-shipments .col-md-3,.germanized-shipments .col-md-4,.germanized-shipments .col-md-5,.germanized-shipments .col-md-6,.germanized-shipments .col-md-7,.germanized-shipments .col-md-8,.germanized-shipments .col-md-9,.germanized-shipments .col-md-auto{flex:none}.germanized-shipments .col-md-12{width:100%}.germanized-shipments .col-md-11{width:91.66666667%}.germanized-shipments .col-md-10{width:83.33333333%}.germanized-shipments .col-md-9{width:75%}.germanized-shipments .col-md-8{width:66.66666667%}.germanized-shipments .col-md-7{width:58.33333333%}.germanized-shipments .col-md-6{width:50%}.germanized-shipments .col-md-5{width:41.66666667%}.germanized-shipments .col-md-4{width:33.33333333%}.germanized-shipments .col-md-3{width:25%}.germanized-shipments .col-md-2{width:16.66666667%}.germanized-shipments .col-md-1{width:8.33333333%}.germanized-shipments .col-md-auto{width:auto}.germanized-shipments .hide-md{display:none!important}.germanized-shipments .show-md{display:block!important}}@media (max-width:600px){.germanized-shipments .col-sm-1,.germanized-shipments .col-sm-10,.germanized-shipments .col-sm-11,.germanized-shipments .col-sm-12,.germanized-shipments .col-sm-2,.germanized-shipments .col-sm-3,.germanized-shipments .col-sm-4,.germanized-shipments .col-sm-5,.germanized-shipments .col-sm-6,.germanized-shipments .col-sm-7,.germanized-shipments .col-sm-8,.germanized-shipments .col-sm-9,.germanized-shipments .col-sm-auto{flex:none}.germanized-shipments .col-sm-12{width:100%}.germanized-shipments .col-sm-11{width:91.66666667%}.germanized-shipments .col-sm-10{width:83.33333333%}.germanized-shipments .col-sm-9{width:75%}.germanized-shipments .col-sm-8{width:66.66666667%}.germanized-shipments .col-sm-7{width:58.33333333%}.germanized-shipments .col-sm-6{width:50%}.germanized-shipments .col-sm-5{width:41.66666667%}.germanized-shipments .col-sm-4{width:33.33333333%}.germanized-shipments .col-sm-3{width:25%}.germanized-shipments .col-sm-2{width:16.66666667%}.germanized-shipments .col-sm-1{width:8.33333333%}.germanized-shipments .col-sm-auto{width:auto}.germanized-shipments .hide-sm{display:none!important}.germanized-shipments .show-sm{display:block!important}}@media (max-width:480px){.germanized-shipments .col-xs-1,.germanized-shipments .col-xs-10,.germanized-shipments .col-xs-11,.germanized-shipments .col-xs-12,.germanized-shipments .col-xs-2,.germanized-shipments .col-xs-3,.germanized-shipments .col-xs-4,.germanized-shipments .col-xs-5,.germanized-shipments .col-xs-6,.germanized-shipments .col-xs-7,.germanized-shipments .col-xs-8,.germanized-shipments .col-xs-9,.germanized-shipments .col-xs-auto{flex:none}.germanized-shipments .col-xs-12{width:100%}.germanized-shipments .col-xs-11{width:91.66666667%}.germanized-shipments .col-xs-10{width:83.33333333%}.germanized-shipments .col-xs-9{width:75%}.germanized-shipments .col-xs-8{width:66.66666667%}.germanized-shipments .col-xs-7{width:58.33333333%}.germanized-shipments .col-xs-6{width:50%}.germanized-shipments .col-xs-5{width:41.66666667%}.germanized-shipments .col-xs-4{width:33.33333333%}.germanized-shipments .col-xs-3{width:25%}.germanized-shipments .col-xs-2{width:16.66666667%}.germanized-shipments .col-xs-1{width:8.33333333%}.germanized-shipments .col-xs-auto{width:auto}.germanized-shipments .hide-xs{display:none!important}.germanized-shipments .show-xs{display:block!important}}
1
+ .germanized-create-label .notice-wrapper .notice{margin:0;margin-bottom:1em}.germanized-create-label .notice-wrapper .notice p{margin:.5em 0!important;padding:2px!important;font-size:13px;line-height:1.5}.germanized-create-label p.form-field{display:inline-block;width:100%;margin-bottom:5px!important;margin-top:5px!important}.germanized-create-label p.form-field:first-child,.germanized-create-label p.form-field:last-child{margin-bottom:5px!important;margin-top:5px!important}.germanized-create-label .columns{margin-left:-.5rem!important;margin-right:-.5rem!important}.germanized-create-label .column{padding-left:.5rem!important;padding-right:.5rem!important}.germanized-create-label .hide-default,.germanized-create-label .show-if{display:none}.germanized-create-label .show-if label{color:#777}.germanized-create-label p.form-field label{width:100%;display:block;margin-bottom:5px;font-weight:700}.germanized-create-label p.form-field input[type=email],.germanized-create-label p.form-field input[type=text],.germanized-create-label p.form-field select{width:100%;max-width:100%}.germanized-create-label p.form-field.form-field-checkbox{display:flex;flex-wrap:wrap;flex-direction:row;justify-content:flex-start;margin-top:10px!important;margin-bottom:10px!important;align-items:center}.germanized-create-label p.form-field.form-field-checkbox label{width:auto;margin-left:.5em;font-weight:400;order:2;margin-bottom:0}.germanized-create-label p.form-field.form-field-checkbox input[type=checkbox]{order:1}.germanized-create-label p.form-field.form-field-checkbox .woocommerce-help-tip{order:3;margin-left:3px}.germanized-create-label p.form-field.form-field-checkbox .description{width:100%;margin-top:5px;color:#777;order:4;font-style:normal}table.wc-gzd-shipping-providers{margin-top:1.5em}table.wc-gzd-shipping-providers td,table.wc-gzd-shipping-providers th{display:table-cell!important;padding:1em!important;vertical-align:top;line-height:1.75em;font-size:14px}table.wc-gzd-shipping-providers th{font-weight:600}table.wc-gzd-shipping-providers td.wc-gzd-shipping-provider-activated,table.wc-gzd-shipping-providers th.wc-gzd-shipping-provider-activated{width:1%;text-align:center}table.wc-gzd-shipping-providers td.wc-gzd-shipping-provider-activated .status-disabled,table.wc-gzd-shipping-providers td.wc-gzd-shipping-provider-activated .status-enabled,table.wc-gzd-shipping-providers th.wc-gzd-shipping-provider-activated .status-disabled,table.wc-gzd-shipping-providers th.wc-gzd-shipping-provider-activated .status-enabled{display:inline-block;margin-top:3px}table.wc-gzd-shipping-providers td.wc-gzd-shipping-provider-actions,table.wc-gzd-shipping-providers th.wc-gzd-shipping-provider-actions{width:15%;text-align:right}table.wc-gzd-shipping-providers td.wc-gzd-shipping-provider-actions{display:flex;justify-content:flex-end;flex-wrap:wrap}table.wc-gzd-shipping-providers td.wc-gzd-shipping-provider-actions .button{margin-right:5px}table.wc-gzd-shipping-providers td.wc-gzd-shipping-provider-actions .button:last-child{margin-right:0}table.wc-gzd-shipping-providers td.wc-gzd-shipping-provider-title,table.wc-gzd-shipping-providers th.wc-gzd-shipping-provider-title{width:30ch}table.wc-gzd-shipping-providers tr:nth-child(odd) td{background:#f9f9f9}.order-return-status,.order-shipping-status,.shipment-status{background:#eee;padding:.2em .5em;font-size:.9em;border-radius:3px;display:inline-flex;white-space:nowrap}.order-return-status.status-draft,.order-return-status.status-open,.order-return-status.status-partially-returned,.order-return-status.status-partially-shipped,.order-return-status.status-processing,.order-return-status.status-requested,.order-shipping-status.status-draft,.order-shipping-status.status-open,.order-shipping-status.status-partially-returned,.order-shipping-status.status-partially-shipped,.order-shipping-status.status-processing,.order-shipping-status.status-requested,.shipment-status.status-draft,.shipment-status.status-open,.shipment-status.status-partially-returned,.shipment-status.status-partially-shipped,.shipment-status.status-processing,.shipment-status.status-requested{background:#f8dda7;color:#94660c}.order-return-status.status-not-shipped,.order-shipping-status.status-not-shipped,.shipment-status.status-not-shipped{background:#eba3a3;color:#761919}.order-return-status.status-delivered,.order-return-status.status-returned,.order-return-status.status-shipped,.order-shipping-status.status-delivered,.order-shipping-status.status-returned,.order-shipping-status.status-shipped,.shipment-status.status-delivered,.shipment-status.status-returned,.shipment-status.status-shipped{background:#c6e1c6;color:#5b841b}.order-return-status.shipment-type-return-status.status-shipped,.order-shipping-status.shipment-type-return-status.status-shipped,.shipment-status.shipment-type-return-status.status-shipped{background:#f8dda7;color:#94660c}.woocommerce_page_wc-gzd-return-shipments .tablenav .actions,.woocommerce_page_wc-gzd-shipments .tablenav .actions{overflow:visible}.woocommerce_page_wc-gzd-return-shipments .tablenav .select2-container,.woocommerce_page_wc-gzd-shipments .tablenav .select2-container{float:left;width:240px!important;font-size:14px;vertical-align:middle;margin:1px 6px 4px 1px}.woocommerce_page_wc-gzd-return-shipments .tablenav .select2-container .select2-selection--single,.woocommerce_page_wc-gzd-shipments .tablenav .select2-container .select2-selection--single{height:32px}.woocommerce_page_wc-gzd-return-shipments .tablenav .select2-container .select2-selection--single .select2-selection__rendered,.woocommerce_page_wc-gzd-shipments .tablenav .select2-container .select2-selection--single .select2-selection__rendered{line-height:29px}.woocommerce_page_wc-gzd-return-shipments .tablenav .select2-container .select2-selection--single .select2-selection__arrow,.woocommerce_page_wc-gzd-shipments .tablenav .select2-container .select2-selection--single .select2-selection__arrow{height:30px}.woocommerce_page_wc-gzd-return-shipments .tablenav input,.woocommerce_page_wc-gzd-return-shipments .tablenav select,.woocommerce_page_wc-gzd-shipments .tablenav input,.woocommerce_page_wc-gzd-shipments .tablenav select{line-height:1;height:32px}.woocommerce_page_wc-gzd-return-shipments .tablenav input,.woocommerce_page_wc-gzd-shipments .tablenav input{height:31px}.woocommerce_page_wc-gzd-return-shipments .tablenav #shipment-query-submit,.woocommerce_page_wc-gzd-shipments .tablenav #shipment-query-submit{margin:1px 8px 0 0}.woocommerce_page_wc-gzd-return-shipments #posts-filter .bulk-action-wrapper,.woocommerce_page_wc-gzd-shipments #posts-filter .bulk-action-wrapper{display:none;clear:both;margin:1em 0;float:left;width:50%}.woocommerce_page_wc-gzd-return-shipments #posts-filter .bulk-action-wrapper h4,.woocommerce_page_wc-gzd-shipments #posts-filter .bulk-action-wrapper h4{margin-top:0}.woocommerce_page_wc-gzd-return-shipments #posts-filter .bulk-action-wrapper progress,.woocommerce_page_wc-gzd-shipments #posts-filter .bulk-action-wrapper progress{width:100%;height:42px;margin:0 auto;display:block;-webkit-appearance:none;border:none;background:#f5f5f5;border:2px solid #eee;border-radius:4px;padding:0;box-shadow:0 1px 0 0 rgba(255,255,255,.2)}.woocommerce_page_wc-gzd-return-shipments #posts-filter .bulk-action-wrapper progress::-webkit-progress-bar,.woocommerce_page_wc-gzd-shipments #posts-filter .bulk-action-wrapper progress::-webkit-progress-bar{background:transparent none;border:0;border-radius:4px;padding:0;box-shadow:none}.woocommerce_page_wc-gzd-return-shipments #posts-filter .bulk-action-wrapper progress::-webkit-progress-value,.woocommerce_page_wc-gzd-shipments #posts-filter .bulk-action-wrapper progress::-webkit-progress-value{border-radius:3px;box-shadow:inset 0 1px 1px 0 rgba(255,255,255,.4);background:#a46497;background:linear-gradient(to bottom,#a46497,#66405f),#a46497;transition:width 1s ease}.woocommerce_page_wc-gzd-return-shipments #posts-filter .bulk-action-wrapper progress::-moz-progress-bar,.woocommerce_page_wc-gzd-shipments #posts-filter .bulk-action-wrapper progress::-moz-progress-bar{border-radius:3px;box-shadow:inset 0 1px 1px 0 rgba(255,255,255,.4);background:#a46497;background:linear-gradient(to bottom,#a46497,#66405f),#a46497;transition:width 1s ease}.woocommerce_page_wc-gzd-return-shipments #posts-filter .bulk-action-wrapper progress::-ms-fill,.woocommerce_page_wc-gzd-shipments #posts-filter .bulk-action-wrapper progress::-ms-fill{border-radius:3px;box-shadow:inset 0 1px 1px 0 rgba(255,255,255,.4);background:#a46497;background:linear-gradient(to bottom,#a46497,#66405f),#a46497;transition:width 1s ease}.woocommerce_page_wc-gzd-return-shipments #posts-filter.bulk-action-processing .bulk-action-wrapper,.woocommerce_page_wc-gzd-shipments #posts-filter.bulk-action-processing .bulk-action-wrapper{display:block}.woocommerce_page_wc-gzd-return-shipments .wp-list-table,.woocommerce_page_wc-gzd-shipments .wp-list-table{margin-top:1em}.woocommerce_page_wc-gzd-return-shipments .wp-list-table td,.woocommerce_page_wc-gzd-return-shipments .wp-list-table th,.woocommerce_page_wc-gzd-shipments .wp-list-table td,.woocommerce_page_wc-gzd-shipments .wp-list-table th{padding:.5em 1em;width:10ch;vertical-align:middle}.woocommerce_page_wc-gzd-return-shipments .wp-list-table tbody th,.woocommerce_page_wc-gzd-return-shipments .wp-list-table td,.woocommerce_page_wc-gzd-shipments .wp-list-table tbody th,.woocommerce_page_wc-gzd-shipments .wp-list-table td{line-height:26px}.woocommerce_page_wc-gzd-return-shipments .wp-list-table thead th,.woocommerce_page_wc-gzd-shipments .wp-list-table thead th{padding:.5em 1em}.woocommerce_page_wc-gzd-return-shipments .wp-list-table thead th.sortable a,.woocommerce_page_wc-gzd-return-shipments .wp-list-table thead th.sorted a,.woocommerce_page_wc-gzd-shipments .wp-list-table thead th.sortable a,.woocommerce_page_wc-gzd-shipments .wp-list-table thead th.sorted a{padding:0}.woocommerce_page_wc-gzd-return-shipments .wp-list-table thead th:last-child,.woocommerce_page_wc-gzd-shipments .wp-list-table thead th:last-child{padding-right:2em}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .check-column,.woocommerce_page_wc-gzd-shipments .wp-list-table .check-column{width:16px;white-space:nowrap;padding:1em 1em 1em 1em!important;vertical-align:middle}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .check-column input,.woocommerce_page_wc-gzd-shipments .wp-list-table .check-column input{vertical-align:text-top;margin:1px 0}.woocommerce_page_wc-gzd-return-shipments .wp-list-table td.column-title,.woocommerce_page_wc-gzd-shipments .wp-list-table td.column-title{font-weight:700}.woocommerce_page_wc-gzd-return-shipments .wp-list-table td.column-title .shipment-title-meta,.woocommerce_page_wc-gzd-shipments .wp-list-table td.column-title .shipment-title-meta{margin-top:0;font-weight:400;color:#999;font-style:italic}.woocommerce_page_wc-gzd-return-shipments .wp-list-table td.column-title .shipment-title-meta .shipment-tracking-id,.woocommerce_page_wc-gzd-shipments .wp-list-table td.column-title .shipment-title-meta .shipment-tracking-id{color:#999;display:block}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-title,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-title{width:20ch}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions{width:10ch}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-order,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-order{width:10ch}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-address a,.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-sender a,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-address a,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-sender a{color:#32373c}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .shipment-status,.woocommerce_page_wc-gzd-shipments .wp-list-table .shipment-status{font-size:1em}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions{text-align:right}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions a.button,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions a.button{text-indent:9999px;margin:2px 0 2px 4px;position:relative;display:inline-block;padding:0;height:2em;width:2em;overflow:hidden;vertical-align:middle}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions a.button::after,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions a.button::after{font-family:Dashicons;margin:0;margin-top:2px;speak:none;font-weight:400;font-variant:normal;text-transform:none;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;line-height:1.85}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions a.button.processing::after,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions a.button.processing::after{font-family:WooCommerce;content:"\e00f"}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions a.button.shipped::after,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions a.button.shipped::after{content:"\f147"}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions a.button.delivered::after,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions a.button.delivered::after{content:"\f147"}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions a.button.confirm::after,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions a.button.confirm::after{content:"\f147"}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions a.button.generate::after,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions a.button.generate::after{content:"\f502"}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-actions a.button.download::after,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-actions a.button.download::after{content:"\f103"}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-address,.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-sender,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-address,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-sender{width:20ch}.woocommerce_page_wc-gzd-return-shipments .wp-list-table .column-items,.woocommerce_page_wc-gzd-shipments .wp-list-table .column-items{width:20ch}.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview{font-size:.9em;border-spacing:0}.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview thead th,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview thead th{color:#adadad;padding-top:0;font-size:1.1em}.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview tr td,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview tr td{border-bottom:1px solid #ccc!important}.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview tr:last-child td,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview tr:last-child td{border-bottom:none!important}.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview td,.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview th,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview td,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview th{padding:.3em 0;vertical-align:top;line-height:20px}.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview td.wc-gzd-shipment-item-column-name,.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview th.wc-gzd-shipment-item-column-name,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview td.wc-gzd-shipment-item-column-name,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview th.wc-gzd-shipment-item-column-name{width:70%}.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview td.wc-gzd-shipment-item-column-quantity,.woocommerce_page_wc-gzd-return-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview th.wc-gzd-shipment-item-column-quantity,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview td.wc-gzd-shipment-item-column-quantity,.woocommerce_page_wc-gzd-shipments .wp-list-table #the-list .column-items table.wc-gzd-shipments-preview th.wc-gzd-shipment-item-column-quantity{text-align:right;padding-right:.5em}#woocommerce-gzd-order-shipments .inside{margin:0;padding:0;display:block!important}#woocommerce-gzd-order-shipments .handlediv,#woocommerce-gzd-order-shipments .hndle,#woocommerce-gzd-order-shipments .postbox-header{display:none}#woocommerce-gzd-order-shipments .hide-default{display:none}.germanized-shipments *{box-sizing:border-box}.germanized-shipments #panel-order-shipments{padding:23px 0 0}.germanized-shipments #panel-order-shipments .panel-inner{padding:0 24px}.germanized-shipments #panel-order-shipments .panel-title-inner{padding-left:0;margin-top:1em;padding-right:0}.germanized-shipments #panel-order-shipments .panel-title{margin-bottom:1.5em}.germanized-shipments #panel-order-shipments .panel-title h2{margin:0;font-family:HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Neue",sans-serif;font-size:21px;font-weight:400;line-height:1.2;text-shadow:1px 1px 1px #fff;padding:0}.germanized-shipments #panel-order-shipments .panel-footer{background:#f8f8f8;padding-top:1em;padding-bottom:1em;border-top:1px solid #dfdfdf;display:none}.germanized-shipments #panel-order-shipments .panel-footer .order-shipments-actions{display:flex;flex-wrap:nowrap;justify-content:space-between}.germanized-shipments #panel-order-shipments .panel-footer .order-shipments-actions .shipment-actions-left{display:flex;flex-wrap:wrap;justify-content:flex-start}.germanized-shipments #panel-order-shipments .panel-footer .order-shipments-actions .shipment-actions-left .button{margin-right:1em}.germanized-shipments #panel-order-shipments .panel-footer #order-shipments-save{display:none}.germanized-shipments #panel-order-shipments #order-return-shipment-add,.germanized-shipments #panel-order-shipments #order-shipment-add{display:none}.germanized-shipments #panel-order-shipments.needs-shipments .panel-footer{display:block}.germanized-shipments #panel-order-shipments.needs-shipments #order-shipment-add{display:block}.germanized-shipments #panel-order-shipments.needs-returns .panel-footer{display:block}.germanized-shipments #panel-order-shipments.needs-returns #order-return-shipment-add{display:block}.germanized-shipments #panel-order-shipments #order-shipments-list{margin-bottom:1.5em}.germanized-shipments #panel-order-shipments .delete{color:#a00}.germanized-shipments #panel-order-shipments .delete:hover{color:#dc3232;border:none}.germanized-shipments #panel-order-shipments .order-shipment a .woocommerce-help-tip{margin-right:3px}.germanized-shipments #panel-order-shipments .order-shipment .handlediv{display:inline-block;float:none;width:auto;height:auto}.germanized-shipments #panel-order-shipments .order-shipment .handlediv .toggle-indicator::before{content:"\f140"}.germanized-shipments #panel-order-shipments .order-shipment .wc-gzd-shipment-label h4{margin-top:0}.germanized-shipments #panel-order-shipments .order-shipment .wc-gzd-shipment-label .shipment-label-actions .shipment-label-actions-wrapper{display:flex;flex-wrap:wrap;justify-content:flex-start;margin-bottom:1em;align-items:center}.germanized-shipments #panel-order-shipments .order-shipment .wc-gzd-shipment-label .shipment-label-actions .shipment-label-actions-wrapper a{margin-right:1em}.germanized-shipments #panel-order-shipments .order-shipment .show-if{display:none}.germanized-shipments #panel-order-shipments .order-shipment.active>.shipment-content-wrapper{display:block}.germanized-shipments #panel-order-shipments .order-shipment.active>.shipment-header>.right>.handlediv .toggle-indicator::before{content:"\f142"}.germanized-shipments #panel-order-shipments .order-shipment .item-count{margin-right:1em}.germanized-shipments #panel-order-shipments .order-shipment .shipment-footer{margin-top:1em}.germanized-shipments #panel-order-shipments .order-shipment .shipment-footer .shipment-footer-inner{display:flex;flex-wrap:nowrap;justify-content:flex-end;padding:0 .5em}.germanized-shipments #panel-order-shipments .order-shipment .shipment-footer .shipment-footer-inner a.shipment-footer-action{margin-right:1em}.germanized-shipments #panel-order-shipments .order-shipment .shipment-footer .shipment-footer-inner a.shipment-footer-action:last-child{margin-right:0}.germanized-shipments #panel-order-shipments .order-shipment .shipment-header{color:#999;background:#f8f8f8;margin:1.5em 0;padding:.5em 1em;cursor:pointer}.germanized-shipments #panel-order-shipments .order-shipment .shipment-header .shipment-status{margin-left:1em}.germanized-shipments #panel-order-shipments .order-shipment .shipment-header h3{margin:0}.germanized-shipments #panel-order-shipments .order-shipment:first-child .shipment-header{margin-top:0}.germanized-shipments #panel-order-shipments .order-shipment .shipment-header:hover,.germanized-shipments #panel-order-shipments .order-shipment.active>.shipment-header{background:#f3f3f3}.germanized-shipments #panel-order-shipments .order-shipment .shipment-content-wrapper{display:none}.germanized-shipments #panel-order-shipments .order-shipment .shipment-content{padding:1em;margin-top:-1.5em;padding-bottom:0}.germanized-shipments #panel-order-shipments .order-shipment .add-shipment-return{display:none}.germanized-shipments #panel-order-shipments .order-shipment.is-returnable .add-shipment-return{display:block}.germanized-shipments #panel-order-shipments .order-shipment p.form-row{margin-bottom:1.5em}.germanized-shipments #panel-order-shipments .order-shipment p.form-row.wc-gzd-shipment-packaging-wrapper{margin-top:0}.germanized-shipments #panel-order-shipments .order-shipment p.form-row input[type=email],.germanized-shipments #panel-order-shipments .order-shipment p.form-row input[type=number],.germanized-shipments #panel-order-shipments .order-shipment p.form-row input[type=text]{height:30px}.germanized-shipments #panel-order-shipments .order-shipment p.form-row select{line-height:30px;height:30px;padding-top:0;padding-bottom:0}.germanized-shipments #panel-order-shipments .order-shipment p.form-row label{color:#999;font-weight:600}.germanized-shipments #panel-order-shipments .order-shipment p.form-row label .woocommerce-help-tip{float:none}.germanized-shipments #panel-order-shipments .order-shipment .columns .column.column-spaced{margin:5px 0}.germanized-shipments #panel-order-shipments .order-shipment .columns .column h4{margin-bottom:.7em;color:#999}.germanized-shipments #panel-order-shipments .order-shipment .columns .column h4 a{color:#999;text-decoration:none}.germanized-shipments #panel-order-shipments .order-shipment .shipment-items .shipment-item-list-wrapper .shipment-item-action{text-align:right}.germanized-shipments #panel-order-shipments .order-shipment .shipment-items .shipment-item-list-wrapper .shipment-item-quantity input{width:50px;text-align:center}.germanized-shipments #panel-order-shipments .order-shipment .shipment-items .shipment-item-list-wrapper .shipment-item-name p.form-row{margin-bottom:0;margin-top:.5em}.germanized-shipments #panel-order-shipments .order-shipment .shipment-items .shipment-item-list-wrapper .shipment-item-heading{padding:.5em;color:#999;background:#f8f8f8;font-weight:600}.germanized-shipments #panel-order-shipments .order-shipment .shipment-items .shipment-item-list-wrapper .shipment-item{padding:.5em;border-bottom:1px solid #dfdfdf}.germanized-shipments #panel-order-shipments .order-shipment .shipment-items .shipment-item-list-wrapper .shipment-item:last-child{border-bottom:none}.germanized-shipments #panel-order-shipments .order-shipment .shipment-items .shipment-item-list-wrapper .shipment-item:nth-child(2n){background:#f8f8f8}.germanized-shipments #panel-order-shipments .order-shipment .shipment-items .shipment-item-list-wrapper .shipment-item .columns{align-items:center}.germanized-shipments #panel-order-shipments .order-shipment .shipment-item-actions{display:flex;padding:.7em .5em;flex-wrap:nowrap;justify-content:flex-end;border-top:1px solid #dfdfdf}.germanized-shipments #panel-order-shipments .order-shipment .shipment-item-actions .add-items{margin-right:1em}.germanized-shipments #panel-order-shipments .order-shipment .shipment-item-actions .woocommerce-help-tip{margin-left:0}.germanized-shipments #panel-order-shipments .order-shipment .add-items{display:none}.germanized-shipments #panel-order-shipments .order-shipment .shipment-returns{margin-top:.5em}.germanized-shipments #panel-order-shipments .order-shipment .shipment-returns .shipment-return .shipment-header{background:0 0;border-bottom:1px solid #dfdfdf;padding-left:0;padding-right:0}.germanized-shipments #panel-order-shipments .order-shipment .shipment-returns .shipment-return .shipment-header h3{font-size:1.1em}.germanized-shipments #panel-order-shipments .order-shipment .shipment-returns .shipment-return .shipment-content{padding:1em 0}.germanized-shipments #panel-order-shipments .order-shipment.needs-items .add-items{display:block}.germanized-shipments #panel-order-shipments .form-row .input-inner-wrap{clear:left;margin:0;display:flex;flex-wrap:nowrap}.germanized-shipments #panel-order-shipments .form-row .input-inner-wrap input{margin-right:1em}.germanized-shipments #panel-order-shipments .form-row .input-inner-wrap input:last-child{margin-right:0}.germanized-shipments .title-spread{display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center}.germanized-shipments .title-spread .left,.germanized-shipments .title-spread .right{display:inline-flex;align-items:center}.germanized-shipments .show-lg,.germanized-shipments .show-md,.germanized-shipments .show-sm,.germanized-shipments .show-xl,.germanized-shipments .show-xs{display:none!important}.germanized-shipments .columns{display:flex;flex-wrap:wrap;margin-left:-1rem;margin-right:-1rem}.germanized-shipments .columns.col-gapless{margin-left:0;margin-right:0}.germanized-shipments .columns.col-gapless>.column{padding-left:0;padding-right:0}.germanized-shipments .columns.col-oneline{flex-wrap:nowrap;overflow-x:auto}.germanized-shipments .column{flex:1;max-width:100%;padding-left:1rem;padding-right:1rem}.germanized-shipments .column.col-1,.germanized-shipments .column.col-10,.germanized-shipments .column.col-11,.germanized-shipments .column.col-12,.germanized-shipments .column.col-2,.germanized-shipments .column.col-3,.germanized-shipments .column.col-4,.germanized-shipments .column.col-5,.germanized-shipments .column.col-6,.germanized-shipments .column.col-7,.germanized-shipments .column.col-8,.germanized-shipments .column.col-9,.germanized-shipments .column.col-auto{flex:none}.germanized-shipments .col-12{width:100%}.germanized-shipments .col-11{width:91.66666667%}.germanized-shipments .col-10{width:83.33333333%}.germanized-shipments .col-9{width:75%}.germanized-shipments .col-8{width:66.66666667%}.germanized-shipments .col-7{width:58.33333333%}.germanized-shipments .col-6{width:50%}.germanized-shipments .col-5{width:41.66666667%}.germanized-shipments .col-4{width:33.33333333%}.germanized-shipments .col-3{width:25%}.germanized-shipments .col-2{width:16.66666667%}.germanized-shipments .col-1{width:8.33333333%}.germanized-shipments .col-auto{flex:0 0 auto;max-width:none;width:auto}.germanized-shipments .col-mx-auto{margin-left:auto;margin-right:auto}.germanized-shipments .col-ml-auto{margin-left:auto}.germanized-shipments .col-mr-auto{margin-right:auto}@media (max-width:1280px){.germanized-shipments .col-xl-1,.germanized-shipments .col-xl-10,.germanized-shipments .col-xl-11,.germanized-shipments .col-xl-12,.germanized-shipments .col-xl-2,.germanized-shipments .col-xl-3,.germanized-shipments .col-xl-4,.germanized-shipments .col-xl-5,.germanized-shipments .col-xl-6,.germanized-shipments .col-xl-7,.germanized-shipments .col-xl-8,.germanized-shipments .col-xl-9,.germanized-shipments .col-xl-auto{flex:none}.germanized-shipments .col-xl-12{width:100%}.germanized-shipments .col-xl-11{width:91.66666667%}.germanized-shipments .col-xl-10{width:83.33333333%}.germanized-shipments .col-xl-9{width:75%}.germanized-shipments .col-xl-8{width:66.66666667%}.germanized-shipments .col-xl-7{width:58.33333333%}.germanized-shipments .col-xl-6{width:50%}.germanized-shipments .col-xl-5{width:41.66666667%}.germanized-shipments .col-xl-4{width:33.33333333%}.germanized-shipments .col-xl-3{width:25%}.germanized-shipments .col-xl-2{width:16.66666667%}.germanized-shipments .col-xl-1{width:8.33333333%}.germanized-shipments .col-xl-auto{width:auto}.germanized-shipments .hide-xl{display:none!important}.germanized-shipments .show-xl{display:block!important}}@media (max-width:960px){.germanized-shipments .col-lg-1,.germanized-shipments .col-lg-10,.germanized-shipments .col-lg-11,.germanized-shipments .col-lg-12,.germanized-shipments .col-lg-2,.germanized-shipments .col-lg-3,.germanized-shipments .col-lg-4,.germanized-shipments .col-lg-5,.germanized-shipments .col-lg-6,.germanized-shipments .col-lg-7,.germanized-shipments .col-lg-8,.germanized-shipments .col-lg-9,.germanized-shipments .col-lg-auto{flex:none}.germanized-shipments .col-lg-12{width:100%}.germanized-shipments .col-lg-11{width:91.66666667%}.germanized-shipments .col-lg-10{width:83.33333333%}.germanized-shipments .col-lg-9{width:75%}.germanized-shipments .col-lg-8{width:66.66666667%}.germanized-shipments .col-lg-7{width:58.33333333%}.germanized-shipments .col-lg-6{width:50%}.germanized-shipments .col-lg-5{width:41.66666667%}.germanized-shipments .col-lg-4{width:33.33333333%}.germanized-shipments .col-lg-3{width:25%}.germanized-shipments .col-lg-2{width:16.66666667%}.germanized-shipments .col-lg-1{width:8.33333333%}.germanized-shipments .col-lg-auto{width:auto}.germanized-shipments .hide-lg{display:none!important}.germanized-shipments .show-lg{display:block!important}}@media (max-width:840px){.germanized-shipments .col-md-1,.germanized-shipments .col-md-10,.germanized-shipments .col-md-11,.germanized-shipments .col-md-12,.germanized-shipments .col-md-2,.germanized-shipments .col-md-3,.germanized-shipments .col-md-4,.germanized-shipments .col-md-5,.germanized-shipments .col-md-6,.germanized-shipments .col-md-7,.germanized-shipments .col-md-8,.germanized-shipments .col-md-9,.germanized-shipments .col-md-auto{flex:none}.germanized-shipments .col-md-12{width:100%}.germanized-shipments .col-md-11{width:91.66666667%}.germanized-shipments .col-md-10{width:83.33333333%}.germanized-shipments .col-md-9{width:75%}.germanized-shipments .col-md-8{width:66.66666667%}.germanized-shipments .col-md-7{width:58.33333333%}.germanized-shipments .col-md-6{width:50%}.germanized-shipments .col-md-5{width:41.66666667%}.germanized-shipments .col-md-4{width:33.33333333%}.germanized-shipments .col-md-3{width:25%}.germanized-shipments .col-md-2{width:16.66666667%}.germanized-shipments .col-md-1{width:8.33333333%}.germanized-shipments .col-md-auto{width:auto}.germanized-shipments .hide-md{display:none!important}.germanized-shipments .show-md{display:block!important}}@media (max-width:600px){.germanized-shipments .col-sm-1,.germanized-shipments .col-sm-10,.germanized-shipments .col-sm-11,.germanized-shipments .col-sm-12,.germanized-shipments .col-sm-2,.germanized-shipments .col-sm-3,.germanized-shipments .col-sm-4,.germanized-shipments .col-sm-5,.germanized-shipments .col-sm-6,.germanized-shipments .col-sm-7,.germanized-shipments .col-sm-8,.germanized-shipments .col-sm-9,.germanized-shipments .col-sm-auto{flex:none}.germanized-shipments .col-sm-12{width:100%}.germanized-shipments .col-sm-11{width:91.66666667%}.germanized-shipments .col-sm-10{width:83.33333333%}.germanized-shipments .col-sm-9{width:75%}.germanized-shipments .col-sm-8{width:66.66666667%}.germanized-shipments .col-sm-7{width:58.33333333%}.germanized-shipments .col-sm-6{width:50%}.germanized-shipments .col-sm-5{width:41.66666667%}.germanized-shipments .col-sm-4{width:33.33333333%}.germanized-shipments .col-sm-3{width:25%}.germanized-shipments .col-sm-2{width:16.66666667%}.germanized-shipments .col-sm-1{width:8.33333333%}.germanized-shipments .col-sm-auto{width:auto}.germanized-shipments .hide-sm{display:none!important}.germanized-shipments .show-sm{display:block!important}}@media (max-width:480px){.germanized-shipments .col-xs-1,.germanized-shipments .col-xs-10,.germanized-shipments .col-xs-11,.germanized-shipments .col-xs-12,.germanized-shipments .col-xs-2,.germanized-shipments .col-xs-3,.germanized-shipments .col-xs-4,.germanized-shipments .col-xs-5,.germanized-shipments .col-xs-6,.germanized-shipments .col-xs-7,.germanized-shipments .col-xs-8,.germanized-shipments .col-xs-9,.germanized-shipments .col-xs-auto{flex:none}.germanized-shipments .col-xs-12{width:100%}.germanized-shipments .col-xs-11{width:91.66666667%}.germanized-shipments .col-xs-10{width:83.33333333%}.germanized-shipments .col-xs-9{width:75%}.germanized-shipments .col-xs-8{width:66.66666667%}.germanized-shipments .col-xs-7{width:58.33333333%}.germanized-shipments .col-xs-6{width:50%}.germanized-shipments .col-xs-5{width:41.66666667%}.germanized-shipments .col-xs-4{width:33.33333333%}.germanized-shipments .col-xs-3{width:25%}.germanized-shipments .col-xs-2{width:16.66666667%}.germanized-shipments .col-xs-1{width:8.33333333%}.germanized-shipments .col-xs-auto{width:auto}.germanized-shipments .hide-xs{display:none!important}.germanized-shipments .show-xs{display:block!important}}
packages/woocommerce-germanized-shipments/assets/css/admin.scss CHANGED
@@ -53,6 +53,7 @@ $layout-spacing: 1rem;
53
  width: 100%;
54
  display: block;
55
  margin-bottom: 5px;
 
56
  }
57
  select, input[type=text], input[type=email] {
58
  width: 100%;
@@ -71,6 +72,7 @@ $layout-spacing: 1rem;
71
  label {
72
  width: auto;
73
  margin-left: .5em;
 
74
  order: 2;
75
  margin-bottom: 0;
76
  }
@@ -711,6 +713,10 @@ table.wc-gzd-shipping-providers {
711
  p.form-row {
712
  margin-bottom: 1.5em;
713
 
 
 
 
 
714
  input[type=text], input[type=number], input[type=email] {
715
  height: 30px;
716
  }
53
  width: 100%;
54
  display: block;
55
  margin-bottom: 5px;
56
+ font-weight: bold;
57
  }
58
  select, input[type=text], input[type=email] {
59
  width: 100%;
72
  label {
73
  width: auto;
74
  margin-left: .5em;
75
+ font-weight: normal;
76
  order: 2;
77
  margin-bottom: 0;
78
  }
713
  p.form-row {
714
  margin-bottom: 1.5em;
715
 
716
+ &.wc-gzd-shipment-packaging-wrapper {
717
+ margin-top: 0;
718
+ }
719
+
720
  input[type=text], input[type=number], input[type=email] {
721
  height: 30px;
722
  }
packages/woocommerce-germanized-shipments/assets/js/admin-shipment.js CHANGED
@@ -52,6 +52,8 @@ window.germanized.admin = window.germanized.admin || {};
52
 
53
  $( '#shipment-' + this.vars.id + ' #shipment-shipping-provider-' + this.vars.id ).on( 'change', this.onChangeProvider.bind( this ) );
54
 
 
 
55
  $( '#shipment-' + this.vars.id + ' #shipment-items-' + this.vars.id )
56
  .on( 'change', '.item-quantity', this.onChangeQuantity.bind( this ) )
57
  .on( 'click', 'a.remove-shipment-item', this.onRemoveItem.bind( this ) )
@@ -67,6 +69,35 @@ window.germanized.admin = window.germanized.admin || {};
67
  .on( 'click', '.remove-shipment-label', this.onRemoveLabel.bind( this ) );
68
  };
69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  this.onSendReturnNotification = function() {
71
  var params = {
72
  'action' : 'woocommerce_gzd_send_return_shipment_notification_email',
@@ -195,6 +226,10 @@ window.germanized.admin = window.germanized.admin || {};
195
  this.getShipment().find( '#shipment-height-' + this.getId() ).attr( 'placeholder', height );
196
  };
197
 
 
 
 
 
198
  this.setIsEditable = function( isEditable ) {
199
  var root = this;
200
 
52
 
53
  $( '#shipment-' + this.vars.id + ' #shipment-shipping-provider-' + this.vars.id ).on( 'change', this.onChangeProvider.bind( this ) );
54
 
55
+ $( '#shipment-' + this.vars.id + ' .wc-gzd-shipment-dimension, #shipment-' + this.vars.id + ' .wc-gzd-shipment-weight' ).on( 'change', this.onChangeDimensions.bind( this ) );
56
+
57
  $( '#shipment-' + this.vars.id + ' #shipment-items-' + this.vars.id )
58
  .on( 'change', '.item-quantity', this.onChangeQuantity.bind( this ) )
59
  .on( 'click', 'a.remove-shipment-item', this.onRemoveItem.bind( this ) )
69
  .on( 'click', '.remove-shipment-label', this.onRemoveLabel.bind( this ) );
70
  };
71
 
72
+ this.blockPackaging = function() {
73
+ this.getShipmentContent().find( '.wc-gzd-shipment-packaging-wrapper' ).block({
74
+ message: null,
75
+ overlayCSS: {
76
+ background: '#fff',
77
+ opacity: 0.6
78
+ }
79
+ });
80
+ };
81
+
82
+ this.unblockPackaging = function() {
83
+ this.getShipmentContent().find( '.wc-gzd-shipment-packaging-wrapper' ).unblock();
84
+ };
85
+
86
+ this.refreshPackaging = function() {
87
+ var params = {
88
+ 'action' : 'woocommerce_gzd_refresh_shipment_packaging',
89
+ 'shipment_id' : this.getId(),
90
+ 'security' : germanized.admin.shipments.getParams().refresh_packaging_nonce
91
+ };
92
+
93
+ this.blockPackaging();
94
+ germanized.admin.shipments.doAjax( params, this.unblockPackaging.bind( this ), this.unblockPackaging.bind( this ) );
95
+ };
96
+
97
+ this.onChangeDimensions = function() {
98
+ this.refreshPackaging();
99
+ };
100
+
101
  this.onSendReturnNotification = function() {
102
  var params = {
103
  'action' : 'woocommerce_gzd_send_return_shipment_notification_email',
226
  this.getShipment().find( '#shipment-height-' + this.getId() ).attr( 'placeholder', height );
227
  };
228
 
229
+ this.setTotalWeight = function( weight ) {
230
+
231
+ };
232
+
233
  this.setIsEditable = function( isEditable ) {
234
  var root = this;
235
 
packages/woocommerce-germanized-shipments/assets/js/admin-shipment.min.js CHANGED
@@ -1 +1 @@
1
- window.germanized=window.germanized||{},window.germanized.admin=window.germanized.admin||{},function(h){h.GermanizedShipment=function(t){this.vars={$shipment:!1,params:{},id:"",isEditable:!0,needsItems:!0},(this.root=this).construct=function(t){this.vars.id=t,this.vars.params=germanized.admin.shipments.getParams(),this.refreshDom(),h(document.body).on("wc_backbone_modal_loaded",this.backbone.init.bind(this)).on("wc_backbone_modal_response",this.backbone.response.bind(this))},this.refreshDom=function(){this.vars.$shipment=h("#order-shipments-list").find("#shipment-"+this.getId()),this.setNeedsItems(this.vars.$shipment.hasClass("needs-items")),this.setIsEditable(this.vars.$shipment.hasClass("is-editable")),this.onChangeProvider(),h("#shipment-"+this.vars.id+" #shipment-items-"+this.vars.id).off(),h("#shipment-"+this.vars.id+" #shipment-footer-"+this.vars.id).off(),h("#shipment-"+this.vars.id+" #shipment-shipping-provider-"+this.vars.id).off(),h("#shipment-"+this.vars.id+" .wc-gzd-shipment-label").off(),h("#shipment-"+this.vars.id+" #shipment-shipping-provider-"+this.vars.id).on("change",this.onChangeProvider.bind(this)),h("#shipment-"+this.vars.id+" #shipment-items-"+this.vars.id).on("change",".item-quantity",this.onChangeQuantity.bind(this)).on("click","a.remove-shipment-item",this.onRemoveItem.bind(this)).on("click","a.add-shipment-item",this.onAddItem.bind(this)).on("click","a.sync-shipment-items",this.onSyncItems.bind(this)),h("#shipment-"+this.vars.id+" #shipment-footer-"+this.vars.id).on("click",".send-return-shipment-notification",this.onSendReturnNotification.bind(this)).on("click",".confirm-return-shipment",this.onConfirmReturnRequest.bind(this)),h("#shipment-"+this.vars.id+" .wc-gzd-shipment-label").on("click",".create-shipment-label:not(.disabled)",this.onCreateLabel.bind(this)).on("click",".remove-shipment-label",this.onRemoveLabel.bind(this))},this.onSendReturnNotification=function(){var t={action:"woocommerce_gzd_send_return_shipment_notification_email",shipment_id:this.getId(),security:germanized.admin.shipments.getParams().send_return_notification_nonce};return this.block(),germanized.admin.shipments.doAjax(t,this.unblock.bind(this),this.unblock.bind(this)),!1},this.onConfirmReturnRequest=function(){var t={action:"woocommerce_gzd_confirm_return_request",shipment_id:this.getId(),security:germanized.admin.shipments.getParams().confirm_return_request_nonce};return this.block(),germanized.admin.shipments.doAjax(t,this.unblock.bind(this),this.unblock.bind(this)),!1},this.onRemoveLabel=function(){return window.confirm(germanized.admin.shipments.getParams().i18n_remove_label_notice)&&this.removeLabel(),!1},this.removeLabel=function(){var t={action:"woocommerce_gzd_remove_shipment_label",shipment_id:this.getId(),security:germanized.admin.shipments.getParams().remove_label_nonce};this.block(),germanized.admin.shipments.doAjax(t,this.unblock.bind(this),this.unblock.bind(this))},this.onCreateLabel=function(){return this.getShipment().WCBackboneModal({template:"wc-gzd-modal-create-shipment-label-"+this.getId()}),!1},this.onChangeProvider=function(){var t=this.getShipment(),i=t.find("#shipment-shipping-provider-"+this.getId()),e=i.find("option:selected");t.find(".show-if-provider").hide(),0<e.length&&e.data("is-manual")&&"yes"===e.data("is-manual")&&t.find(".show-if-provider-is-manual").show(),t.find(".show-if-provider-"+i.val()).show()},this.getShipment=function(){return this.vars.$shipment},this.getShipmentContent=function(){return this.vars.$shipment.find("> .shipment-content-wrapper > .shipment-content > .columns > div:not(.shipment-returns-data)")},this.onChangeQuantity=function(t){var i=h(t.target),e=i.parents(".shipment-item").data("id"),n=i.val();this.blockItems();var s={action:"woocommerce_gzd_limit_shipment_item_quantity",shipment_id:this.getId(),item_id:e,quantity:n};germanized.admin.shipments.doAjax(s,this.onChangeQuantitySuccess.bind(this))},this.onChangeQuantitySuccess=function(t){var i=this.getShipment().find('.shipment-item[data-id="'+t.item_id+'"]'),e=i.find(".item-quantity").val(),n=t.max_quantity;n<e?i.find(".item-quantity").val(n):e<=0&&i.find(".item-quantity").val(1),this.refreshDom(),this.unblockItems()},this.setWeight=function(t){this.getShipment().find("#shipment-weight-"+this.getId()).attr("placeholder",t)},this.setLength=function(t){this.getShipment().find("#shipment-length-"+this.getId()).attr("placeholder",t)},this.setWidth=function(t){this.getShipment().find("#shipment-width-"+this.getId()).attr("placeholder",t)},this.setHeight=function(t){this.getShipment().find("#shipment-height-"+this.getId()).attr("placeholder",t)},this.setIsEditable=function(t){var e=this;"boolean"!=typeof t&&(t=!0),this.vars.isEditable=!0===t,this.vars.isEditable?(this.getShipment().addClass("is-editable"),this.getShipment().removeClass("is-locked"),this.getShipmentContent().find(".remove-shipment-item ").show(),this.getShipmentContent().find(".shipment-item-actions").show(),this.getShipmentContent().find(":input:not([type=hidden])").prop("disabled",!1)):(this.getShipment().removeClass("is-editable"),this.getShipment().addClass("is-locked"),this.getShipmentContent().find(".remove-shipment-item ").hide(),this.getShipmentContent().find(".shipment-item-actions").hide(),this.getShipmentContent().find(":input:not([type=hidden])").prop("disabled",!0),h.each(this.vars.params.shipment_locked_excluded_fields,function(t,i){e.getShipmentContent().find(":input[name^=shipment_"+i+"]").prop("disabled",!1)}))},this.setNeedsItems=function(t){"boolean"!=typeof t&&(t=!0),this.vars.needsItems=!0===t,this.vars.needsItems?this.getShipment().addClass("needs-items"):this.getShipment().removeClass("needs-items")},this.onSyncItems=function(){return this.syncItems(),!1},this.syncItems=function(){this.blockItems();var t={action:"woocommerce_gzd_sync_shipment_items",shipment_id:this.getId()};germanized.admin.shipments.doAjax(t,this.onSyncItemsSuccess.bind(this),this.onSyncItemsError.bind(this))},this.onSyncItemsSuccess=function(t){this.unblockItems()},this.onSyncItemsError=function(t){this.unblockItems()},this.onAddItem=function(){return this.getShipment().WCBackboneModal({template:"wc-gzd-modal-add-shipment-item-"+this.getId()}),!1},this.addItem=function(t,i){i=i||1,this.blockItems();var e={action:"woocommerce_gzd_add_shipment_item",shipment_id:this.getId(),original_item_id:t,quantity:i};germanized.admin.shipments.doAjax(e,this.onAddItemSuccess.bind(this),this.onAddItemError.bind(this))},this.addReturn=function(t){this.block();var i={action:"woocommerce_gzd_add_shipment_return",shipment_id:this.getId()};h.extend(i,t),germanized.admin.shipments.doAjax(i,this.onAddReturnSuccess.bind(this),this.onAddReturnError.bind(this))},this.onAddReturnSuccess=function(t){this.getShipment().find(".shipment-return-list").append(t.new_shipment),this.refreshDom(),germanized.admin.shipments.initShipments(),this.unblock()},this.onAddReturnError=function(t){this.unblock()},this.onAddItemError=function(t){this.unblockItems()},this.onAddItemSuccess=function(t){this.getShipmentContent().find(".shipment-item-list").append(t.new_item),this.refreshDom(),this.unblockItems()},this.onRemoveItem=function(t){var i=h(t.target).parents(".shipment-item"),e=i.data("id");return 0<i.length&&this.removeItem(e),!1},this.blockItems=function(){this.getShipmentContent().find(".shipment-items").block({message:null,overlayCSS:{background:"#fff",opacity:.6}})},this.block=function(){this.getShipment().block({message:null,overlayCSS:{background:"#fff",opacity:.6}})},this.unblockItems=function(){this.getShipmentContent().find(".shipment-items").unblock()},this.unblock=function(){this.getShipment().unblock()},this.removeItem=function(t){this.getShipment().find('.shipment-item[data-id="'+t+'"]');var i={action:"woocommerce_gzd_remove_shipment_item",shipment_id:this.getId(),item_id:t};this.blockItems(),germanized.admin.shipments.doAjax(i,this.onRemoveItemSuccess.bind(this))},this.onRemoveItemSuccess=function(t){var i=this.getShipment().find('.shipment-item[data-id="'+t.item_id+'"]');0<i.length&&i.slideUp(150,function(){h(this).remove()}),this.unblockItems()},this.getId=function(){return this.vars.id},this.backbone={onAddItemSuccess:function(t){$select=h("select#wc-gzd-shipment-add-items-select"),$quantity=h("input#wc-gzd-shipment-add-items-quantity"),$quantity.val(1),h.each(t.items,function(t,i){$select.append('<option value="'+t+'">'+i.name+"</option>"),$quantity.data("max-quantity-"+t,i.max_quantity)}),h(".wc-backbone-modal-content article").unblock(),h(document.body).on("change","input#wc-gzd-shipment-add-items-quantity",function(){var t,i=$select.val(),e=h(this).val();!$quantity.data("max-quantity-"+i)||(t=$quantity.data("max-quantity-"+i))<e&&$quantity.val(t)})},init:function(t,i){var e=this.getId();if("wc-gzd-modal-add-shipment-item-"+e===i)return h(".wc-backbone-modal-content article").block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),germanized.admin.shipments.doAjax({action:"woocommerce_gzd_get_available_shipment_items",shipment_id:e},this.backbone.onAddItemSuccess.bind(this)),!1},response:function(t,i,e){"wc-gzd-modal-add-shipment-item-"+this.getId()===i&&this.addItem(e.item_id,e.item_qty)}},this.construct(t)}}(jQuery,window.germanized.admin);
1
+ window.germanized=window.germanized||{},window.germanized.admin=window.germanized.admin||{},function(h){h.GermanizedShipment=function(t){this.vars={$shipment:!1,params:{},id:"",isEditable:!0,needsItems:!0},(this.root=this).construct=function(t){this.vars.id=t,this.vars.params=germanized.admin.shipments.getParams(),this.refreshDom(),h(document.body).on("wc_backbone_modal_loaded",this.backbone.init.bind(this)).on("wc_backbone_modal_response",this.backbone.response.bind(this))},this.refreshDom=function(){this.vars.$shipment=h("#order-shipments-list").find("#shipment-"+this.getId()),this.setNeedsItems(this.vars.$shipment.hasClass("needs-items")),this.setIsEditable(this.vars.$shipment.hasClass("is-editable")),this.onChangeProvider(),h("#shipment-"+this.vars.id+" #shipment-items-"+this.vars.id).off(),h("#shipment-"+this.vars.id+" #shipment-footer-"+this.vars.id).off(),h("#shipment-"+this.vars.id+" #shipment-shipping-provider-"+this.vars.id).off(),h("#shipment-"+this.vars.id+" .wc-gzd-shipment-label").off(),h("#shipment-"+this.vars.id+" #shipment-shipping-provider-"+this.vars.id).on("change",this.onChangeProvider.bind(this)),h("#shipment-"+this.vars.id+" .wc-gzd-shipment-dimension, #shipment-"+this.vars.id+" .wc-gzd-shipment-weight").on("change",this.onChangeDimensions.bind(this)),h("#shipment-"+this.vars.id+" #shipment-items-"+this.vars.id).on("change",".item-quantity",this.onChangeQuantity.bind(this)).on("click","a.remove-shipment-item",this.onRemoveItem.bind(this)).on("click","a.add-shipment-item",this.onAddItem.bind(this)).on("click","a.sync-shipment-items",this.onSyncItems.bind(this)),h("#shipment-"+this.vars.id+" #shipment-footer-"+this.vars.id).on("click",".send-return-shipment-notification",this.onSendReturnNotification.bind(this)).on("click",".confirm-return-shipment",this.onConfirmReturnRequest.bind(this)),h("#shipment-"+this.vars.id+" .wc-gzd-shipment-label").on("click",".create-shipment-label:not(.disabled)",this.onCreateLabel.bind(this)).on("click",".remove-shipment-label",this.onRemoveLabel.bind(this))},this.blockPackaging=function(){this.getShipmentContent().find(".wc-gzd-shipment-packaging-wrapper").block({message:null,overlayCSS:{background:"#fff",opacity:.6}})},this.unblockPackaging=function(){this.getShipmentContent().find(".wc-gzd-shipment-packaging-wrapper").unblock()},this.refreshPackaging=function(){var t={action:"woocommerce_gzd_refresh_shipment_packaging",shipment_id:this.getId(),security:germanized.admin.shipments.getParams().refresh_packaging_nonce};this.blockPackaging(),germanized.admin.shipments.doAjax(t,this.unblockPackaging.bind(this),this.unblockPackaging.bind(this))},this.onChangeDimensions=function(){this.refreshPackaging()},this.onSendReturnNotification=function(){var t={action:"woocommerce_gzd_send_return_shipment_notification_email",shipment_id:this.getId(),security:germanized.admin.shipments.getParams().send_return_notification_nonce};return this.block(),germanized.admin.shipments.doAjax(t,this.unblock.bind(this),this.unblock.bind(this)),!1},this.onConfirmReturnRequest=function(){var t={action:"woocommerce_gzd_confirm_return_request",shipment_id:this.getId(),security:germanized.admin.shipments.getParams().confirm_return_request_nonce};return this.block(),germanized.admin.shipments.doAjax(t,this.unblock.bind(this),this.unblock.bind(this)),!1},this.onRemoveLabel=function(){return window.confirm(germanized.admin.shipments.getParams().i18n_remove_label_notice)&&this.removeLabel(),!1},this.removeLabel=function(){var t={action:"woocommerce_gzd_remove_shipment_label",shipment_id:this.getId(),security:germanized.admin.shipments.getParams().remove_label_nonce};this.block(),germanized.admin.shipments.doAjax(t,this.unblock.bind(this),this.unblock.bind(this))},this.onCreateLabel=function(){return this.getShipment().WCBackboneModal({template:"wc-gzd-modal-create-shipment-label-"+this.getId()}),!1},this.onChangeProvider=function(){var t=this.getShipment(),i=t.find("#shipment-shipping-provider-"+this.getId()),e=i.find("option:selected");t.find(".show-if-provider").hide(),0<e.length&&e.data("is-manual")&&"yes"===e.data("is-manual")&&t.find(".show-if-provider-is-manual").show(),t.find(".show-if-provider-"+i.val()).show()},this.getShipment=function(){return this.vars.$shipment},this.getShipmentContent=function(){return this.vars.$shipment.find("> .shipment-content-wrapper > .shipment-content > .columns > div:not(.shipment-returns-data)")},this.onChangeQuantity=function(t){var i=h(t.target),e=i.parents(".shipment-item").data("id"),n=i.val();this.blockItems();var s={action:"woocommerce_gzd_limit_shipment_item_quantity",shipment_id:this.getId(),item_id:e,quantity:n};germanized.admin.shipments.doAjax(s,this.onChangeQuantitySuccess.bind(this))},this.onChangeQuantitySuccess=function(t){var i=this.getShipment().find('.shipment-item[data-id="'+t.item_id+'"]'),e=i.find(".item-quantity").val(),n=t.max_quantity;n<e?i.find(".item-quantity").val(n):e<=0&&i.find(".item-quantity").val(1),this.refreshDom(),this.unblockItems()},this.setWeight=function(t){this.getShipment().find("#shipment-weight-"+this.getId()).attr("placeholder",t)},this.setLength=function(t){this.getShipment().find("#shipment-length-"+this.getId()).attr("placeholder",t)},this.setWidth=function(t){this.getShipment().find("#shipment-width-"+this.getId()).attr("placeholder",t)},this.setHeight=function(t){this.getShipment().find("#shipment-height-"+this.getId()).attr("placeholder",t)},this.setTotalWeight=function(t){},this.setIsEditable=function(t){var e=this;"boolean"!=typeof t&&(t=!0),this.vars.isEditable=!0===t,this.vars.isEditable?(this.getShipment().addClass("is-editable"),this.getShipment().removeClass("is-locked"),this.getShipmentContent().find(".remove-shipment-item ").show(),this.getShipmentContent().find(".shipment-item-actions").show(),this.getShipmentContent().find(":input:not([type=hidden])").prop("disabled",!1)):(this.getShipment().removeClass("is-editable"),this.getShipment().addClass("is-locked"),this.getShipmentContent().find(".remove-shipment-item ").hide(),this.getShipmentContent().find(".shipment-item-actions").hide(),this.getShipmentContent().find(":input:not([type=hidden])").prop("disabled",!0),h.each(this.vars.params.shipment_locked_excluded_fields,function(t,i){e.getShipmentContent().find(":input[name^=shipment_"+i+"]").prop("disabled",!1)}))},this.setNeedsItems=function(t){"boolean"!=typeof t&&(t=!0),this.vars.needsItems=!0===t,this.vars.needsItems?this.getShipment().addClass("needs-items"):this.getShipment().removeClass("needs-items")},this.onSyncItems=function(){return this.syncItems(),!1},this.syncItems=function(){this.blockItems();var t={action:"woocommerce_gzd_sync_shipment_items",shipment_id:this.getId()};germanized.admin.shipments.doAjax(t,this.onSyncItemsSuccess.bind(this),this.onSyncItemsError.bind(this))},this.onSyncItemsSuccess=function(t){this.unblockItems()},this.onSyncItemsError=function(t){this.unblockItems()},this.onAddItem=function(){return this.getShipment().WCBackboneModal({template:"wc-gzd-modal-add-shipment-item-"+this.getId()}),!1},this.addItem=function(t,i){i=i||1,this.blockItems();var e={action:"woocommerce_gzd_add_shipment_item",shipment_id:this.getId(),original_item_id:t,quantity:i};germanized.admin.shipments.doAjax(e,this.onAddItemSuccess.bind(this),this.onAddItemError.bind(this))},this.addReturn=function(t){this.block();var i={action:"woocommerce_gzd_add_shipment_return",shipment_id:this.getId()};h.extend(i,t),germanized.admin.shipments.doAjax(i,this.onAddReturnSuccess.bind(this),this.onAddReturnError.bind(this))},this.onAddReturnSuccess=function(t){this.getShipment().find(".shipment-return-list").append(t.new_shipment),this.refreshDom(),germanized.admin.shipments.initShipments(),this.unblock()},this.onAddReturnError=function(t){this.unblock()},this.onAddItemError=function(t){this.unblockItems()},this.onAddItemSuccess=function(t){this.getShipmentContent().find(".shipment-item-list").append(t.new_item),this.refreshDom(),this.unblockItems()},this.onRemoveItem=function(t){var i=h(t.target).parents(".shipment-item"),e=i.data("id");return 0<i.length&&this.removeItem(e),!1},this.blockItems=function(){this.getShipmentContent().find(".shipment-items").block({message:null,overlayCSS:{background:"#fff",opacity:.6}})},this.block=function(){this.getShipment().block({message:null,overlayCSS:{background:"#fff",opacity:.6}})},this.unblockItems=function(){this.getShipmentContent().find(".shipment-items").unblock()},this.unblock=function(){this.getShipment().unblock()},this.removeItem=function(t){this.getShipment().find('.shipment-item[data-id="'+t+'"]');var i={action:"woocommerce_gzd_remove_shipment_item",shipment_id:this.getId(),item_id:t};this.blockItems(),germanized.admin.shipments.doAjax(i,this.onRemoveItemSuccess.bind(this))},this.onRemoveItemSuccess=function(t){var i=this.getShipment().find('.shipment-item[data-id="'+t.item_id+'"]');0<i.length&&i.slideUp(150,function(){h(this).remove()}),this.unblockItems()},this.getId=function(){return this.vars.id},this.backbone={onAddItemSuccess:function(t){$select=h("select#wc-gzd-shipment-add-items-select"),$quantity=h("input#wc-gzd-shipment-add-items-quantity"),$quantity.val(1),h.each(t.items,function(t,i){$select.append('<option value="'+t+'">'+i.name+"</option>"),$quantity.data("max-quantity-"+t,i.max_quantity)}),h(".wc-backbone-modal-content article").unblock(),h(document.body).on("change","input#wc-gzd-shipment-add-items-quantity",function(){var t,i=$select.val(),e=h(this).val();!$quantity.data("max-quantity-"+i)||(t=$quantity.data("max-quantity-"+i))<e&&$quantity.val(t)})},init:function(t,i){var e=this.getId();if("wc-gzd-modal-add-shipment-item-"+e===i)return h(".wc-backbone-modal-content article").block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),germanized.admin.shipments.doAjax({action:"woocommerce_gzd_get_available_shipment_items",shipment_id:e},this.backbone.onAddItemSuccess.bind(this)),!1},response:function(t,i,e){"wc-gzd-modal-add-shipment-item-"+this.getId()===i&&this.addItem(e.item_id,e.item_qty)}},this.construct(t)}}(jQuery,window.germanized.admin);
packages/woocommerce-germanized-shipments/assets/js/admin-shipments.js CHANGED
@@ -251,6 +251,7 @@ window.germanized.admin = window.germanized.admin || {};
251
  shipment.setLength( shipmentData[ shipmentId ].length );
252
  shipment.setWidth( shipmentData[ shipmentId ].width );
253
  shipment.setHeight( shipmentData[ shipmentId ].height );
 
254
  }
255
  });
256
 
251
  shipment.setLength( shipmentData[ shipmentId ].length );
252
  shipment.setWidth( shipmentData[ shipmentId ].width );
253
  shipment.setHeight( shipmentData[ shipmentId ].height );
254
+ shipment.setTotalWeight( shipmentData[ shipmentId ].total_weight );
255
  }
256
  });
257
 
packages/woocommerce-germanized-shipments/assets/js/admin-shipments.min.js CHANGED
@@ -1 +1 @@
1
- window.germanized=window.germanized||{},window.germanized.admin=window.germanized.admin||{},function(d){window.germanized.admin.shipments={params:{},shipments:{},$wrapper:!1,needsSaving:!1,needsShipments:!0,needsReturns:!1,init:function(){var e=germanized.admin.shipments;e.params=wc_gzd_admin_shipments_params,e.$wrapper=d("#panel-order-shipments"),e.needsShipments=e.$wrapper.find("#order-shipment-add").is(":visible"),e.needsReturns=e.$wrapper.find("#order-return-shipment-add").is(":visible"),e.initShipments(),d(document).ajaxComplete(e.onAjaxComplete),d(document).on("click","#order-shipments-list .shipment-header",e.onToggleShipment).on("change","#order-shipments-list :input:visible",e.setNeedsSaving).on("click","#panel-order-shipments #order-shipment-add",e.onAddShipment).on("click","#panel-order-shipments #order-return-shipment-add",e.onAddReturn).on("click","#panel-order-shipments .remove-shipment",e.onRemoveShipment).on("click","#panel-order-shipments button#order-shipments-save",e.onSave).on("click","#panel-order-shipments .notice-dismiss",e.onRemoveNotice),d(document.body).on("wc_backbone_modal_loaded",e.backbone.init).on("wc_backbone_modal_response",e.backbone.response)},onAjaxComplete:function(e,n,i){var t=germanized.admin.shipments;if(null!=n&&i.hasOwnProperty("data")){var r,a=i.data,s=!1;try{s=JSON.parse('{"'+a.replace(/&/g,'","').replace(/=/g,'":"')+'"}',function(e,n){return""===e?n:decodeURIComponent(n)})}catch(e){s=!1}s&&s.hasOwnProperty("action")&&("woocommerce_save_order_items"!==(r=s.action)&&"woocommerce_remove_order_item"!==r&&"woocommerce_add_order_item"!==r&&"woocommerce_delete_refund"!==r||t.syncItemQuantities())}},syncItemQuantities:function(){var e=germanized.admin.shipments;e.block();var n={action:"woocommerce_gzd_validate_shipment_item_quantities",active:e.getActiveShipmentId()};e.doAjax(n,e.onSyncSuccess)},onSyncSuccess:function(e){var n=germanized.admin.shipments;n.unblock(),n.initShipments(),n.initTiptip()},onSave:function(e){var n=germanized.admin.shipments;return e.preventDefault(),n.save(),!1},save:function(){var e=germanized.admin.shipments;e.block();var n={action:"woocommerce_gzd_save_shipments",active:e.getActiveShipmentId()};e.doAjax(n,e.onSaveSuccess)},initShipment:function(e){var n=germanized.admin.shipments;n.shipments.hasOwnProperty(e)?n.shipments[e].refreshDom():n.shipments[e]=new d.GermanizedShipment(e)},onSaveSuccess:function(e){var n=germanized.admin.shipments;n.initShipments(),n.setNeedsSaving(!1),n.unblock(),n.initTiptip()},getActiveShipmentId:function(){var e=germanized.admin.shipments.$wrapper.find(".order-shipment.active");return 0<e.length&&e.data("shipment")},block:function(){germanized.admin.shipments.$wrapper.block({message:null,overlayCSS:{background:"#fff",opacity:.6}})},unblock:function(){germanized.admin.shipments.$wrapper.unblock()},getData:function(e){var n=germanized.admin.shipments,i={};return e=e||{},d.each(n.$wrapper.find(":input[name]").serializeArray(),function(e,n){-1!==n.name.indexOf("[]")?(n.name=n.name.replace("[]",""),i[n.name]=d.makeArray(i[n.name]),i[n.name].push(n.value)):i[n.name]=n.value}),d.extend(i,e),i},doAjax:function(e,n,t){var r=germanized.admin.shipments,i=r.params.ajax_url,a=r.$wrapper,s=!0;a.find(".notice-wrapper").empty(),n=n||r.onAjaxSuccess,t=t||r.onAjaxError,e.hasOwnProperty("refresh_fragments")&&(s=e.refresh_fragments),e.hasOwnProperty("security")||(e.security=r.params.edit_shipments_nonce),e.hasOwnProperty("order_id")||(e.order_id=r.params.order_id),e=r.getData(e),d.ajax({type:"POST",url:i,data:e,success:function(e){var i;e.success?(s&&e.fragments&&d.each(e.fragments,function(e,n){d(e).replaceWith(n),d(e).unblock()}),n.apply(a,[e]),e.hasOwnProperty("order_needs_new_shipments")&&r.setNeedsShipments(e.order_needs_new_shipments),e.hasOwnProperty("order_needs_new_returns")&&r.setNeedsReturns(e.order_needs_new_returns),i=e.hasOwnProperty("shipments")?e.shipments:{},d.each(r.getShipments(),function(e,n){i.hasOwnProperty(e)&&(n.setIsEditable(i[e].is_editable),n.setNeedsItems(i[e].needs_items),n.setWeight(i[e].weight),n.setLength(i[e].length),n.setWidth(i[e].width),n.setHeight(i[e].height))}),e.hasOwnProperty("needs_refresh")&&e.hasOwnProperty("shipment_id")&&r.initShipment(e.shipment_id)):(t.apply(a,[e]),r.unblock(),e.hasOwnProperty("message")?r.addNotice(e.message,"error"):e.hasOwnProperty("messages")&&d.each(e.messages,function(e,n){r.addNotice(n,"error")}))},error:function(e){t.apply(a,[e]),r.unblock()},dataType:"json"})},onAjaxError:function(e){},onAjaxSuccess:function(e){},onRemoveNotice:function(){d(this).parents(".notice").slideUp(150,function(){d(this).remove()})},addNotice:function(e,n){germanized.admin.shipments.$wrapper.find(".notice-wrapper").append('<div class="notice is-dismissible notice-'+n+'"><p>'+e+'</p><button type="button" class="notice-dismiss"></button></div>')},getParams:function(){return germanized.admin.shipments.params},onRemoveShipment:function(){var e=germanized.admin.shipments,n=d(this).parents(".order-shipment").data("shipment");return window.confirm(e.getParams().i18n_remove_shipment_notice)&&e.removeShipment(n),!1},removeShipment:function(e){var n=germanized.admin.shipments,i={action:"woocommerce_gzd_remove_shipment",shipment_id:e};n.block(),n.doAjax(i,n.onRemoveShipmentSuccess,n.onRemoveShipmentError)},onRemoveShipmentSuccess:function(e){var n=germanized.admin.shipments,i=n.$wrapper.find("#shipment-"+e.shipment_id);0<i.length?i.hasClass("active")?i.find(".shipment-content-wrapper").slideUp(300,function(){i.removeClass("active"),i.remove(),n.initShipments(),n.unblock()}):(i.remove(),n.initShipments(),n.unblock()):(n.initShipments(),n.unblock())},onRemoveShipmentError:function(e){germanized.admin.shipments.unblock()},onAddShipment:function(){return germanized.admin.shipments.addShipment(),!1},addShipment:function(){var e=germanized.admin.shipments;e.block(),e.doAjax({action:"woocommerce_gzd_add_shipment"},e.onAddShipmentSuccess,e.onAddShipmentError)},onAddShipmentSuccess:function(e){var n=germanized.admin.shipments;0<n.$wrapper.find(".order-shipment.active").length?n.$wrapper.find(".order-shipment.active").find(".shipment-content-wrapper").slideUp(300,function(){n.$wrapper.find(".order-shipment.active").removeClass("active"),n.appendNewShipment(e),n.initShipments(),n.initTiptip(),n.unblock()}):(n.appendNewShipment(e),n.initShipments(),n.initTiptip(),n.unblock())},appendNewShipment:function(e){var n=germanized.admin.shipments;"simple"===e.new_shipment_type&&0<n.$wrapper.find(".panel-order-return-title").length?n.$wrapper.find(".panel-order-return-title").before(e.new_shipment):n.$wrapper.find("#order-shipments-list").append(e.new_shipment)},onAddShipmentError:function(e){},onAddReturn:function(){return d(this).WCBackboneModal({template:"wc-gzd-modal-add-shipment-return"}),!1},addReturn:function(e){var n=germanized.admin.shipments;n.block();var i={action:"woocommerce_gzd_add_return_shipment"};d.extend(i,e),n.doAjax(i,n.onAddReturnSuccess,n.onAddReturnError)},onAddReturnSuccess:function(e){germanized.admin.shipments.onAddShipmentSuccess(e)},onAddReturnError:function(e){germanized.admin.shipments.onAddShipmentError(e)},setNeedsSaving:function(e){var n=germanized.admin.shipments,i=n.getActiveShipmentId(),t=!!i&&n.getShipment(i).getShipment();"boolean"!=typeof e&&(e=!0),n.needsSaving=!0===e,n.needsSaving?n.$wrapper.find("#order-shipments-save").show():n.$wrapper.find("#order-shipments-save").hide(),t&&(n.needsSaving?n.disableCreateLabel(t):n.enableCreateLabel(t)),n.needsSaving?n.disableCreateLabel(t):n.enableCreateLabel(t),n.hideOrShowFooter(),d(document.body).trigger("woocommerce_gzd_shipments_needs_saving",[n.needsSaving,n.getActiveShipmentId()]),n.initTiptip()},disableCreateLabel:function(e){var n=germanized.admin.shipments,i=e.find(".create-shipment-label");0<i.length&&(i.addClass("disabled button-disabled"),i.prop("title",n.params.i18n_create_label_disabled))},enableCreateLabel:function(e){var n=germanized.admin.shipments,i=e.find(".create-shipment-label");0<i.length&&(i.removeClass("disabled button-disabled"),i.prop("title",n.params.i18n_create_label_enabled))},setNeedsShipments:function(e){var n=germanized.admin.shipments;"boolean"!=typeof e&&(e=!0),n.needsShipments=!0===e,n.needsShipments?(n.$wrapper.addClass("needs-shipments"),n.$wrapper.find("#order-shipment-add").show()):(n.$wrapper.removeClass("needs-shipments"),n.$wrapper.find("#order-shipment-add").hide()),n.hideOrShowFooter()},hideOrShowReturnTitle:function(){var e=germanized.admin.shipments;0===e.$wrapper.find(".order-shipment.shipment-return").length?e.$wrapper.find(".panel-order-return-title").addClass("hide-default"):e.$wrapper.find(".panel-order-return-title").removeClass("hide-default")},setNeedsReturns:function(e){var n=germanized.admin.shipments;"boolean"!=typeof e&&(e=!0),n.needsReturns=!0===e,n.needsReturns?(n.$wrapper.addClass("needs-returns"),n.$wrapper.find("#order-return-shipment-add").show()):(n.$wrapper.removeClass("needs-returns"),n.$wrapper.find("#order-return-shipment-add").hide()),n.hideOrShowFooter()},hideOrShowFooter:function(){var e=germanized.admin.shipments;e.needsSaving||e.needsShipments||e.needsReturns?e.$wrapper.find(".panel-footer").slideDown(300):e.$wrapper.find(".panel-footer").slideUp(300)},onToggleShipment:function(){var e=germanized.admin.shipments,n=d(this).parents(".order-shipment:first"),i=n.hasClass("active");e.closeShipments(),i||n.find("> .shipment-content-wrapper").slideDown(300,function(){n.addClass("active")})},closeShipments:function(){var e=germanized.admin.shipments;e.$wrapper.find(".order-shipment.active .shipment-content-wrapper").slideUp(300,function(){e.$wrapper.find(".order-shipment.active").removeClass("active")})},initShipments:function(){var n=germanized.admin.shipments;n.$wrapper=d("#panel-order-shipments"),n.$wrapper.find(".order-shipment").each(function(){var e=d(this).data("shipment");n.initShipment(e)}),n.hideOrShowReturnTitle()},getShipments:function(){return germanized.admin.shipments.shipments},getShipment:function(e){var n=germanized.admin.shipments.getShipments();return!!n.hasOwnProperty(e)&&n[e]},refresh:function(e){},refreshItems:function(e){},addItem:function(){},initTiptip:function(){var e=germanized.admin.shipments;d(document.body).trigger("init_tooltips"),e.$wrapper.find(".woocommerce-help-tip").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50,delay:200}),e.$wrapper.find(".create-shipment-label").tipTip({fadeIn:50,fadeOut:50,delay:200})},backbone:{onAddReturnSuccess:function(e){d("#wc-gzd-return-shipment-items").html(e.html),d(".wc-backbone-modal-content article").unblock(),d(document.body).on("change","input.wc-gzd-shipment-add-return-item-quantity",function(){var e,n=d(this),i=n.val();!n.attr("max")||(e=n.attr("max"))<i&&n.val(e)})},init:function(e,n){var i=germanized.admin.shipments;if("wc-gzd-modal-add-shipment-return"===n)return d(".wc-backbone-modal-content article").block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),i.doAjax({action:"woocommerce_gzd_get_available_return_shipment_items"},i.backbone.onAddReturnSuccess),!1},response:function(e,n,i){var t=germanized.admin.shipments;"wc-gzd-modal-add-shipment-return"===n&&t.addReturn(i)}}},d(document).ready(function(){germanized.admin.shipments.init()})}(jQuery);
1
+ window.germanized=window.germanized||{},window.germanized.admin=window.germanized.admin||{},function(d){window.germanized.admin.shipments={params:{},shipments:{},$wrapper:!1,needsSaving:!1,needsShipments:!0,needsReturns:!1,init:function(){var e=germanized.admin.shipments;e.params=wc_gzd_admin_shipments_params,e.$wrapper=d("#panel-order-shipments"),e.needsShipments=e.$wrapper.find("#order-shipment-add").is(":visible"),e.needsReturns=e.$wrapper.find("#order-return-shipment-add").is(":visible"),e.initShipments(),d(document).ajaxComplete(e.onAjaxComplete),d(document).on("click","#order-shipments-list .shipment-header",e.onToggleShipment).on("change","#order-shipments-list :input:visible",e.setNeedsSaving).on("click","#panel-order-shipments #order-shipment-add",e.onAddShipment).on("click","#panel-order-shipments #order-return-shipment-add",e.onAddReturn).on("click","#panel-order-shipments .remove-shipment",e.onRemoveShipment).on("click","#panel-order-shipments button#order-shipments-save",e.onSave).on("click","#panel-order-shipments .notice-dismiss",e.onRemoveNotice),d(document.body).on("wc_backbone_modal_loaded",e.backbone.init).on("wc_backbone_modal_response",e.backbone.response)},onAjaxComplete:function(e,n,i){var t=germanized.admin.shipments;if(null!=n&&i.hasOwnProperty("data")){var r,a=i.data,s=!1;try{s=JSON.parse('{"'+a.replace(/&/g,'","').replace(/=/g,'":"')+'"}',function(e,n){return""===e?n:decodeURIComponent(n)})}catch(e){s=!1}s&&s.hasOwnProperty("action")&&("woocommerce_save_order_items"!==(r=s.action)&&"woocommerce_remove_order_item"!==r&&"woocommerce_add_order_item"!==r&&"woocommerce_delete_refund"!==r||t.syncItemQuantities())}},syncItemQuantities:function(){var e=germanized.admin.shipments;e.block();var n={action:"woocommerce_gzd_validate_shipment_item_quantities",active:e.getActiveShipmentId()};e.doAjax(n,e.onSyncSuccess)},onSyncSuccess:function(e){var n=germanized.admin.shipments;n.unblock(),n.initShipments(),n.initTiptip()},onSave:function(e){var n=germanized.admin.shipments;return e.preventDefault(),n.save(),!1},save:function(){var e=germanized.admin.shipments;e.block();var n={action:"woocommerce_gzd_save_shipments",active:e.getActiveShipmentId()};e.doAjax(n,e.onSaveSuccess)},initShipment:function(e){var n=germanized.admin.shipments;n.shipments.hasOwnProperty(e)?n.shipments[e].refreshDom():n.shipments[e]=new d.GermanizedShipment(e)},onSaveSuccess:function(e){var n=germanized.admin.shipments;n.initShipments(),n.setNeedsSaving(!1),n.unblock(),n.initTiptip()},getActiveShipmentId:function(){var e=germanized.admin.shipments.$wrapper.find(".order-shipment.active");return 0<e.length&&e.data("shipment")},block:function(){germanized.admin.shipments.$wrapper.block({message:null,overlayCSS:{background:"#fff",opacity:.6}})},unblock:function(){germanized.admin.shipments.$wrapper.unblock()},getData:function(e){var n=germanized.admin.shipments,i={};return e=e||{},d.each(n.$wrapper.find(":input[name]").serializeArray(),function(e,n){-1!==n.name.indexOf("[]")?(n.name=n.name.replace("[]",""),i[n.name]=d.makeArray(i[n.name]),i[n.name].push(n.value)):i[n.name]=n.value}),d.extend(i,e),i},doAjax:function(e,n,t){var r=germanized.admin.shipments,i=r.params.ajax_url,a=r.$wrapper,s=!0;a.find(".notice-wrapper").empty(),n=n||r.onAjaxSuccess,t=t||r.onAjaxError,e.hasOwnProperty("refresh_fragments")&&(s=e.refresh_fragments),e.hasOwnProperty("security")||(e.security=r.params.edit_shipments_nonce),e.hasOwnProperty("order_id")||(e.order_id=r.params.order_id),e=r.getData(e),d.ajax({type:"POST",url:i,data:e,success:function(e){var i;e.success?(s&&e.fragments&&d.each(e.fragments,function(e,n){d(e).replaceWith(n),d(e).unblock()}),n.apply(a,[e]),e.hasOwnProperty("order_needs_new_shipments")&&r.setNeedsShipments(e.order_needs_new_shipments),e.hasOwnProperty("order_needs_new_returns")&&r.setNeedsReturns(e.order_needs_new_returns),i=e.hasOwnProperty("shipments")?e.shipments:{},d.each(r.getShipments(),function(e,n){i.hasOwnProperty(e)&&(n.setIsEditable(i[e].is_editable),n.setNeedsItems(i[e].needs_items),n.setWeight(i[e].weight),n.setLength(i[e].length),n.setWidth(i[e].width),n.setHeight(i[e].height),n.setTotalWeight(i[e].total_weight))}),e.hasOwnProperty("needs_refresh")&&e.hasOwnProperty("shipment_id")&&r.initShipment(e.shipment_id)):(t.apply(a,[e]),r.unblock(),e.hasOwnProperty("message")?r.addNotice(e.message,"error"):e.hasOwnProperty("messages")&&d.each(e.messages,function(e,n){r.addNotice(n,"error")}))},error:function(e){t.apply(a,[e]),r.unblock()},dataType:"json"})},onAjaxError:function(e){},onAjaxSuccess:function(e){},onRemoveNotice:function(){d(this).parents(".notice").slideUp(150,function(){d(this).remove()})},addNotice:function(e,n){germanized.admin.shipments.$wrapper.find(".notice-wrapper").append('<div class="notice is-dismissible notice-'+n+'"><p>'+e+'</p><button type="button" class="notice-dismiss"></button></div>')},getParams:function(){return germanized.admin.shipments.params},onRemoveShipment:function(){var e=germanized.admin.shipments,n=d(this).parents(".order-shipment").data("shipment");return window.confirm(e.getParams().i18n_remove_shipment_notice)&&e.removeShipment(n),!1},removeShipment:function(e){var n=germanized.admin.shipments,i={action:"woocommerce_gzd_remove_shipment",shipment_id:e};n.block(),n.doAjax(i,n.onRemoveShipmentSuccess,n.onRemoveShipmentError)},onRemoveShipmentSuccess:function(e){var n=germanized.admin.shipments,i=n.$wrapper.find("#shipment-"+e.shipment_id);0<i.length?i.hasClass("active")?i.find(".shipment-content-wrapper").slideUp(300,function(){i.removeClass("active"),i.remove(),n.initShipments(),n.unblock()}):(i.remove(),n.initShipments(),n.unblock()):(n.initShipments(),n.unblock())},onRemoveShipmentError:function(e){germanized.admin.shipments.unblock()},onAddShipment:function(){return germanized.admin.shipments.addShipment(),!1},addShipment:function(){var e=germanized.admin.shipments;e.block(),e.doAjax({action:"woocommerce_gzd_add_shipment"},e.onAddShipmentSuccess,e.onAddShipmentError)},onAddShipmentSuccess:function(e){var n=germanized.admin.shipments;0<n.$wrapper.find(".order-shipment.active").length?n.$wrapper.find(".order-shipment.active").find(".shipment-content-wrapper").slideUp(300,function(){n.$wrapper.find(".order-shipment.active").removeClass("active"),n.appendNewShipment(e),n.initShipments(),n.initTiptip(),n.unblock()}):(n.appendNewShipment(e),n.initShipments(),n.initTiptip(),n.unblock())},appendNewShipment:function(e){var n=germanized.admin.shipments;"simple"===e.new_shipment_type&&0<n.$wrapper.find(".panel-order-return-title").length?n.$wrapper.find(".panel-order-return-title").before(e.new_shipment):n.$wrapper.find("#order-shipments-list").append(e.new_shipment)},onAddShipmentError:function(e){},onAddReturn:function(){return d(this).WCBackboneModal({template:"wc-gzd-modal-add-shipment-return"}),!1},addReturn:function(e){var n=germanized.admin.shipments;n.block();var i={action:"woocommerce_gzd_add_return_shipment"};d.extend(i,e),n.doAjax(i,n.onAddReturnSuccess,n.onAddReturnError)},onAddReturnSuccess:function(e){germanized.admin.shipments.onAddShipmentSuccess(e)},onAddReturnError:function(e){germanized.admin.shipments.onAddShipmentError(e)},setNeedsSaving:function(e){var n=germanized.admin.shipments,i=n.getActiveShipmentId(),t=!!i&&n.getShipment(i).getShipment();"boolean"!=typeof e&&(e=!0),n.needsSaving=!0===e,n.needsSaving?n.$wrapper.find("#order-shipments-save").show():n.$wrapper.find("#order-shipments-save").hide(),t&&(n.needsSaving?n.disableCreateLabel(t):n.enableCreateLabel(t)),n.needsSaving?n.disableCreateLabel(t):n.enableCreateLabel(t),n.hideOrShowFooter(),d(document.body).trigger("woocommerce_gzd_shipments_needs_saving",[n.needsSaving,n.getActiveShipmentId()]),n.initTiptip()},disableCreateLabel:function(e){var n=germanized.admin.shipments,i=e.find(".create-shipment-label");0<i.length&&(i.addClass("disabled button-disabled"),i.prop("title",n.params.i18n_create_label_disabled))},enableCreateLabel:function(e){var n=germanized.admin.shipments,i=e.find(".create-shipment-label");0<i.length&&(i.removeClass("disabled button-disabled"),i.prop("title",n.params.i18n_create_label_enabled))},setNeedsShipments:function(e){var n=germanized.admin.shipments;"boolean"!=typeof e&&(e=!0),n.needsShipments=!0===e,n.needsShipments?(n.$wrapper.addClass("needs-shipments"),n.$wrapper.find("#order-shipment-add").show()):(n.$wrapper.removeClass("needs-shipments"),n.$wrapper.find("#order-shipment-add").hide()),n.hideOrShowFooter()},hideOrShowReturnTitle:function(){var e=germanized.admin.shipments;0===e.$wrapper.find(".order-shipment.shipment-return").length?e.$wrapper.find(".panel-order-return-title").addClass("hide-default"):e.$wrapper.find(".panel-order-return-title").removeClass("hide-default")},setNeedsReturns:function(e){var n=germanized.admin.shipments;"boolean"!=typeof e&&(e=!0),n.needsReturns=!0===e,n.needsReturns?(n.$wrapper.addClass("needs-returns"),n.$wrapper.find("#order-return-shipment-add").show()):(n.$wrapper.removeClass("needs-returns"),n.$wrapper.find("#order-return-shipment-add").hide()),n.hideOrShowFooter()},hideOrShowFooter:function(){var e=germanized.admin.shipments;e.needsSaving||e.needsShipments||e.needsReturns?e.$wrapper.find(".panel-footer").slideDown(300):e.$wrapper.find(".panel-footer").slideUp(300)},onToggleShipment:function(){var e=germanized.admin.shipments,n=d(this).parents(".order-shipment:first"),i=n.hasClass("active");e.closeShipments(),i||n.find("> .shipment-content-wrapper").slideDown(300,function(){n.addClass("active")})},closeShipments:function(){var e=germanized.admin.shipments;e.$wrapper.find(".order-shipment.active .shipment-content-wrapper").slideUp(300,function(){e.$wrapper.find(".order-shipment.active").removeClass("active")})},initShipments:function(){var n=germanized.admin.shipments;n.$wrapper=d("#panel-order-shipments"),n.$wrapper.find(".order-shipment").each(function(){var e=d(this).data("shipment");n.initShipment(e)}),n.hideOrShowReturnTitle()},getShipments:function(){return germanized.admin.shipments.shipments},getShipment:function(e){var n=germanized.admin.shipments.getShipments();return!!n.hasOwnProperty(e)&&n[e]},refresh:function(e){},refreshItems:function(e){},addItem:function(){},initTiptip:function(){var e=germanized.admin.shipments;d(document.body).trigger("init_tooltips"),e.$wrapper.find(".woocommerce-help-tip").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50,delay:200}),e.$wrapper.find(".create-shipment-label").tipTip({fadeIn:50,fadeOut:50,delay:200})},backbone:{onAddReturnSuccess:function(e){d("#wc-gzd-return-shipment-items").html(e.html),d(".wc-backbone-modal-content article").unblock(),d(document.body).on("change","input.wc-gzd-shipment-add-return-item-quantity",function(){var e,n=d(this),i=n.val();!n.attr("max")||(e=n.attr("max"))<i&&n.val(e)})},init:function(e,n){var i=germanized.admin.shipments;if("wc-gzd-modal-add-shipment-return"===n)return d(".wc-backbone-modal-content article").block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),i.doAjax({action:"woocommerce_gzd_get_available_return_shipment_items"},i.backbone.onAddReturnSuccess),!1},response:function(e,n,i){var t=germanized.admin.shipments;"wc-gzd-modal-add-shipment-return"===n&&t.addReturn(i)}}},d(document).ready(function(){germanized.admin.shipments.init()})}(jQuery);
packages/woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-content.php CHANGED
@@ -26,19 +26,30 @@ defined( 'ABSPATH' ) || exit;
26
  do_action( 'woocommerce_gzd_shipment_admin_before_columns', $shipment ); ?>
27
 
28
  <div class="column col-6">
29
- <p class="form-row">
30
- <label for="shipment-weight-<?php echo esc_attr( $shipment->get_id() ); ?>"><?php printf( _x( 'Weight (%s)', 'shipments', 'woocommerce-germanized' ), $shipment->get_weight_unit() ); ?></label>
31
- <input type="text" class="wc_input_decimal" value="<?php echo esc_attr( wc_format_localized_decimal( $shipment->get_weight( 'edit' ) ) ); ?>" name="shipment_weight[<?php echo esc_attr( $shipment->get_id() ); ?>]" id="shipment-weight-<?php echo esc_attr( $shipment->get_id() ); ?>" placeholder="<?php echo esc_attr( wc_format_localized_decimal( $shipment->get_content_weight() ) ); ?>" />
32
- </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
 
34
- <p class="form-row dimensions_field">
35
- <label for="shipment-length-<?php echo esc_attr( $shipment->get_id() ); ?>"><?php printf( _x( 'Dimensions (%s)', 'shipments', 'woocommerce-germanized' ), $shipment->get_dimension_unit() ); ?><?php echo wc_help_tip( _x( 'LxWxH in decimal form.', 'shipments', 'woocommerce-germanized' ) ); ?></label>
36
 
37
- <span class="input-inner-wrap">
38
- <input type="text" size="6" class="wc_input_decimal" value="<?php echo esc_attr( wc_format_localized_decimal( $shipment->get_length( 'edit' ) ) ); ?>" name="shipment_length[<?php echo esc_attr( $shipment->get_id() ); ?>]" id="shipment-length-<?php echo esc_attr( $shipment->get_id() ); ?>" placeholder="<?php echo esc_attr( wc_format_localized_decimal( $shipment->get_content_length() ) ); ?>" />
39
- <input type="text" size="6" class="wc_input_decimal" value="<?php echo esc_attr( wc_format_localized_decimal( $shipment->get_width( 'edit' ) ) ); ?>" name="shipment_width[<?php echo esc_attr( $shipment->get_id() ); ?>]" id="shipment-width-<?php echo esc_attr( $shipment->get_id() ); ?>" placeholder="<?php echo esc_attr( wc_format_localized_decimal( $shipment->get_content_width() ) ); ?>" />
40
- <input type="text" size="6" class="wc_input_decimal" value="<?php echo esc_attr( wc_format_localized_decimal( $shipment->get_height( 'edit' ) ) ); ?>" name="shipment_height[<?php echo esc_attr( $shipment->get_id() ); ?>]" id="shipment-height-<?php echo esc_attr( $shipment->get_id() ); ?>" placeholder="<?php echo esc_attr( wc_format_localized_decimal( $shipment->get_content_height() ) ); ?>" />
41
- </span>
42
  </p>
43
  </div>
44
 
26
  do_action( 'woocommerce_gzd_shipment_admin_before_columns', $shipment ); ?>
27
 
28
  <div class="column col-6">
29
+ <div class="columns">
30
+ <div class="column col-4">
31
+ <p class="form-row">
32
+ <label for="shipment-weight-<?php echo esc_attr( $shipment->get_id() ); ?>"><?php printf( _x( 'Content (%s)', 'shipments', 'woocommerce-germanized' ), $shipment->get_weight_unit() ); ?></label>
33
+ <input type="text" class="wc_input_decimal wc-gzd-shipment-weight" value="<?php echo esc_attr( wc_format_localized_decimal( $shipment->get_weight( 'edit' ) ) ); ?>" name="shipment_weight[<?php echo esc_attr( $shipment->get_id() ); ?>]" id="shipment-weight-<?php echo esc_attr( $shipment->get_id() ); ?>" placeholder="<?php echo esc_attr( wc_format_localized_decimal( $shipment->get_content_weight() ) ); ?>" />
34
+ </p>
35
+ </div>
36
+ <div class="column col-8">
37
+ <p class="form-row dimensions_field">
38
+ <label for="shipment-length-<?php echo esc_attr( $shipment->get_id() ); ?>"><?php printf( _x( 'Dimensions (%s)', 'shipments', 'woocommerce-germanized' ), $shipment->get_dimension_unit() ); ?><?php echo wc_help_tip( _x( 'LxWxH in decimal form.', 'shipments', 'woocommerce-germanized' ) ); ?></label>
39
+
40
+ <span class="input-inner-wrap">
41
+ <input type="text" size="6" class="wc_input_decimal wc-gzd-shipment-dimension" value="<?php echo esc_attr( wc_format_localized_decimal( $shipment->get_length( 'edit' ) ) ); ?>" name="shipment_length[<?php echo esc_attr( $shipment->get_id() ); ?>]" id="shipment-length-<?php echo esc_attr( $shipment->get_id() ); ?>" placeholder="<?php echo esc_attr( wc_format_localized_decimal( $shipment->get_content_length() ) ); ?>" />
42
+ <input type="text" size="6" class="wc_input_decimal wc-gzd-shipment-dimension" value="<?php echo esc_attr( wc_format_localized_decimal( $shipment->get_width( 'edit' ) ) ); ?>" name="shipment_width[<?php echo esc_attr( $shipment->get_id() ); ?>]" id="shipment-width-<?php echo esc_attr( $shipment->get_id() ); ?>" placeholder="<?php echo esc_attr( wc_format_localized_decimal( $shipment->get_content_width() ) ); ?>" />
43
+ <input type="text" size="6" class="wc_input_decimal wc-gzd-shipment-dimension" value="<?php echo esc_attr( wc_format_localized_decimal( $shipment->get_height( 'edit' ) ) ); ?>" name="shipment_height[<?php echo esc_attr( $shipment->get_id() ); ?>]" id="shipment-height-<?php echo esc_attr( $shipment->get_id() ); ?>" placeholder="<?php echo esc_attr( wc_format_localized_decimal( $shipment->get_content_height() ) ); ?>" />
44
+ </span>
45
+ </p>
46
+ </div>
47
+ </div>
48
 
49
+ <p class="form-row wc-gzd-shipment-packaging-wrapper">
50
+ <label for="shipment-packaging-<?php echo esc_attr( $shipment->get_id() ); ?>"><?php _ex( 'Packaging', 'shipments', 'woocommerce-germanized' ); ?></label>
51
 
52
+ <?php include 'html-order-shipment-packaging-select.php'; ?>
 
 
 
 
53
  </p>
54
  </div>
55
 
packages/woocommerce-germanized-shipments/includes/admin/views/html-order-shipment-packaging-select.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Order shipments HTML for meta box.
4
+ *
5
+ * @package WooCommerce_Germanized/DHL/Admin
6
+ */
7
+
8
+ defined( 'ABSPATH' ) || exit;
9
+
10
+ $available_packaging = $shipment->get_available_packaging();
11
+ $current_packaging_id = $shipment->get_packaging_id();
12
+ $default_packaging_id = \Vendidero\Germanized\Shipments\Package::get_setting( 'default_packaging' );
13
+ $default_packaging = ! empty( $default_packaging_id ) ? wc_gzd_get_packaging( $default_packaging_id ) : false;
14
+ $default_exists_in_list = false;
15
+ ?>
16
+ <select class="shipment-packaging-select" id="shipment-packaging-<?php echo esc_attr( $shipment->get_id() ); ?>" name="shipment_packaging_id[<?php echo esc_attr( $shipment->get_id() ); ?>]">
17
+ <option value=""><?php _ex( 'None', 'shipments-packaging', 'woocommerce-germanized' ); ?></option>
18
+ <?php foreach( $available_packaging as $packaging ) :
19
+ if ( $packaging->get_id() == $default_packaging_id ) {
20
+ $default_exists_in_list = true;
21
+ }
22
+ ?>
23
+ <option value="<?php echo esc_attr( $packaging->get_id() ); ?>" <?php selected( $packaging->get_id(), $shipment->get_packaging_id(), true ); ?>><?php echo $packaging->get_title(); ?></option>
24
+ <?php endforeach; ?>
25
+
26
+ <?php if ( ! $default_exists_in_list && $default_packaging ) : ?>
27
+ <option value="<?php echo esc_attr( $default_packaging->get_id() ); ?>" <?php selected( $default_packaging->get_id(), $shipment->get_packaging_id(), true ); ?>><?php echo $default_packaging->get_title(); ?> (<?php _ex( 'Does not fit', 'shipments', 'woocommerce-germanized' ); ?>)</option>
28
+ <?php endif; ?>
29
+ </select>
packages/woocommerce-germanized-shipments/includes/wc-gzd-packaging-functions.php ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Germanized Packaging Functions
4
+ *
5
+ * @package Germanized/Shipments/Functions
6
+ * @version 3.3.0
7
+ */
8
+
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ /**
12
+ * Get Packaging.
13
+ *
14
+ * @param mixed $packaging_id (default: false) Packaging id to get or empty if new.
15
+ *
16
+ * @return \Vendidero\Germanized\Shipments\Packaging|bool
17
+ */
18
+ function wc_gzd_get_packaging( $packaging_id = false ) {
19
+ return \Vendidero\Germanized\Shipments\PackagingFactory::get_packaging( $packaging_id );
20
+ }
21
+
22
+ function wc_gzd_get_packaging_types() {
23
+ $types = array(
24
+ 'cardboard' => _x( 'Cardboard', 'shipments', 'woocommerce-germanized' ),
25
+ 'letter' => _x( 'Letter', 'shipments', 'woocommerce-germanized' )
26
+ );
27
+
28
+ return apply_filters( 'woocommerce_gzd_packaging_types', $types );
29
+ }
30
+
31
+ /**
32
+ * @return \Vendidero\Germanized\Shipments\Packaging[] $packaging_list
33
+ */
34
+ function wc_gzd_get_packaging_list() {
35
+ $data_store = \WC_Data_Store::load( 'packaging' );
36
+ $list = $data_store->get_packaging_list();
37
+
38
+ return $list;
39
+ }
40
+
41
+ function wc_gzd_get_packaging_weight_unit() {
42
+ return apply_filters( 'woocommerce_gzd_packaging_weight_unit', 'kg' );
43
+ }
44
+
45
+ function wc_gzd_get_packaging_dimension_unit() {
46
+ return apply_filters( 'woocommerce_gzd_packaging_dimension_unit', 'cm' );
47
+ }
48
+
49
+ function wc_gzd_get_packaging_select() {
50
+ $list = wc_gzd_get_packaging_list();
51
+ $select = array(
52
+ '' => _x( 'None', 'shipments-packaging', 'woocommerce-germanized' ),
53
+ );
54
+
55
+ foreach( $list as $packaging ) {
56
+ $select[ $packaging->get_id() ] = $packaging->get_title();
57
+ }
58
+
59
+ return $select;
60
+ }
packages/woocommerce-germanized-shipments/src/Admin/Admin.php CHANGED
@@ -44,7 +44,11 @@ class Admin {
44
 
45
  // Return reason options
46
  add_action( 'woocommerce_admin_field_shipment_return_reasons', array( __CLASS__, 'output_return_reasons_field' ) );
47
- add_action( 'woocommerce_gzd_admin_settings_after_save_shipments', array( __CLASS__, 'save_return_reasons' ) );
 
 
 
 
48
 
49
  // Menu count
50
  add_action( 'admin_head', array( __CLASS__, 'menu_return_count' ) );
@@ -130,7 +134,68 @@ class Admin {
130
  return ( $a['order'] < $b['order'] ) ? -1 : 1;
131
  }
132
 
133
- public static function save_return_reasons() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
134
  $reasons = array();
135
 
136
  // phpcs:disable WordPress.Security.NonceVerification.NoNonceVerification -- Nonce verification already handled in WC_Admin_Settings::save()
@@ -172,8 +237,8 @@ class Admin {
172
  <thead>
173
  <tr>
174
  <th class="sort">&nbsp;</th>
175
- <th style="width: 10ch;"><?php echo esc_html_x( 'Reason code', 'shipments', 'woocommerce-germanized' ); ?> <?php echo wc_help_tip( _x( 'The reason code is used to identify the reason.', 'shipments', 'woocommerce-germanized' ) ); ?></th>
176
- <th><?php echo esc_html_x( 'Reason', 'shipments', 'woocommerce-germanized' ); ?> <?php echo wc_help_tip( _x( 'Choose a reason text.', 'shipments', 'woocommerce-germanized' ) ); ?></th>
177
  </tr>
178
  </thead>
179
  <tbody class="shipment_return_reasons">
@@ -221,6 +286,125 @@ class Admin {
221
  echo $html;
222
  }
223
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
224
  public static function download_label() {
225
  if ( isset( $_GET['action'] ) && 'wc-gzd-download-shipment-label' === $_GET['action'] ) {
226
  if ( isset( $_GET['shipment_id'] ) && wp_verify_nonce( $_REQUEST['_wpnonce'], 'download-shipment-label' ) ) {
@@ -532,6 +716,7 @@ class Admin {
532
  'remove_label_nonce' => wp_create_nonce( 'remove-shipment-label' ),
533
  'edit_label_nonce' => wp_create_nonce( 'edit-shipment-label' ),
534
  'send_return_notification_nonce' => wp_create_nonce( 'send-return-shipment-notification' ),
 
535
  'confirm_return_request_nonce' => wp_create_nonce( 'confirm-return-request' ),
536
  'i18n_remove_label_notice' => _x( 'Do you really want to delete the label?', 'shipments', 'woocommerce-germanized' ),
537
  'i18n_create_label_enabled' => _x( 'Create new label', 'shipments', 'woocommerce-germanized' ),
44
 
45
  // Return reason options
46
  add_action( 'woocommerce_admin_field_shipment_return_reasons', array( __CLASS__, 'output_return_reasons_field' ) );
47
+ add_action( 'woocommerce_gzd_admin_settings_after_save_shipments', array( __CLASS__, 'save_return_reasons' ), 10, 2 );
48
+
49
+ // Packaging options
50
+ add_action( 'woocommerce_admin_field_packaging_list', array( __CLASS__, 'output_packaging_list' ) );
51
+ add_action( 'woocommerce_gzd_admin_settings_after_save_shipments_packaging', array( __CLASS__, 'save_packaging_list' ), 10 );
52
 
53
  // Menu count
54
  add_action( 'admin_head', array( __CLASS__, 'menu_return_count' ) );
134
  return ( $a['order'] < $b['order'] ) ? -1 : 1;
135
  }
136
 
137
+ public static function save_packaging_list() {
138
+ $current_key_list = array();
139
+ $packaging_ids_after_save = array();
140
+
141
+ foreach( wc_gzd_get_packaging_list() as $pack ) {
142
+ $current_key_list[] = $pack->get_id();
143
+ }
144
+
145
+ // phpcs:disable WordPress.Security.NonceVerification.NoNonceVerification -- Nonce verification already handled in WC_Admin_Settings::save()
146
+ if ( isset( $_POST['packaging'] ) ) {
147
+ $packaging_post = wc_clean( wp_unslash( $_POST['packaging'] ) );
148
+ $order = 0;
149
+ $available_types = array_keys( wc_gzd_get_packaging_types() );
150
+
151
+ foreach( $packaging_post as $packaging ) {
152
+ $packaging = wc_clean( $packaging );
153
+ $packaging_id = isset( $packaging['packaging_id'] ) ? absint( $packaging['packaging_id'] ) : 0;
154
+ $packaging_obj = wc_gzd_get_packaging( $packaging_id );
155
+
156
+ if ( $packaging_obj ) {
157
+ $packaging_obj->set_props( array(
158
+ 'type' => ! in_array( $packaging['type'], $available_types ) ? 'cardboard' : $packaging['type'],
159
+ 'weight' => empty( $packaging['weight'] ) ? 0 : $packaging['weight'],
160
+ 'description' => empty( $packaging['description'] ) ? '' : $packaging['description'],
161
+ 'length' => empty( $packaging['length'] ) ? 0 : $packaging['length'],
162
+ 'width' => empty( $packaging['width'] ) ? 0 : $packaging['width'],
163
+ 'height' => empty( $packaging['height'] ) ? 0 : $packaging['height'],
164
+ 'max_content_weight' => empty( $packaging['max_content_weight'] ) ? 0 : $packaging['max_content_weight'],
165
+ 'order' => ++$order,
166
+ ) );
167
+
168
+ if ( empty( $packaging_obj->get_description() ) ) {
169
+ if ( $packaging_obj->get_id() > 0 ) {
170
+ $packaging_obj->delete( true );
171
+ continue;
172
+ } else {
173
+ continue;
174
+ }
175
+ }
176
+
177
+ $packaging_obj->save();
178
+ $packaging_ids_after_save[] = $packaging_obj->get_id();
179
+ }
180
+ }
181
+ }
182
+
183
+ $to_delete = array_diff( $current_key_list, $packaging_ids_after_save );
184
+
185
+ if ( ! empty( $to_delete ) ) {
186
+ foreach( $to_delete as $delete_id ) {
187
+ if ( $packaging = wc_gzd_get_packaging( $delete_id ) ) {
188
+ $packaging->delete( true );
189
+ }
190
+ }
191
+ }
192
+ }
193
+
194
+ public static function save_return_reasons( $tab, $current_section ) {
195
+ if ( '' !== $current_section ) {
196
+ return;
197
+ }
198
+
199
  $reasons = array();
200
 
201
  // phpcs:disable WordPress.Security.NonceVerification.NoNonceVerification -- Nonce verification already handled in WC_Admin_Settings::save()
237
  <thead>
238
  <tr>
239
  <th class="sort">&nbsp;</th>
240
+ <th style="width: 10ch;"><?php echo esc_html_x( 'Reason code', 'shipments', 'woocommerce-germanized' ); ?> <?php echo wc_help_tip( _x( 'The reason code is used to identify the reason.', 'shipments', 'woocommerce-germanized' ) ); ?></th>
241
+ <th><?php echo esc_html_x( 'Reason', 'shipments', 'woocommerce-germanized' ); ?> <?php echo wc_help_tip( _x( 'Choose a reason text.', 'shipments', 'woocommerce-germanized' ) ); ?></th>
242
  </tr>
243
  </thead>
244
  <tbody class="shipment_return_reasons">
286
  echo $html;
287
  }
288
 
289
+ public static function output_packaging_list( $value ) {
290
+ ob_start();
291
+ ?>
292
+ <tr valign="top">
293
+ <th scope="row" class="titledesc"><?php echo esc_html_x( 'Available Packaging', 'shipments', 'woocommerce-germanized' ); ?></th>
294
+ <td class="forminp" id="packaging_list_wrapper">
295
+ <div class="wc_input_table_wrapper">
296
+ <style>
297
+ tbody.packaging_list tr td {
298
+ padding: .5em;
299
+ }
300
+ tbody.packaging_list select {
301
+ width: 100% !important;
302
+ }
303
+ tbody.packaging_list .input-inner-wrap {
304
+ display: flex;
305
+ flex-wrap: nowrap;
306
+ }
307
+ tbody.packaging_list .input-inner-wrap input {
308
+ width: 33% !important;
309
+ min-width: auto !important;
310
+ }
311
+ </style>
312
+ <table class="widefat wc_input_table sortable" cellspacing="0">
313
+ <thead>
314
+ <tr>
315
+ <th class="sort">&nbsp;</th>
316
+ <th style="width: 20ch;"><?php echo esc_html_x( 'Description', 'shipments', 'woocommerce-germanized' ); ?> <?php echo wc_help_tip( _x( 'A description to help you identify the packaging.', 'shipments', 'woocommerce-germanized' ) ); ?></th>
317
+ <th style="width: 15ch;"><?php echo esc_html_x( 'Type', 'shipments', 'woocommerce-germanized' ); ?></th>
318
+ <th style="width: 5ch;"><?php echo sprintf( esc_html_x( 'Weight (%s)', 'shipments', 'woocommerce-germanized' ), wc_gzd_get_packaging_dimension_unit() ); ?> <?php echo wc_help_tip( _x( 'The weight of the packaging.', 'shipments', 'woocommerce-germanized' ) ); ?></th>
319
+ <th style="width: 15ch;"><?php echo sprintf( esc_html_x( 'Dimensions (LxWxH, %s)', 'shipments', 'woocommerce-germanized' ), wc_gzd_get_packaging_weight_unit() ); ?></th>
320
+ <th style="width: 5ch;"><?php echo esc_html_x( 'Max weight (kg)', 'shipments', 'woocommerce-germanized' ); ?> <?php echo wc_help_tip( _x( 'The maximum weight this packaging can hold. Leave empty to not restrict maximum weight.', 'shipments', 'woocommerce-germanized' ) ); ?></th>
321
+ </tr>
322
+ </thead>
323
+ <tbody class="packaging_list">
324
+ <?php
325
+ $count = 0;
326
+ foreach ( wc_gzd_get_packaging_list() as $packaging ) : ?>
327
+ <tr class="packaging">
328
+ <td class="sort"></td>
329
+ <td style="width: 20ch;">
330
+ <input type="text" name="packaging[<?php echo esc_attr( $count ); ?>][description]" value="<?php echo esc_attr( wp_unslash( $packaging->get_description() ) ); ?>" />
331
+ <input type="hidden" name="packaging[<?php echo esc_attr( $count ); ?>][packaging_id]" value="<?php echo esc_attr( $packaging->get_id() ); ?>" />
332
+ </td>
333
+ <td style="width: 15ch;">
334
+ <select name="packaging[<?php echo esc_attr( $count ); ?>][type]">
335
+ <?php foreach( wc_gzd_get_packaging_types() as $type => $type_title ) : ?>
336
+ <option value="<?php echo esc_attr( $type ); ?>" <?php selected( $packaging->get_type(), $type ); ?>><?php echo esc_attr( $type_title ); ?></option>
337
+ <?php endforeach; ?>
338
+ </select>
339
+ </td>
340
+ <td style="width: 5ch;">
341
+ <input class="wc_input_decimal" type="text" name="packaging[<?php echo esc_attr( $count ); ?>][weight]" value="<?php echo esc_attr( $packaging->get_weight() ); ?>" placeholder="0" />
342
+ </td>
343
+ <td style="width: 15ch;">
344
+ <span class="input-inner-wrap">
345
+ <input class="wc_input_decimal" type="text" name="packaging[<?php echo esc_attr( $count ); ?>][length]" value="<?php echo esc_attr( $packaging->get_length() ); ?>" placeholder="<?php echo esc_attr( _x( 'Length', 'shipments', 'woocommerce-germanized' ) ); ?>" />
346
+ <input class="wc_input_decimal" type="text" name="packaging[<?php echo esc_attr( $count ); ?>][width]" value="<?php echo esc_attr( $packaging->get_width() ); ?>" placeholder="<?php echo esc_attr( _x( 'Width', 'shipments', 'woocommerce-germanized' ) ); ?>" />
347
+ <input class="wc_input_decimal" type="text" name="packaging[<?php echo esc_attr( $count ); ?>][height]" value="<?php echo esc_attr( $packaging->get_height() ); ?>" placeholder="<?php echo esc_attr( _x( 'Height', 'shipments', 'woocommerce-germanized' ) ); ?>" />
348
+ </span>
349
+ </td>
350
+ <td style="width: 5ch;">
351
+ <input class="wc_input_decimal" type="text" name="packaging[<?php echo esc_attr( $count ); ?>][max_content_weight]" value="<?php echo esc_attr( $packaging->get_max_content_weight() ); ?>" placeholder="0" />
352
+ </td>
353
+ </tr>
354
+ <?php
355
+ $count++;
356
+ endforeach; ?>
357
+ </tbody>
358
+ <tfoot>
359
+ <tr>
360
+ <th colspan="7"><a href="#" class="add button"><?php echo esc_html_x( '+ Add packaging', 'shipments', 'woocommerce-germanized' ); ?></a> <a href="#" class="remove_rows button"><?php echo esc_html_x( 'Remove selected packaging', 'shipments', 'woocommerce-germanized' ); ?></a></th>
361
+ </tr>
362
+ </tfoot>
363
+ </table>
364
+ </div>
365
+ <script type="text/javascript">
366
+ jQuery(function() {
367
+ jQuery('#packaging_list_wrapper').on( 'click', 'a.add', function(){
368
+
369
+ var size = jQuery('#packaging_list_wrapper').find('tbody .packaging').length;
370
+
371
+ jQuery('<tr class="packaging">\
372
+ <td class="sort"></td>\
373
+ <td style="width: 10ch;"><input type="text" name="packaging[' + size + '][description]" value="" /></td>\
374
+ <td style="width: 10ch;">\
375
+ <select name="packaging[' + size + '][type]">\
376
+ <?php foreach( wc_gzd_get_packaging_types() as $type => $type_title ) : ?>\
377
+ <option value="<?php echo esc_attr( $type ); ?>"><?php echo esc_attr( $type_title ); ?></option>\
378
+ <?php endforeach; ?>\
379
+ </select>\
380
+ </td>\
381
+ <td style="width: 5ch;">\
382
+ <input class="wc_input_decimal" type="text" name="packaging[' + size + '][weight]" placeholder="0" />\
383
+ </td>\
384
+ <td style="width: 15ch;">\
385
+ <span class="input-inner-wrap">\
386
+ <input class="wc_input_decimal" type="text" name="packaging[' + size + '][length]" value="" placeholder="<?php echo esc_attr( _x( 'Length', 'shipments', 'woocommerce-germanized' ) ); ?>" />\
387
+ <input class="wc_input_decimal" type="text" name="packaging[' + size + '][width]" value="" placeholder="<?php echo esc_attr( _x( 'Width', 'shipments', 'woocommerce-germanized' ) ); ?>" />\
388
+ <input class="wc_input_decimal" type="text" name="packaging[' + size + '][height]" value="" placeholder="<?php echo esc_attr( _x( 'Height', 'shipments', 'woocommerce-germanized' ) ); ?>" />\
389
+ </span>\
390
+ </td>\
391
+ <td style="width: 5ch;">\
392
+ <input class="wc_input_decimal" type="text" name="packaging[' + size + '][max_content_weight]" placeholder="0" />\
393
+ </td>\
394
+ </tr>').appendTo('#packaging_list_wrapper table tbody');
395
+
396
+ return false;
397
+ });
398
+ });
399
+ </script>
400
+ </td>
401
+ </tr>
402
+ <?php
403
+ $html = ob_get_clean();
404
+
405
+ echo $html;
406
+ }
407
+
408
  public static function download_label() {
409
  if ( isset( $_GET['action'] ) && 'wc-gzd-download-shipment-label' === $_GET['action'] ) {
410
  if ( isset( $_GET['shipment_id'] ) && wp_verify_nonce( $_REQUEST['_wpnonce'], 'download-shipment-label' ) ) {
716
  'remove_label_nonce' => wp_create_nonce( 'remove-shipment-label' ),
717
  'edit_label_nonce' => wp_create_nonce( 'edit-shipment-label' ),
718
  'send_return_notification_nonce' => wp_create_nonce( 'send-return-shipment-notification' ),
719
+ 'refresh_packaging_nonce' => wp_create_nonce( 'refresh-shipment-packaging' ),
720
  'confirm_return_request_nonce' => wp_create_nonce( 'confirm-return-request' ),
721
  'i18n_remove_label_notice' => _x( 'Do you really want to delete the label?', 'shipments', 'woocommerce-germanized' ),
722
  'i18n_create_label_enabled' => _x( 'Create new label', 'shipments', 'woocommerce-germanized' ),
packages/woocommerce-germanized-shipments/src/Admin/MetaBox.php CHANGED
@@ -50,6 +50,10 @@ class MetaBox {
50
  $props['tracking_id'] = wc_clean( wp_unslash( $_POST['shipment_tracking_id'][ $id ] ) );
51
  }
52
 
 
 
 
 
53
  if ( isset( $_POST['shipment_shipping_provider'][ $id ] ) ) {
54
  $provider = wc_clean( wp_unslash( $_POST['shipment_shipping_provider'][ $id ] ) );
55
  $providers = wc_gzd_get_shipping_providers();
50
  $props['tracking_id'] = wc_clean( wp_unslash( $_POST['shipment_tracking_id'][ $id ] ) );
51
  }
52
 
53
+ if ( isset( $_POST['shipment_packaging_id'][ $id ] ) ) {
54
+ $props['packaging_id'] = wc_clean( wp_unslash( $_POST['shipment_packaging_id'][ $id ] ) );
55
+ }
56
+
57
  if ( isset( $_POST['shipment_shipping_provider'][ $id ] ) ) {
58
  $provider = wc_clean( wp_unslash( $_POST['shipment_shipping_provider'][ $id ] ) );
59
  $providers = wc_gzd_get_shipping_providers();
packages/woocommerce-germanized-shipments/src/Admin/Settings.php CHANGED
@@ -268,6 +268,30 @@ class Settings {
268
  return $settings;
269
  }
270
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
271
  public static function save_provider( $provider_name = '' ) {
272
  $helper = ShippingProviders::instance();
273
 
@@ -326,6 +350,8 @@ class Settings {
326
 
327
  if ( '' === $current_section ) {
328
  $settings = self::get_general_settings();
 
 
329
  } elseif( 'provider' === $current_section && isset( $_GET['provider'] ) ) {
330
 
331
  $provider_name = wc_clean( wp_unslash( $_GET['provider'] ) );
@@ -395,6 +421,7 @@ class Settings {
395
  public static function get_sections() {
396
  return array(
397
  '' => _x( 'General', 'shipments', 'woocommerce-germanized' ),
 
398
  'provider' => _x( 'Shipping Provider', 'shipments', 'woocommerce-germanized' )
399
  );
400
  }
268
  return $settings;
269
  }
270
 
271
+ protected static function get_packaging_settings() {
272
+ $settings = array(
273
+ array( 'title' => '', 'type' => 'title', 'id' => 'packaging_options' ),
274
+
275
+ array(
276
+ 'type' => 'packaging_list',
277
+ ),
278
+
279
+ array(
280
+ 'title' => _x( 'Default packaging', 'shipments', 'woocommerce-germanized' ),
281
+ 'desc_tip' => _x( 'Choose a packaging which serves as fallback or default in case no suitable packaging could be matched for a certain shipment.', 'shipments', 'woocommerce-germanized' ),
282
+ 'id' => 'woocommerce_gzd_shipments_default_packaging',
283
+ 'default' => '',
284
+ 'type' => 'select',
285
+ 'options' => wc_gzd_get_packaging_select(),
286
+ 'class' => 'wc-enhanced-select',
287
+ ),
288
+
289
+ array( 'type' => 'sectionend', 'id' => 'packaging_options' ),
290
+ );
291
+
292
+ return $settings;
293
+ }
294
+
295
  public static function save_provider( $provider_name = '' ) {
296
  $helper = ShippingProviders::instance();
297
 
350
 
351
  if ( '' === $current_section ) {
352
  $settings = self::get_general_settings();
353
+ } elseif ( 'packaging' === $current_section ) {
354
+ $settings = self::get_packaging_settings();
355
  } elseif( 'provider' === $current_section && isset( $_GET['provider'] ) ) {
356
 
357
  $provider_name = wc_clean( wp_unslash( $_GET['provider'] ) );
421
  public static function get_sections() {
422
  return array(
423
  '' => _x( 'General', 'shipments', 'woocommerce-germanized' ),
424
+ 'packaging' => _x( 'Packaging', 'shipments', 'woocommerce-germanized' ),
425
  'provider' => _x( 'Shipping Provider', 'shipments', 'woocommerce-germanized' )
426
  );
427
  }
packages/woocommerce-germanized-shipments/src/Ajax.php CHANGED
@@ -30,6 +30,7 @@ class Ajax {
30
  'add_shipment',
31
  'remove_shipment',
32
  'remove_shipment_item',
 
33
  'limit_shipment_item_quantity',
34
  'save_shipments',
35
  'sync_shipment_items',
@@ -771,7 +772,7 @@ class Ajax {
771
  '#shipment-' . $shipment->get_id() . ' .item-count:first' => self::get_item_count_html( $shipment, $order_shipment ),
772
  );
773
 
774
- self::send_json_success( $response, $order_shipment );
775
  }
776
 
777
  public static function json_search_orders() {
@@ -841,6 +842,67 @@ class Ajax {
841
  return $status_html;
842
  }
843
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
844
  public static function save_shipments() {
845
  check_ajax_referer( 'edit-shipments', 'security' );
846
 
@@ -1055,7 +1117,7 @@ class Ajax {
1055
  '#shipment-' . $shipment->get_id() . ' .item-count:first' => self::get_item_count_html( $shipment, $order_shipment ),
1056
  );
1057
 
1058
- self::send_json_success( $response, $order_shipment );
1059
  }
1060
 
1061
  /**
@@ -1195,7 +1257,7 @@ class Ajax {
1195
  '#shipment-' . $shipment->get_id() . ' .item-count:first' => self::get_item_count_html( $shipment, $order_shipment ),
1196
  );
1197
 
1198
- self::send_json_success( $response, $order_shipment );
1199
  }
1200
 
1201
  public static function limit_shipment_item_quantity() {
@@ -1276,7 +1338,7 @@ class Ajax {
1276
  '#shipment-' . $shipment->get_id() . ' .item-count:first' => self::get_item_count_html( $shipment, $order_shipment ),
1277
  );
1278
 
1279
- self::send_json_success( $response, $order_shipment );
1280
  }
1281
 
1282
  /**
@@ -1284,13 +1346,12 @@ class Ajax {
1284
  * @param Order $order_shipment
1285
  * @param Shipment|bool $shipment
1286
  */
1287
- private static function send_json_success( $response, $order_shipment ) {
1288
 
1289
  $available_items = $order_shipment->get_available_items_for_shipment();
1290
  $response['shipments'] = array();
1291
 
1292
  foreach( $order_shipment->get_shipments() as $shipment ) {
1293
-
1294
  $shipment->set_order_shipment( $order_shipment );
1295
 
1296
  $response['shipments'][ $shipment->get_id() ] = array(
@@ -1300,12 +1361,21 @@ class Ajax {
1300
  'length' => wc_format_localized_decimal( $shipment->get_content_length() ),
1301
  'width' => wc_format_localized_decimal( $shipment->get_content_width() ),
1302
  'height' => wc_format_localized_decimal( $shipment->get_content_height() ),
 
1303
  );
1304
  }
1305
 
1306
  $response['order_needs_new_shipments'] = $order_shipment->needs_shipping();
1307
  $response['order_needs_new_returns'] = $order_shipment->needs_return();
1308
 
 
 
 
 
 
 
 
 
1309
  wp_send_json( $response );
1310
  }
1311
  }
30
  'add_shipment',
31
  'remove_shipment',
32
  'remove_shipment_item',
33
+ 'refresh_shipment_packaging',
34
  'limit_shipment_item_quantity',
35
  'save_shipments',
36
  'sync_shipment_items',
772
  '#shipment-' . $shipment->get_id() . ' .item-count:first' => self::get_item_count_html( $shipment, $order_shipment ),
773
  );
774
 
775
+ self::send_json_success( $response, $order_shipment, $shipment );
776
  }
777
 
778
  public static function json_search_orders() {
842
  return $status_html;
843
  }
844
 
845
+ public static function refresh_shipment_packaging() {
846
+ check_ajax_referer( 'refresh-shipment-packaging', 'security' );
847
+
848
+ if ( ! current_user_can( 'edit_shop_orders' ) || ! isset( $_POST['shipment_id'] ) ) {
849
+ wp_die( -1 );
850
+ }
851
+
852
+ $response_error = array(
853
+ 'success' => false,
854
+ 'message' => _x( 'There was an error processing the shipment', 'shipments', 'woocommerce-germanized' ),
855
+ );
856
+
857
+ $response = array(
858
+ 'success' => true,
859
+ 'message' => '',
860
+ );
861
+
862
+ $shipment_id = absint( $_POST['shipment_id'] );
863
+
864
+ if ( ! $shipment = wc_gzd_get_shipment( $shipment_id ) ) {
865
+ wp_send_json( $response_error );
866
+ }
867
+
868
+ $response['fragments'] = array(
869
+ '#shipment-' . $shipment->get_id() . ' .shipment-packaging-select' => self::get_packaging_select_html( $shipment ),
870
+ );
871
+
872
+ wp_send_json( $response );
873
+ }
874
+
875
+ protected static function get_packaging_select_html( $shipment ) {
876
+ $shipment_id = $shipment->get_id();
877
+
878
+ $data = array(
879
+ 'weight' => isset( $_POST['shipment_weight'][ $shipment_id ] ) ? wc_clean( wp_unslash( $_POST['shipment_weight'][ $shipment_id ] ) ) : '',
880
+ 'length' => isset( $_POST['shipment_length'][ $shipment_id ] ) ? wc_clean( wp_unslash( $_POST['shipment_length'][ $shipment_id ] ) ) : '',
881
+ 'width' => isset( $_POST['shipment_width'][ $shipment_id ] ) ? wc_clean( wp_unslash( $_POST['shipment_width'][ $shipment_id ] ) ) : '',
882
+ 'height' => isset( $_POST['shipment_height'][ $shipment_id ] ) ? wc_clean( wp_unslash( $_POST['shipment_height'][ $shipment_id ] ) ) : '',
883
+ );
884
+
885
+ $data = array_filter( $data );
886
+
887
+ /**
888
+ * In case no data was transmitted - use content data instead.
889
+ */
890
+ $data = wp_parse_args( $data, array(
891
+ 'weight' => $shipment->get_content_weight(),
892
+ 'length' => $shipment->get_content_length(),
893
+ 'width' => $shipment->get_content_width(),
894
+ 'height' => $shipment->get_content_height()
895
+ ) );
896
+
897
+ $shipment->set_props( $data );
898
+
899
+ ob_start();
900
+ include( Package::get_path() . '/includes/admin/views/html-order-shipment-packaging-select.php' );
901
+ $html = ob_get_clean();
902
+
903
+ return $html;
904
+ }
905
+
906
  public static function save_shipments() {
907
  check_ajax_referer( 'edit-shipments', 'security' );
908
 
1117
  '#shipment-' . $shipment->get_id() . ' .item-count:first' => self::get_item_count_html( $shipment, $order_shipment ),
1118
  );
1119
 
1120
+ self::send_json_success( $response, $order_shipment, $shipment );
1121
  }
1122
 
1123
  /**
1257
  '#shipment-' . $shipment->get_id() . ' .item-count:first' => self::get_item_count_html( $shipment, $order_shipment ),
1258
  );
1259
 
1260
+ self::send_json_success( $response, $order_shipment, $shipment );
1261
  }
1262
 
1263
  public static function limit_shipment_item_quantity() {
1338
  '#shipment-' . $shipment->get_id() . ' .item-count:first' => self::get_item_count_html( $shipment, $order_shipment ),
1339
  );
1340
 
1341
+ self::send_json_success( $response, $order_shipment, $shipment );
1342
  }
1343
 
1344
  /**
1346
  * @param Order $order_shipment
1347
  * @param Shipment|bool $shipment
1348
  */
1349
+ private static function send_json_success( $response, $order_shipment, $current_shipment = false ) {
1350
 
1351
  $available_items = $order_shipment->get_available_items_for_shipment();
1352
  $response['shipments'] = array();
1353
 
1354
  foreach( $order_shipment->get_shipments() as $shipment ) {
 
1355
  $shipment->set_order_shipment( $order_shipment );
1356
 
1357
  $response['shipments'][ $shipment->get_id() ] = array(
1361
  'length' => wc_format_localized_decimal( $shipment->get_content_length() ),
1362
  'width' => wc_format_localized_decimal( $shipment->get_content_width() ),
1363
  'height' => wc_format_localized_decimal( $shipment->get_content_height() ),
1364
+ 'total_weight' => wc_format_localized_decimal( $shipment->get_total_weight() ),
1365
  );
1366
  }
1367
 
1368
  $response['order_needs_new_shipments'] = $order_shipment->needs_shipping();
1369
  $response['order_needs_new_returns'] = $order_shipment->needs_return();
1370
 
1371
+ if ( $current_shipment ) {
1372
+ if ( ! isset( $response['fragments'] ) ) {
1373
+ $response['fragments'] = array();
1374
+ }
1375
+
1376
+ $response['fragments']['#shipment-' . $shipment->get_id() . ' .shipment-packaging-select'] = self::get_packaging_select_html( $current_shipment );
1377
+ }
1378
+
1379
  wp_send_json( $response );
1380
  }
1381
  }
packages/woocommerce-germanized-shipments/src/DataStores/Packaging.php ADDED
@@ -0,0 +1,582 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Vendidero\Germanized\Shipments\DataStores;
4
+ use WC_Data_Store_WP;
5
+ use WC_Object_Data_Store_Interface;
6
+ use Exception;
7
+ use WC_Data;
8
+
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ /**
12
+ * Abstract Order Data Store: Stored in CPT.
13
+ *
14
+ * @version 3.0.0
15
+ */
16
+ class Packaging extends WC_Data_Store_WP implements WC_Object_Data_Store_Interface {
17
+
18
+ /**
19
+ * Internal meta type used to store order data.
20
+ *
21
+ * @var string
22
+ */
23
+ protected $meta_type = 'gzd_packaging';
24
+
25
+ protected $must_exist_meta_keys = array();
26
+
27
+ protected $core_props = array(
28
+ 'type',
29
+ 'date_created',
30
+ 'date_created_gmt',
31
+ 'weight',
32
+ 'max_content_weight',
33
+ 'length',
34
+ 'width',
35
+ 'height',
36
+ 'description',
37
+ 'order'
38
+ );
39
+
40
+ /*
41
+ |--------------------------------------------------------------------------
42
+ | CRUD Methods
43
+ |--------------------------------------------------------------------------
44
+ */
45
+
46
+ /**
47
+ * Method to create a new packaging in the database.
48
+ *
49
+ * @param \Vendidero\Germanized\Shipments\Packaging $packaging Packaging object.
50
+ */
51
+ public function create( &$packaging ) {
52
+ global $wpdb;
53
+
54
+ $packaging->set_date_created( current_time( 'timestamp', true ) );
55
+
56
+ $data = array(
57
+ 'packaging_type' => $packaging->get_type(),
58
+ 'packaging_description' => $packaging->get_description(),
59
+ 'packaging_weight' => $packaging->get_weight(),
60
+ 'packaging_max_content_weight' => $packaging->get_max_content_weight(),
61
+ 'packaging_length' => $packaging->get_length(),
62
+ 'packaging_width' => $packaging->get_width(),
63
+ 'packaging_height' => $packaging->get_height(),
64
+ 'packaging_order' => $packaging->get_order(),
65
+ 'packaging_date_created' => gmdate( 'Y-m-d H:i:s', $packaging->get_date_created( 'edit' )->getOffsetTimestamp() ),
66
+ 'packaging_date_created_gmt' => gmdate( 'Y-m-d H:i:s', $packaging->get_date_created( 'edit' )->getTimestamp() ),
67
+ );
68
+
69
+ $wpdb->insert(
70
+ $wpdb->gzd_packaging,
71
+ $data
72
+ );
73
+
74
+ $packaging_id = $wpdb->insert_id;
75
+
76
+ if ( $packaging_id ) {
77
+ $packaging->set_id( $packaging_id );
78
+
79
+ $this->save_packaging_data( $packaging );
80
+
81
+ $packaging->save_meta_data();
82
+ $packaging->apply_changes();
83
+
84
+ $this->clear_caches( $packaging );
85
+
86
+ /**
87
+ * Action that indicates that a new Packaging has been created in the DB.
88
+ *
89
+ * @param integer $packaging_id The packaging id.
90
+ * @param \Vendidero\Germanized\Shipments\Packaging $packaging The packaging instance.
91
+ *
92
+ * @since 3.3.0
93
+ * @package Vendidero/Germanized/Shipments
94
+ */
95
+ do_action( "woocommerce_gzd_new_packaging", $packaging_id, $packaging );
96
+ }
97
+ }
98
+
99
+ /**
100
+ * Method to update a packaging in the database.
101
+ *
102
+ * @param \Vendidero\Germanized\Shipments\Packaging $packaging Packaging object.
103
+ */
104
+ public function update( &$packaging ) {
105
+ global $wpdb;
106
+
107
+ $updated_props = array();
108
+ $core_props = $this->core_props;
109
+ $changed_props = array_keys( $packaging->get_changes() );
110
+ $packaging_data = array();
111
+
112
+ foreach ( $changed_props as $prop ) {
113
+
114
+ if ( ! in_array( $prop, $core_props, true ) ) {
115
+ continue;
116
+ }
117
+
118
+ switch( $prop ) {
119
+ case "date_created":
120
+ if ( is_callable( array( $packaging, 'get_' . $prop ) ) ) {
121
+ $packaging_data[ 'packaging_' . $prop ] = gmdate( 'Y-m-d H:i:s', $packaging->{'get_' . $prop}( 'edit' )->getOffsetTimestamp() );
122
+ $packaging_data[ 'packaging_' . $prop . '_gmt' ] = gmdate( 'Y-m-d H:i:s', $packaging->{'get_' . $prop}( 'edit' )->getTimestamp() );
123
+ }
124
+ break;
125
+ default:
126
+ if ( is_callable( array( $packaging, 'get_' . $prop ) ) ) {
127
+ $packaging_data[ 'packaging_' . $prop ] = $packaging->{'get_' . $prop}( 'edit' );
128
+ }
129
+ break;
130
+ }
131
+ }
132
+
133
+ if ( ! empty( $packaging_data ) ) {
134
+ $wpdb->update(
135
+ $wpdb->gzd_packaging,
136
+ $packaging_data,
137
+ array( 'packaging_id' => $packaging->get_id() )
138
+ );
139
+ }
140
+
141
+ $this->save_packaging_data( $packaging );
142
+
143
+ $packaging->save_meta_data();
144
+ $packaging->apply_changes();
145
+
146
+ $this->clear_caches( $packaging );
147
+
148
+ /**
149
+ * Action that indicates that a Packaging has been updated in the DB.
150
+ *
151
+ * @param integer $packaging_id The packaging id.
152
+ * @param \Vendidero\Germanized\Shipments\Packaging $packaging The packaging instance.
153
+ *
154
+ * @since 3.3.0
155
+ * @package Vendidero/Germanized/Shipments
156
+ */
157
+ do_action( "woocommerce_gzd_packaging_updated", $packaging->get_id(), $packaging );
158
+ }
159
+
160
+ /**
161
+ * Remove a Packaging from the database.
162
+ *
163
+ * @since 3.0.0
164
+ * @param \Vendidero\Germanized\Shipments\Packaging $packaging Packaging object.
165
+ * @param bool $force_delete Unused param.
166
+ */
167
+ public function delete( &$packaging, $force_delete = false ) {
168
+ global $wpdb;
169
+
170
+ $wpdb->delete( $wpdb->gzd_packaging, array( 'packaging_id' => $packaging->get_id() ), array( '%d' ) );
171
+ $wpdb->delete( $wpdb->gzd_packagingmeta, array( 'gzd_packaging_id' => $packaging->get_id() ), array( '%d' ) );
172
+
173
+ $this->clear_caches( $packaging );
174
+
175
+ /**
176
+ * Action that indicates that a Packaging has been deleted from the DB.
177
+ *
178
+ * @param integer $packaging_id The packaging id.
179
+ * @param \Vendidero\Germanized\Shipments\Packaging $packaging The packaging instance.
180
+ *
181
+ * @since 3.3.0
182
+ * @package Vendidero/Germanized/Shipments
183
+ */
184
+ do_action( "woocommerce_gzd_packaging_deleted", $packaging->get_id(), $packaging );
185
+ }
186
+
187
+ /**
188
+ * Read a Packaging from the database.
189
+ *
190
+ * @since 3.3.0
191
+ *
192
+ * @param \Vendidero\Germanized\Shipments\Packaging $packaging Packaging object.
193
+ *
194
+ * @throws Exception Throw exception if invalid packaging.
195
+ */
196
+ public function read( &$packaging ) {
197
+ global $wpdb;
198
+
199
+ $data = $wpdb->get_row(
200
+ $wpdb->prepare(
201
+ "SELECT * FROM {$wpdb->gzd_packaging} WHERE packaging_id = %d LIMIT 1",
202
+ $packaging->get_id()
203
+ )
204
+ );
205
+
206
+ if ( $data ) {
207
+ $packaging->set_props(
208
+ array(
209
+ 'type' => $data->packaging_type,
210
+ 'description' => $data->packaging_description,
211
+ 'weight' => $data->packaging_weight,
212
+ 'max_content_weight' => $data->packaging_max_content_weight,
213
+ 'length' => $data->packaging_length,
214
+ 'width' => $data->packaging_width,
215
+ 'height' => $data->packaging_height,
216
+ 'order' => $data->packaging_order,
217
+ 'date_created' => 0 < $data->packaging_date_created_gmt ? wc_string_to_timestamp( $data->packaging_date_created_gmt ) : null,
218
+ )
219
+ );
220
+
221
+ $this->read_packaging_data( $packaging );
222
+
223
+ $packaging->read_meta_data();
224
+ $packaging->set_object_read( true );
225
+
226
+ /**
227
+ * Action that indicates that a Packaging has been loaded from DB.
228
+ *
229
+ * @param \Vendidero\Germanized\Shipments\Packaging $packaging The Packaging object.
230
+ *
231
+ * @since 3.3.0
232
+ * @package Vendidero/Germanized/Shipments
233
+ */
234
+ do_action( "woocommerce_gzd_packaging_loaded", $packaging );
235
+ } else {
236
+ throw new Exception( _x( 'Invalid packaging.', 'shipments', 'woocommerce-germanized' ) );
237
+ }
238
+ }
239
+
240
+ /**
241
+ * Clear any caches.
242
+ *
243
+ * @param \Vendidero\Germanized\Shipments\Packaging $packaging Packaging object.
244
+ * @since 3.0.0
245
+ */
246
+ protected function clear_caches( &$packaging ) {
247
+ wp_cache_delete( $packaging->get_id(), $this->meta_type . '_meta' );
248
+ wp_cache_delete( 'packaging-list', 'packaging' );
249
+ }
250
+
251
+ /*
252
+ |--------------------------------------------------------------------------
253
+ | Additional Methods
254
+ |--------------------------------------------------------------------------
255
+ */
256
+
257
+ /**
258
+ * Get the packaging type based on ID.
259
+ *
260
+ * @param int $packaging_id Packaging id.
261
+ * @return string
262
+ */
263
+ public function get_packaging_type( $packing_id ) {
264
+ global $wpdb;
265
+
266
+ $type = $wpdb->get_col(
267
+ $wpdb->prepare(
268
+ "SELECT packaging_type FROM {$wpdb->gzd_packaging} WHERE packaging_id = %d LIMIT 1",
269
+ $packing_id
270
+ )
271
+ );
272
+
273
+ return ! empty( $type ) ? $type[0] : false;
274
+ }
275
+
276
+ /**
277
+ * Read extra data associated with the Packaging.
278
+ *
279
+ * @param \Vendidero\Germanized\Shipments\Packaging $packaging Packaging object.
280
+ * @since 3.0.0
281
+ */
282
+ protected function read_packaging_data( &$packaging ) {
283
+ $props = array();
284
+
285
+ foreach( $this->internal_meta_keys as $meta_key ) {
286
+ $props[ substr( $meta_key, 1 ) ] = get_metadata( 'gzd_packaging', $packaging->get_id(), $meta_key, true );
287
+ }
288
+
289
+ $packaging->set_props( $props );
290
+ }
291
+
292
+ /**
293
+ * @param \Vendidero\Germanized\Shipments\Packaging $packaging
294
+ */
295
+ protected function save_packaging_data( &$packaging ) {
296
+ $updated_props = array();
297
+ $meta_key_to_props = array();
298
+
299
+ foreach( $this->internal_meta_keys as $meta_key ) {
300
+ $prop_name = substr( $meta_key, 1 );
301
+
302
+ if ( in_array( $prop_name, $this->core_props ) ) {
303
+ continue;
304
+ }
305
+
306
+ $meta_key_to_props[ $meta_key ] = $prop_name;
307
+ }
308
+
309
+ $props_to_update = $this->get_props_to_update( $packaging, $meta_key_to_props, $this->meta_type );
310
+
311
+ foreach ( $props_to_update as $meta_key => $prop ) {
312
+
313
+ if ( ! is_callable( array( $packaging, "get_$prop" ) ) ) {
314
+ continue;
315
+ }
316
+
317
+ $value = $packaging->{"get_$prop"}( 'edit' );
318
+ $value = is_string( $value ) ? wp_slash( $value ) : $value;
319
+
320
+ $updated = $this->update_or_delete_meta( $packaging, $meta_key, $value );
321
+
322
+ if ( $updated ) {
323
+ $updated_props[] = $prop;
324
+ }
325
+ }
326
+
327
+ /**
328
+ * Action that fires after updating a Packaging's properties.
329
+ *
330
+ * @param \Vendidero\Germanized\Shipments\Packaging $packaging The Packaging object.
331
+ * @param array $changed_props The updated properties.
332
+ *
333
+ * @since 3.3.0
334
+ * @package Vendidero/Germanized/Shipments
335
+ */
336
+ do_action( 'woocommerce_gzd_packaging_object_updated_props', $packaging, $updated_props );
337
+ }
338
+
339
+ /**
340
+ * Update meta data in, or delete it from, the database.
341
+ *
342
+ * Avoids storing meta when it's either an empty string or empty array.
343
+ * Other empty values such as numeric 0 and null should still be stored.
344
+ * Data-stores can force meta to exist using `must_exist_meta_keys`.
345
+ *
346
+ * Note: WordPress `get_metadata` function returns an empty string when meta data does not exist.
347
+ *
348
+ * @param WC_Data $object The WP_Data object (WC_Coupon for coupons, etc).
349
+ * @param string $meta_key Meta key to update.
350
+ * @param mixed $meta_value Value to save.
351
+ *
352
+ * @since 3.6.0 Added to prevent empty meta being stored unless required.
353
+ *
354
+ * @return bool True if updated/deleted.
355
+ */
356
+ protected function update_or_delete_meta( $object, $meta_key, $meta_value ) {
357
+ if ( in_array( $meta_value, array( array(), '' ), true ) && ! in_array( $meta_key, $this->must_exist_meta_keys, true ) ) {
358
+ $updated = delete_metadata( $this->meta_type, $object->get_id(), $meta_key );
359
+ } else {
360
+ $updated = update_metadata( $this->meta_type, $object->get_id(), $meta_key, $meta_value );
361
+ }
362
+
363
+ return (bool) $updated;
364
+ }
365
+
366
+ /**
367
+ * Get valid WP_Query args from a WC_Order_Query's query variables.
368
+ *
369
+ * @since 3.0.6
370
+ * @param array $query_vars query vars from a WC_Order_Query.
371
+ * @return array
372
+ */
373
+ protected function get_wp_query_args( $query_vars ) {
374
+ global $wpdb;
375
+
376
+ $wp_query_args = parent::get_wp_query_args( $query_vars );
377
+
378
+ // Force type to be existent
379
+ if ( isset( $query_vars['type'] ) ) {
380
+ $wp_query_args['type'] = $query_vars['type'];
381
+ }
382
+
383
+ if ( ! isset( $wp_query_args['date_query'] ) ) {
384
+ $wp_query_args['date_query'] = array();
385
+ }
386
+
387
+ if ( ! isset( $wp_query_args['meta_query'] ) ) {
388
+ $wp_query_args['meta_query'] = array();
389
+ }
390
+
391
+ // Allow Woo to treat these props as date query compatible
392
+ $date_queries = array(
393
+ 'date_created',
394
+ );
395
+
396
+ foreach ( $date_queries as $db_key ) {
397
+ if ( isset( $query_vars[ $db_key ] ) && '' !== $query_vars[ $db_key ] ) {
398
+
399
+ // Remove any existing meta queries for the same keys to prevent conflicts.
400
+ $existing_queries = wp_list_pluck( $wp_query_args['meta_query'], 'key', true );
401
+ $meta_query_index = array_search( $db_key, $existing_queries, true );
402
+
403
+ if ( false !== $meta_query_index ) {
404
+ unset( $wp_query_args['meta_query'][ $meta_query_index ] );
405
+ }
406
+
407
+ $date_query_args = $this->parse_date_for_wp_query( $query_vars[ $db_key ], 'post_date', array() );
408
+
409
+ /**
410
+ * Replace date query columns after Woo parsed dates.
411
+ * Include table name because otherwise WP_Date_Query won't accept our custom column.
412
+ */
413
+ if ( isset( $date_query_args['date_query'] ) && ! empty( $date_query_args['date_query'] ) ) {
414
+ $date_query = $date_query_args['date_query'][0];
415
+
416
+ if ( 'post_date' === $date_query['column'] ) {
417
+ $date_query['column'] = $wpdb->gzd_shipments . '.shipment_' . $db_key;
418
+ }
419
+
420
+ $wp_query_args['date_query'][] = $date_query;
421
+ }
422
+ }
423
+ }
424
+
425
+ if ( ! isset( $query_vars['paginate'] ) || ! $query_vars['paginate'] ) {
426
+ $wp_query_args['no_found_rows'] = true;
427
+ }
428
+
429
+ /**
430
+ * Filter to adjust Packaging query arguments after parsing.
431
+ *
432
+ * @param array $wp_query_args Array containing parsed query arguments.
433
+ * @param array $query_vars The original query arguments.
434
+ * @param Packaging $data_store The packaging data store object.
435
+ *
436
+ * @since 3.3.0
437
+ * @package Vendidero/Germanized/Shipments
438
+ */
439
+ return apply_filters( 'woocommerce_gzd_packaging_data_store_get_shipments_query', $wp_query_args, $query_vars, $this );
440
+ }
441
+
442
+ public function get_packaging_list( $args = array() ) {
443
+ global $wpdb;
444
+
445
+ $all_types = array_keys( wc_gzd_get_packaging_types() );
446
+
447
+ $args = wp_parse_args( $args, array(
448
+ 'type' => $all_types
449
+ ) );
450
+
451
+ if ( ! is_array( $args['type'] ) ) {
452
+ $args['type'] = array( $args['type'] );
453
+ }
454
+
455
+ $types = array_filter( wc_clean( $args['type'] ) );
456
+ $types = empty( $types ) ? $all_types : $types;
457
+
458
+ $query = "
459
+ SELECT packaging_id FROM {$wpdb->gzd_packaging}
460
+ WHERE packaging_type IN ( '" . implode( "','", $types ) . "' )
461
+ ORDER BY packaging_order ASC
462
+ ";
463
+
464
+ if ( $all_types === $types ) {
465
+ // Get from cache if available.
466
+ $results = wp_cache_get( 'packaging-list', 'packaging' );
467
+
468
+ if ( false === $results ) {
469
+ $results = $wpdb->get_results( $query );
470
+
471
+ wp_cache_set( 'packaging-list', $results, 'packaging' );
472
+ }
473
+ } else {
474
+ $results = $wpdb->get_results( $query );
475
+ }
476
+
477
+ foreach ( $results as $key => $packaging ) {
478
+ $results[ $key ] = wc_gzd_get_packaging( $packaging );
479
+ }
480
+
481
+ return $results;
482
+ }
483
+
484
+ /**
485
+ * @param \Vendidero\Germanized\Shipments\Shipment $shipment
486
+ * @param string|array $types
487
+ * @param int $limit
488
+ *
489
+ * @return \Vendidero\Germanized\Shipments\Packaging[]
490
+ */
491
+ public function find_available_packaging_for_shipment( $shipment, $types = array(), $limit = -1 ) {
492
+ global $wpdb;
493
+
494
+ $weight = wc_format_decimal( empty( $shipment->get_weight() ) ? 0 : wc_get_weight( $shipment->get_weight(), wc_gzd_get_packaging_weight_unit(), $shipment->get_weight_unit() ), 1 );
495
+ $length = wc_format_decimal( empty( $shipment->get_length() ) ? 0 : wc_get_dimension( $shipment->get_length(), wc_gzd_get_packaging_dimension_unit(), $shipment->get_dimension_unit() ), 1 );
496
+ $width = wc_format_decimal( empty( $shipment->get_width() ) ? 0 : wc_get_dimension( $shipment->get_width(), wc_gzd_get_packaging_dimension_unit(), $shipment->get_dimension_unit() ), 1 );
497
+ $height = wc_format_decimal( empty( $shipment->get_height() ) ? 0 : wc_get_dimension( $shipment->get_height(), wc_gzd_get_packaging_dimension_unit(), $shipment->get_dimension_unit() ), 1 );
498
+
499
+ if ( ! is_array( $types ) ) {
500
+ $types = array( $types );
501
+ }
502
+
503
+ $types = array_filter( wc_clean( $types ) );
504
+ $types = empty( $types ) ? array_keys( wc_gzd_get_packaging_types() ) : $types;
505
+ $threshold = apply_filters( 'woocommerce_gzd_shipment_packaging_match_threshold', 0, $shipment );
506
+
507
+ $query_sql = "SELECT
508
+ packaging_id,
509
+ (packaging_length - %f) AS length_diff,
510
+ (packaging_width - %f) AS width_diff,
511
+ (packaging_height - %f) AS height_diff,
512
+ ((packaging_length - %f) + (packaging_width - %f) + (packaging_height - %f)) AS total_diff
513
+ FROM {$wpdb->gzd_packaging}
514
+ WHERE ( packaging_max_content_weight = 0 OR packaging_max_content_weight >= %f ) AND packaging_type IN ( '" . implode( "','", $types ) . "' )
515
+ HAVING length_diff >= %f AND width_diff >= %f AND height_diff >= %f
516
+ ORDER BY total_diff DESC, packaging_weight ASC, packaging_order ASC
517
+ ";
518
+
519
+ if ( $limit > 0 ) {
520
+ $query_sql .= " LIMIT %d";
521
+ $query = $wpdb->prepare( $query_sql, $length, $width, $height, $length, $width, $height, $weight, $threshold, $threshold, $threshold, $limit );
522
+ } else {
523
+ $query = $wpdb->prepare( $query_sql, $length, $width, $height, $length, $width, $height, $weight, $threshold, $threshold, $threshold );
524
+ }
525
+
526
+ $results = $wpdb->get_results( $query );
527
+ $packaging = array();
528
+
529
+ if ( $results ) {
530
+ foreach( $results as $result ) {
531
+ $packaging[] = wc_gzd_get_packaging( $result->packaging_id );
532
+ }
533
+ }
534
+
535
+ return apply_filters( 'woocommerce_gzd_find_available_packaging_for_shipment', $packaging, $shipment, $types );
536
+ }
537
+
538
+ /**
539
+ * @param \Vendidero\Germanized\Shipments\Shipment $shipment
540
+ * @param string|array $types
541
+ *
542
+ * @return \Vendidero\Germanized\Shipments\Packaging|false
543
+ */
544
+ public function find_best_match_for_shipment( $shipment, $types = array() ) {
545
+ $results = $this->find_available_packaging_for_shipment( $shipment, $types, 1 );
546
+ $packaging = false;
547
+
548
+ if ( ! empty( $results ) ) {
549
+ $packaging = $results[0];
550
+ }
551
+
552
+ return apply_filters( 'woocommerce_gzd_find_best_matching_packaging_for_shipment', $packaging, $shipment, $types );
553
+ }
554
+
555
+ /**
556
+ * Table structure is slightly different between meta types, this function will return what we need to know.
557
+ *
558
+ * @since 3.0.0
559
+ * @return array Array elements: table, object_id_field, meta_id_field
560
+ */
561
+ protected function get_db_info() {
562
+ global $wpdb;
563
+
564
+ $meta_id_field = 'meta_id'; // for some reason users calls this umeta_id so we need to track this as well.
565
+ $table = $wpdb->gzd_packagingmeta;
566
+ $object_id_field = $this->meta_type . '_id';
567
+
568
+ if ( ! empty( $this->object_id_field_for_meta ) ) {
569
+ $object_id_field = $this->object_id_field_for_meta;
570
+ }
571
+
572
+ return array(
573
+ 'table' => $table,
574
+ 'object_id_field' => $object_id_field,
575
+ 'meta_id_field' => $meta_id_field,
576
+ );
577
+ }
578
+
579
+ public function get_query_args( $query_vars ) {
580
+ return $this->get_wp_query_args( $query_vars );
581
+ }
582
+ }
packages/woocommerce-germanized-shipments/src/DataStores/Shipment.php CHANGED
@@ -58,7 +58,8 @@ class Shipment extends WC_Data_Store_WP implements WC_Object_Data_Store_Interfac
58
  'est_delivery_date_gmt',
59
  'status',
60
  'shipping_provider',
61
- 'shipping_method'
 
62
  );
63
 
64
  /*
@@ -86,6 +87,7 @@ class Shipment extends WC_Data_Store_WP implements WC_Object_Data_Store_Interfac
86
  'shipment_tracking_id' => $shipment->get_tracking_id(),
87
  'shipment_status' => $this->get_status( $shipment ),
88
  'shipment_search_index' => $this->get_search_index( $shipment ),
 
89
  'shipment_type' => $shipment->get_type(),
90
  'shipment_shipping_provider' => $shipment->get_shipping_provider(),
91
  'shipment_shipping_method' => $shipment->get_shipping_method(),
@@ -321,6 +323,7 @@ class Shipment extends WC_Data_Store_WP implements WC_Object_Data_Store_Interfac
321
  'tracking_id' => $data->shipment_tracking_id,
322
  'shipping_provider' => $data->shipment_shipping_provider,
323
  'shipping_method' => $data->shipment_shipping_method,
 
324
  'date_created' => 0 < $data->shipment_date_created_gmt ? wc_string_to_timestamp( $data->shipment_date_created_gmt ) : null,
325
  'date_sent' => 0 < $data->shipment_date_sent_gmt ? wc_string_to_timestamp( $data->shipment_date_sent_gmt ) : null,
326
  'est_delivery_date' => 0 < $data->shipment_est_delivery_date_gmt ? wc_string_to_timestamp( $data->shipment_est_delivery_date_gmt ) : null,
58
  'est_delivery_date_gmt',
59
  'status',
60
  'shipping_provider',
61
+ 'shipping_method',
62
+ 'packaging_id'
63
  );
64
 
65
  /*
87
  'shipment_tracking_id' => $shipment->get_tracking_id(),
88
  'shipment_status' => $this->get_status( $shipment ),
89
  'shipment_search_index' => $this->get_search_index( $shipment ),
90
+ 'shipment_packaging_id' => $shipment->get_packaging_id(),
91
  'shipment_type' => $shipment->get_type(),
92
  'shipment_shipping_provider' => $shipment->get_shipping_provider(),
93
  'shipment_shipping_method' => $shipment->get_shipping_method(),
323
  'tracking_id' => $data->shipment_tracking_id,
324
  'shipping_provider' => $data->shipment_shipping_provider,
325
  'shipping_method' => $data->shipment_shipping_method,
326
+ 'packaging_id' => $data->shipment_packaging_id,
327
  'date_created' => 0 < $data->shipment_date_created_gmt ? wc_string_to_timestamp( $data->shipment_date_created_gmt ) : null,
328
  'date_sent' => 0 < $data->shipment_date_sent_gmt ? wc_string_to_timestamp( $data->shipment_date_sent_gmt ) : null,
329
  'est_delivery_date' => 0 < $data->shipment_est_delivery_date_gmt ? wc_string_to_timestamp( $data->shipment_est_delivery_date_gmt ) : null,
packages/woocommerce-germanized-shipments/src/Install.php CHANGED
@@ -13,6 +13,9 @@ class Install {
13
  self::create_upload_dir();
14
  self::create_tables();
15
  self::maybe_create_return_reasons();
 
 
 
16
 
17
  do_action( 'woocommerce_flush_rewrite_rules' );
18
  }
@@ -43,6 +46,71 @@ class Install {
43
  }
44
  }
45
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  private static function create_tables() {
47
  global $wpdb;
48
 
@@ -112,6 +180,7 @@ CREATE TABLE {$wpdb->prefix}woocommerce_gzd_shipments (
112
  shipment_est_delivery_date_gmt datetime default NULL,
113
  shipment_status varchar(20) NOT NULL default 'gzd-draft',
114
  shipment_order_id BIGINT UNSIGNED NOT NULL DEFAULT 0,
 
115
  shipment_parent_id BIGINT UNSIGNED NOT NULL DEFAULT 0,
116
  shipment_country varchar(2) NOT NULL DEFAULT '',
117
  shipment_tracking_id varchar(200) NOT NULL DEFAULT '',
@@ -121,6 +190,7 @@ CREATE TABLE {$wpdb->prefix}woocommerce_gzd_shipments (
121
  shipment_shipping_method varchar(200) NOT NULL DEFAULT '',
122
  PRIMARY KEY (shipment_id),
123
  KEY shipment_order_id (shipment_order_id),
 
124
  KEY shipment_parent_id (shipment_parent_id)
125
  ) $collate;
126
  CREATE TABLE {$wpdb->prefix}woocommerce_gzd_shipmentmeta (
@@ -132,6 +202,29 @@ CREATE TABLE {$wpdb->prefix}woocommerce_gzd_shipmentmeta (
132
  KEY gzd_shipment_id (gzd_shipment_id),
133
  KEY meta_key (meta_key(32))
134
  ) $collate;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
135
  CREATE TABLE {$wpdb->prefix}woocommerce_gzd_shipping_provider (
136
  shipping_provider_id BIGINT UNSIGNED NOT NULL auto_increment,
137
  shipping_provider_activated TINYINT(1) NOT NULL default 1,
13
  self::create_upload_dir();
14
  self::create_tables();
15
  self::maybe_create_return_reasons();
16
+ self::maybe_create_packaging();
17
+
18
+ update_option( 'woocommerce_gzd_shipments_db_version', Package::get_version() );
19
 
20
  do_action( 'woocommerce_flush_rewrite_rules' );
21
  }
46
  }
47
  }
48
 
49
+ private static function get_db_version() {
50
+ return get_option( 'woocommerce_gzd_shipments_db_version', null );
51
+ }
52
+
53
+ private static function maybe_create_packaging() {
54
+ $packaging = wc_gzd_get_packaging_list();
55
+ $db_version = self::get_db_version();
56
+
57
+ if ( empty( $packaging ) && is_null( $db_version ) ) {
58
+ $defaults = array(
59
+ array(
60
+ 'description' => _x( 'Cardboard S', 'shipments', 'woocommerce-germanized' ),
61
+ 'length' => 25,
62
+ 'width' => 17.5,
63
+ 'height' => 10,
64
+ 'weight' => 0.14,
65
+ 'max_content_weight' => 30,
66
+ 'type' => 'cardboard'
67
+ ),
68
+ array(
69
+ 'description' => _x( 'Cardboard M', 'shipments', 'woocommerce-germanized' ),
70
+ 'length' => 37.5,
71
+ 'width' => 30,
72
+ 'height' => 13.5,
73
+ 'weight' => 0.23,
74
+ 'max_content_weight' => 30,
75
+ 'type' => 'cardboard'
76
+ ),
77
+ array(
78
+ 'description' => _x( 'Cardboard L', 'shipments', 'woocommerce-germanized' ),
79
+ 'length' => 45,
80
+ 'width' => 35,
81
+ 'height' => 20,
82
+ 'weight' => 0.3,
83
+ 'max_content_weight' => 30,
84
+ 'type' => 'cardboard'
85
+ ),
86
+ array(
87
+ 'description' => _x( 'Letter C5/6', 'shipments', 'woocommerce-germanized' ),
88
+ 'length' => 22,
89
+ 'width' => 11,
90
+ 'height' => 1,
91
+ 'weight' => 0,
92
+ 'max_content_weight' => 0.05,
93
+ 'type' => 'letter'
94
+ ),
95
+ array(
96
+ 'description' => _x( 'Letter C4', 'shipments', 'woocommerce-germanized' ),
97
+ 'length' => 22.9,
98
+ 'width' => 32.4,
99
+ 'height' => 2,
100
+ 'weight' => 0.01,
101
+ 'max_content_weight' => 1,
102
+ 'type' => 'letter'
103
+ ),
104
+ );
105
+
106
+ foreach( $defaults as $default ) {
107
+ $packaging = new Packaging();
108
+ $packaging->set_props( $default );
109
+ $packaging->save();
110
+ }
111
+ }
112
+ }
113
+
114
  private static function create_tables() {
115
  global $wpdb;
116
 
180
  shipment_est_delivery_date_gmt datetime default NULL,
181
  shipment_status varchar(20) NOT NULL default 'gzd-draft',
182
  shipment_order_id BIGINT UNSIGNED NOT NULL DEFAULT 0,
183
+ shipment_packaging_id BIGINT UNSIGNED NOT NULL DEFAULT 0,
184
  shipment_parent_id BIGINT UNSIGNED NOT NULL DEFAULT 0,
185
  shipment_country varchar(2) NOT NULL DEFAULT '',
186
  shipment_tracking_id varchar(200) NOT NULL DEFAULT '',
190
  shipment_shipping_method varchar(200) NOT NULL DEFAULT '',
191
  PRIMARY KEY (shipment_id),
192
  KEY shipment_order_id (shipment_order_id),
193
+ KEY shipment_packaging_id (shipment_packaging_id),
194
  KEY shipment_parent_id (shipment_parent_id)
195
  ) $collate;
196
  CREATE TABLE {$wpdb->prefix}woocommerce_gzd_shipmentmeta (
202
  KEY gzd_shipment_id (gzd_shipment_id),
203
  KEY meta_key (meta_key(32))
204
  ) $collate;
205
+ CREATE TABLE {$wpdb->prefix}woocommerce_gzd_packaging (
206
+ packaging_id BIGINT UNSIGNED NOT NULL auto_increment,
207
+ packaging_date_created datetime NOT NULL default '0000-00-00 00:00:00',
208
+ packaging_date_created_gmt datetime NOT NULL default '0000-00-00 00:00:00',
209
+ packaging_type varchar(200) NOT NULL DEFAULT '',
210
+ packaging_description TINYTEXT NOT NULL DEFAULT '',
211
+ packaging_weight DECIMAL(6,2) UNSIGNED NOT NULL DEFAULT 0,
212
+ packaging_order BIGINT UNSIGNED NOT NULL DEFAULT 0,
213
+ packaging_max_content_weight DECIMAL(6,2) UNSIGNED NOT NULL DEFAULT 0,
214
+ packaging_length DECIMAL(6,2) UNSIGNED NOT NULL DEFAULT 0,
215
+ packaging_width DECIMAL(6,2) UNSIGNED NOT NULL DEFAULT 0,
216
+ packaging_height DECIMAL(6,2) UNSIGNED NOT NULL DEFAULT 0,
217
+ PRIMARY KEY (packaging_id)
218
+ ) $collate;
219
+ CREATE TABLE {$wpdb->prefix}woocommerce_gzd_packagingmeta (
220
+ meta_id BIGINT UNSIGNED NOT NULL auto_increment,
221
+ gzd_packaging_id BIGINT UNSIGNED NOT NULL,
222
+ meta_key varchar(255) default NULL,
223
+ meta_value longtext NULL,
224
+ PRIMARY KEY (meta_id),
225
+ KEY gzd_packaging_id (gzd_packaging_id),
226
+ KEY meta_key (meta_key(32))
227
+ ) $collate;
228
  CREATE TABLE {$wpdb->prefix}woocommerce_gzd_shipping_provider (
229
  shipping_provider_id BIGINT UNSIGNED NOT NULL auto_increment,
230
  shipping_provider_activated TINYINT(1) NOT NULL default 1,
packages/woocommerce-germanized-shipments/src/Interfaces/ShipmentLabel.php CHANGED
@@ -1,9 +1,6 @@
1
  <?php
2
-
3
  namespace Vendidero\Germanized\Shipments\Interfaces;
4
 
5
- use Vendidero\Germanized\Shipments\PDFMerger;
6
-
7
  /**
8
  * Shipment Label Interface
9
  *
1
  <?php
 
2
  namespace Vendidero\Germanized\Shipments\Interfaces;
3
 
 
 
4
  /**
5
  * Shipment Label Interface
6
  *
packages/woocommerce-germanized-shipments/src/Interfaces/{ShipmenReturnLabel.php → ShipmentReturnLabel.php} RENAMED
@@ -1,9 +1,8 @@
1
  <?php
2
-
3
  namespace Vendidero\Germanized\Shipments\Interfaces;
4
 
5
  /**
6
- * Shipment Return Label Interface
7
  *
8
  * @package Germanized/Shipments/Interfaces
9
  * @version 3.1.0
@@ -15,4 +14,6 @@ if ( ! defined( 'ABSPATH' ) ) {
15
  /**
16
  * ShipmentLabel class.
17
  */
18
- interface ShipmentReturnLabel extends ShipmentLabel {}
 
 
1
  <?php
 
2
  namespace Vendidero\Germanized\Shipments\Interfaces;
3
 
4
  /**
5
+ * Shipment Label Interface
6
  *
7
  * @package Germanized/Shipments/Interfaces
8
  * @version 3.1.0
14
  /**
15
  * ShipmentLabel class.
16
  */
17
+ interface ShipmentReturnLabel extends ShipmentLabel {
18
+
19
+ }
packages/woocommerce-germanized-shipments/src/Order.php CHANGED
@@ -127,6 +127,20 @@ class Order {
127
  return $status;
128
  }
129
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
  public function validate_shipments( $args = array() ) {
131
  $args = wp_parse_args( $args, array(
132
  'save' => true,
127
  return $status;
128
  }
129
 
130
+ public function get_default_return_shipping_provider() {
131
+ $default_provider_instance = wc_gzd_get_order_shipping_provider( $this->get_order() );
132
+ $default_provider = $default_provider_instance ? $default_provider_instance->get_name() : '';
133
+ $shipments = $this->get_simple_shipments();
134
+
135
+ foreach( $shipments as $shipment ) {
136
+ if ( $shipment->has_status( wc_gzd_get_shipment_sent_statuses() ) ) {
137
+ $default_provider = $shipment->get_shipping_provider();
138
+ }
139
+ }
140
+
141
+ return apply_filters( 'woocommerce_gzd_shipment_order_return_default_shipping_provider', $default_provider, $this );
142
+ }
143
+
144
  public function validate_shipments( $args = array() ) {
145
  $args = wp_parse_args( $args, array(
146
  'save' => true,
packages/woocommerce-germanized-shipments/src/Package.php CHANGED
@@ -17,7 +17,7 @@ class Package {
17
  *
18
  * @var string
19
  */
20
- const VERSION = '1.3.3';
21
 
22
  public static $upload_dir_suffix = '';
23
 
@@ -54,6 +54,25 @@ class Package {
54
  add_action( 'init', array( __CLASS__, 'register_shortcodes' ) );
55
 
56
  add_action( 'woocommerce_gzd_wpml_compatibility_loaded', array( __CLASS__, 'load_wpml_compatibility' ), 10 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  }
58
 
59
  public static function add_return_shipment_guest_endpoints( $template, $template_name ) {
@@ -340,6 +359,7 @@ class Package {
340
  }
341
 
342
  include_once self::get_path() . '/includes/wc-gzd-shipment-functions.php';
 
343
  }
344
 
345
  private static function is_frontend_request() {
@@ -376,6 +396,8 @@ class Package {
376
  'gzd_shipment_items' => 'woocommerce_gzd_shipment_items',
377
  'gzd_shipping_provider' => 'woocommerce_gzd_shipping_provider',
378
  'gzd_shipping_providermeta' => 'woocommerce_gzd_shipping_providermeta',
 
 
379
  );
380
 
381
  foreach ( $tables as $name => $table ) {
@@ -386,6 +408,7 @@ class Package {
386
 
387
  public static function register_data_stores( $stores ) {
388
  $stores['shipment'] = 'Vendidero\Germanized\Shipments\DataStores\Shipment';
 
389
  $stores['shipment-item'] = 'Vendidero\Germanized\Shipments\DataStores\ShipmentItem';
390
  $stores['shipping-provider'] = 'Vendidero\Germanized\Shipments\DataStores\ShippingProvider';
391
 
17
  *
18
  * @var string
19
  */
20
+ const VERSION = '1.4.0';
21
 
22
  public static $upload_dir_suffix = '';
23
 
54
  add_action( 'init', array( __CLASS__, 'register_shortcodes' ) );
55
 
56
  add_action( 'woocommerce_gzd_wpml_compatibility_loaded', array( __CLASS__, 'load_wpml_compatibility' ), 10 );
57
+
58
+ /**
59
+ * Sync packaging after items have been synced to make sure
60
+ * content weights are available while choosing the matching packaging.
61
+ */
62
+ add_action( 'woocommerce_gzd_return_shipment_items_synced', array( __CLASS__, 'sync_packaging' ), 10 );
63
+ add_action( 'woocommerce_gzd_shipment_items_synced', array( __CLASS__, 'sync_packaging' ), 10 );
64
+ }
65
+
66
+ /**
67
+ * @param Shipment $shipment
68
+ */
69
+ public static function sync_packaging( $shipment ) {
70
+ $default_packaging = $shipment->get_default_packaging();
71
+ $packaging_id = $shipment->get_packaging_id( 'edit' );
72
+
73
+ if ( empty( $packaging_id ) && $default_packaging ) {
74
+ $shipment->set_packaging_id( $default_packaging->get_id() );
75
+ }
76
  }
77
 
78
  public static function add_return_shipment_guest_endpoints( $template, $template_name ) {
359
  }
360
 
361
  include_once self::get_path() . '/includes/wc-gzd-shipment-functions.php';
362
+ include_once self::get_path() . '/includes/wc-gzd-packaging-functions.php';
363
  }
364
 
365
  private static function is_frontend_request() {
396
  'gzd_shipment_items' => 'woocommerce_gzd_shipment_items',
397
  'gzd_shipping_provider' => 'woocommerce_gzd_shipping_provider',
398
  'gzd_shipping_providermeta' => 'woocommerce_gzd_shipping_providermeta',
399
+ 'gzd_packaging' => 'woocommerce_gzd_packaging',
400
+ 'gzd_packagingmeta' => 'woocommerce_gzd_packagingmeta',
401
  );
402
 
403
  foreach ( $tables as $name => $table ) {
408
 
409
  public static function register_data_stores( $stores ) {
410
  $stores['shipment'] = 'Vendidero\Germanized\Shipments\DataStores\Shipment';
411
+ $stores['packaging'] = 'Vendidero\Germanized\Shipments\DataStores\Packaging';
412
  $stores['shipment-item'] = 'Vendidero\Germanized\Shipments\DataStores\ShipmentItem';
413
  $stores['shipping-provider'] = 'Vendidero\Germanized\Shipments\DataStores\ShippingProvider';
414
 
packages/woocommerce-germanized-shipments/src/Packaging.php ADDED
@@ -0,0 +1,335 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Packaging
4
+ *
5
+ * @package Vendidero/Germanized/Shipments
6
+ * @version 1.0.0
7
+ */
8
+ namespace Vendidero\Germanized\Shipments;
9
+
10
+ use WC_Data;
11
+ use WC_Data_Store;
12
+ use Exception;
13
+ use WC_DateTime;
14
+
15
+ defined( 'ABSPATH' ) || exit;
16
+
17
+ /**
18
+ * Packaging Class.
19
+ */
20
+ class Packaging extends WC_Data {
21
+
22
+ /**
23
+ * This is the name of this object type.
24
+ *
25
+ * @since 1.0.0
26
+ * @var string
27
+ */
28
+ protected $object_type = 'packaging';
29
+
30
+ /**
31
+ * Contains a reference to the data store for this class.
32
+ *
33
+ * @since 1.0.0
34
+ * @var object
35
+ */
36
+ protected $data_store_name = 'packaging';
37
+
38
+ /**
39
+ * Stores meta in cache for future reads.
40
+ * A group must be set to to enable caching.
41
+ *
42
+ * @since 1.0.0
43
+ * @var string
44
+ */
45
+ protected $cache_group = 'packaging';
46
+
47
+ /**
48
+ * Stores packaging data.
49
+ *
50
+ * @var array
51
+ */
52
+ protected $data = array(
53
+ 'date_created' => null,
54
+ 'weight' => 0,
55
+ 'max_content_weight' => 0,
56
+ 'width' => 0,
57
+ 'height' => 0,
58
+ 'length' => 0,
59
+ 'order' => 0,
60
+ 'type' => '',
61
+ 'description' => '',
62
+ );
63
+
64
+ /**
65
+ * Get the packaging if ID is passed, otherwise the packaging is new and empty.
66
+ * This class should NOT be instantiated, but the `wc_gzd_get_packaging` function should be used.
67
+ *
68
+ * @param int|object|Packaging $packaging packaging to read.
69
+ */
70
+ public function __construct( $data = 0 ) {
71
+ parent::__construct( $data );
72
+
73
+ if ( $data instanceof Packaging ) {
74
+ $this->set_id( absint( $data->get_id() ) );
75
+ } elseif ( is_numeric( $data ) ) {
76
+ $this->set_id( $data );
77
+ }
78
+
79
+ $this->data_store = WC_Data_Store::load( $this->data_store_name );
80
+
81
+ // If we have an ID, load the user from the DB.
82
+ if ( $this->get_id() ) {
83
+ try {
84
+ $this->data_store->read( $this );
85
+ } catch ( Exception $e ) {
86
+ $this->set_id( 0 );
87
+ $this->set_object_read( true );
88
+ }
89
+ } else {
90
+ $this->set_object_read( true );
91
+ }
92
+ }
93
+
94
+ /**
95
+ * Merge changes with data and clear.
96
+ * Overrides WC_Data::apply_changes.
97
+ *
98
+ * @since 3.2.0
99
+ */
100
+ public function apply_changes() {
101
+ if ( function_exists( 'array_replace' ) ) {
102
+ $this->data = array_replace( $this->data, $this->changes ); // phpcs:ignore PHPCompatibility.FunctionUse.NewFunctions.array_replaceFound
103
+ } else { // PHP 5.2 compatibility.
104
+ foreach ( $this->changes as $key => $change ) {
105
+ $this->data[ $key ] = $change;
106
+ }
107
+ }
108
+ $this->changes = array();
109
+ }
110
+
111
+ /**
112
+ * Prefix for action and filter hooks on data.
113
+ *
114
+ * @return string
115
+ */
116
+ protected function get_hook_prefix() {
117
+ return $this->get_general_hook_prefix() . 'get_';
118
+ }
119
+
120
+ /**
121
+ * Prefix for action and filter hooks on data.
122
+ *
123
+ * @return string
124
+ */
125
+ protected function get_general_hook_prefix() {
126
+ return "woocommerce_gzd_packaging_";
127
+ }
128
+
129
+ /**
130
+ * Return the date this packaging was created.
131
+ *
132
+ * @param string $context What the value is for. Valid values are 'view' and 'edit'.
133
+ * @return WC_DateTime|null object if the date is set or null if there is no date.
134
+ */
135
+ public function get_date_created( $context = 'view' ) {
136
+ return $this->get_prop( 'date_created', $context );
137
+ }
138
+
139
+ /**
140
+ * Returns the packaging weight in kg.
141
+ *
142
+ * @param string $context What the value is for. Valid values are 'view' and 'edit'.
143
+ * @return string
144
+ */
145
+ public function get_weight( $context = 'view' ) {
146
+ return $this->get_prop( 'weight', $context );
147
+ }
148
+
149
+ /**
150
+ * Returns the packaging max content weight in kg.
151
+ *
152
+ * @param string $context What the value is for. Valid values are 'view' and 'edit'.
153
+ * @return string
154
+ */
155
+ public function get_max_content_weight( $context = 'view' ) {
156
+ return $this->get_prop( 'max_content_weight', $context );
157
+ }
158
+
159
+ /**
160
+ * Returns the packaging order within its list.
161
+ *
162
+ * @param string $context What the value is for. Valid values are 'view' and 'edit'.
163
+ * @return string
164
+ */
165
+ public function get_order( $context = 'view' ) {
166
+ return $this->get_prop( 'order', $context );
167
+ }
168
+
169
+ /**
170
+ * Returns the packaging type e.g. box or letter.
171
+ *
172
+ * @param string $context What the value is for. Valid values are 'view' and 'edit'.
173
+ * @return string
174
+ */
175
+ public function get_type( $context = 'view' ) {
176
+ return $this->get_prop( 'type', $context );
177
+ }
178
+
179
+ /**
180
+ * Returns the packaging description.
181
+ *
182
+ * @param string $context What the value is for. Valid values are 'view' and 'edit'.
183
+ * @return string
184
+ */
185
+ public function get_description( $context = 'view' ) {
186
+ return $this->get_prop( 'description', $context );
187
+ }
188
+
189
+ /**
190
+ * Returns the packaging length in cm.
191
+ *
192
+ * @param string $context What the value is for. Valid values are 'view' and 'edit'.
193
+ * @return string
194
+ */
195
+ public function get_length( $context = 'view' ) {
196
+ return $this->get_prop( 'length', $context );
197
+ }
198
+
199
+ /**
200
+ * Returns the packaging width in cm.
201
+ *
202
+ * @param string $context What the value is for. Valid values are 'view' and 'edit'.
203
+ * @return string
204
+ */
205
+ public function get_width( $context = 'view' ) {
206
+ return $this->get_prop( 'width', $context );
207
+ }
208
+
209
+ /**
210
+ * Returns the packaging height in cm.
211
+ *
212
+ * @param string $context What the value is for. Valid values are 'view' and 'edit'.
213
+ * @return string
214
+ */
215
+ public function get_height( $context = 'view' ) {
216
+ return $this->get_prop( 'height', $context );
217
+ }
218
+
219
+ public function has_dimensions() {
220
+ $width = $this->get_width();
221
+ $length = $this->get_length();
222
+ $height = $this->get_height();
223
+
224
+ return ( ! empty( $width ) && ! empty( $length ) && ! empty( $height ) );
225
+ }
226
+
227
+ /**
228
+ * Returns dimensions.
229
+ *
230
+ * @return string|array
231
+ */
232
+ public function get_dimensions() {
233
+ return array(
234
+ 'length' => wc_format_decimal( $this->get_length(), false, true ),
235
+ 'width' => wc_format_decimal( $this->get_width(), false, true ),
236
+ 'height' => wc_format_decimal( $this->get_height(), false, true ),
237
+ );
238
+ }
239
+
240
+ public function get_formatted_dimensions() {
241
+ return wc_gzd_format_shipment_dimensions( $this->get_dimensions(), wc_gzd_get_packaging_dimension_unit() );
242
+ }
243
+
244
+ /**
245
+ * Set the date this packaging was created.
246
+ *
247
+ * @param string|integer|null $date UTC timestamp, or ISO 8601 DateTime. If the DateTime string has no timezone or offset, WordPress site timezone will be assumed. Null if their is no date.
248
+ */
249
+ public function set_date_created( $date = null ) {
250
+ $this->set_date_prop( 'date_created', $date );
251
+ }
252
+
253
+ /**
254
+ * Set packaging weight in kg.
255
+ *
256
+ * @param string $weight The weight.
257
+ */
258
+ public function set_weight( $weight ) {
259
+ $this->set_prop( 'weight', empty( $weight ) ? 0 : wc_format_decimal( $weight, 2 ) );
260
+ }
261
+
262
+ public function get_title() {
263
+ $description = $this->get_description();
264
+
265
+ return sprintf(
266
+ _x( '%1$s (%2$s, %3$s)', 'shipments-packaging-title', 'woocommerce-germanized' ),
267
+ $description,
268
+ $this->get_formatted_dimensions(),
269
+ wc_gzd_format_shipment_weight( wc_format_decimal( $this->get_weight(), false, true ), wc_gzd_get_packaging_weight_unit() )
270
+ );
271
+ }
272
+
273
+ /**
274
+ * Set packaging order.
275
+ *
276
+ * @param integer $order The order.
277
+ */
278
+ public function set_order( $order ) {
279
+ $this->set_prop( 'order', absint( $order ) );
280
+ }
281
+
282
+ /**
283
+ * Set packaging max content weight in kg.
284
+ *
285
+ * @param string $weight The weight.
286
+ */
287
+ public function set_max_content_weight( $weight ) {
288
+ $this->set_prop( 'max_content_weight', empty( $weight ) ? 0 : wc_format_decimal( $weight, 2 ) );
289
+ }
290
+
291
+ /**
292
+ * Set packaging type
293
+ *
294
+ * @param string $type The type.
295
+ */
296
+ public function set_type( $type ) {
297
+ $this->set_prop( 'type', $type );
298
+ }
299
+
300
+ /**
301
+ * Set packaging description
302
+ *
303
+ * @param string $description The description.
304
+ */
305
+ public function set_description( $description ) {
306
+ $this->set_prop( 'description', $description );
307
+ }
308
+
309
+ /**
310
+ * Set packaging width in cm.
311
+ *
312
+ * @param string $width The width.
313
+ */
314
+ public function set_width( $width ) {
315
+ $this->set_prop( 'width', empty( $width ) ? 0 : wc_format_decimal( $width, 1 ) );
316
+ }
317
+
318
+ /**
319
+ * Set packaging length in cm.
320
+ *
321
+ * @param string $length The length.
322
+ */
323
+ public function set_length( $length ) {
324
+ $this->set_prop( 'length', empty( $length ) ? 0 : wc_format_decimal( $length, 1 ) );
325
+ }
326
+
327
+ /**
328
+ * Set packaging height in cm.
329
+ *
330
+ * @param string $height The height.
331
+ */
332
+ public function set_height( $height ) {
333
+ $this->set_prop( 'height', empty( $height ) ? 0 : wc_format_decimal( $height, 1 ) );
334
+ }
335
+ }
packages/woocommerce-germanized-shipments/src/PackagingFactory.php ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Packaging Factory
4
+ *
5
+ * The packaging factory creates the right packaging objects.
6
+ *
7
+ * @version 1.0.0
8
+ * @package Vendidero/Germanized/Shipments
9
+ */
10
+ namespace Vendidero\Germanized\Shipments;
11
+
12
+ use \Exception;
13
+
14
+ defined( 'ABSPATH' ) || exit;
15
+
16
+ /**
17
+ * Packaging factory class
18
+ */
19
+ class PackagingFactory {
20
+
21
+ /**
22
+ * Get packaging.
23
+ *
24
+ * @param mixed $packaging_id (default: false) Packaging id to get or empty if new.
25
+ * @return Packaging|bool
26
+ */
27
+ public static function get_packaging( $packaging_id = false ) {
28
+ $packaging_id = self::get_packaging_id( $packaging_id );
29
+ $classname = '\Vendidero\Germanized\Shipments\Packaging';
30
+
31
+ /**
32
+ * Filter to adjust the classname used to construct a Packaging.
33
+ *
34
+ * @param string $classname The classname to be used.
35
+ * @param integer $packaging_id The packaging id.
36
+ *
37
+ * @since 3.3.0
38
+ * @package Vendidero/Germanized/Shipments
39
+ */
40
+ $classname = apply_filters( 'woocommerce_gzd_packaging_class', $classname, $packaging_id );
41
+
42
+ if ( ! class_exists( $classname ) ) {
43
+ return false;
44
+ }
45
+
46
+ try {
47
+ return new $classname( $packaging_id );
48
+ } catch ( Exception $e ) {
49
+ wc_caught_exception( $e, __FUNCTION__, func_get_args() );
50
+ return false;
51
+ }
52
+ }
53
+
54
+ public static function get_packaging_id( $packaging ) {
55
+ if ( is_numeric( $packaging ) ) {
56
+ return $packaging;
57
+ } elseif ( $packaging instanceof Packaging ) {
58
+ return $packaging->get_id();
59
+ } elseif ( ! empty( $packaging->packaging_id ) ) {
60
+ return $packaging->packaging_id;
61
+ } else {
62
+ return false;
63
+ }
64
+ }
65
+ }
packages/woocommerce-germanized-shipments/src/ReturnShipment.php CHANGED
@@ -426,8 +426,7 @@ class ReturnShipment extends Shipment {
426
  /**
427
  * Make sure that manually adjusted providers are not overridden by syncing.
428
  */
429
- $default_provider_instance = wc_gzd_get_order_shipping_provider( $order );
430
- $default_provider = $default_provider_instance ? $default_provider_instance->get_name() : '';
431
  $provider = $this->get_shipping_provider( 'edit' );
432
 
433
  $args = wp_parse_args( $args, array(
426
  /**
427
  * Make sure that manually adjusted providers are not overridden by syncing.
428
  */
429
+ $default_provider = $order_shipment->get_default_return_shipping_provider();
 
430
  $provider = $this->get_shipping_provider( 'edit' );
431
 
432
  $args = wp_parse_args( $args, array(
packages/woocommerce-germanized-shipments/src/Shipment.php CHANGED
@@ -97,6 +97,13 @@ abstract class Shipment extends WC_Data {
97
  */
98
  protected $heights = null;
99
 
 
 
 
 
 
 
 
100
  /**
101
  * Stores shipment data.
102
  *
@@ -120,6 +127,7 @@ abstract class Shipment extends WC_Data {
120
  'total' => 0,
121
  'additional_total' => 0,
122
  'est_delivery_date' => null,
 
123
  );
124
 
125
  /**
@@ -314,6 +322,16 @@ abstract class Shipment extends WC_Data {
314
  return $weight;
315
  }
316
 
 
 
 
 
 
 
 
 
 
 
317
  /**
318
  * Returns the shipment weight unit.
319
  *
@@ -475,7 +493,7 @@ abstract class Shipment extends WC_Data {
475
  $this->heights = array();
476
 
477
  foreach( $this->get_items() as $item ) {
478
- $this->heights[ $item->get_id() ] = $item->get_height() === '' ? 0 : $item->get_height();
479
  }
480
 
481
  if ( empty( $this->heights ) ) {
@@ -519,7 +537,7 @@ abstract class Shipment extends WC_Data {
519
  * @return float
520
  */
521
  public function get_content_height() {
522
- return wc_format_decimal( max( $this->get_item_heights() ) );
523
  }
524
 
525
  /**
@@ -1159,7 +1177,7 @@ abstract class Shipment extends WC_Data {
1159
  }
1160
 
1161
  /**
1162
- * Set shipment width in cm.
1163
  *
1164
  * @param string $width The width.
1165
  */
@@ -1176,7 +1194,7 @@ abstract class Shipment extends WC_Data {
1176
  }
1177
 
1178
  /**
1179
- * Set shipment length in cm.
1180
  *
1181
  * @param string $length The length.
1182
  */
@@ -1185,7 +1203,7 @@ abstract class Shipment extends WC_Data {
1185
  }
1186
 
1187
  /**
1188
- * Set shipment height in cm.
1189
  *
1190
  * @param string $height The height.
1191
  */
@@ -1280,6 +1298,17 @@ abstract class Shipment extends WC_Data {
1280
  $this->set_prop( 'shipping_provider', wc_gzd_get_shipping_provider_slug( $provider ) );
1281
  }
1282
 
 
 
 
 
 
 
 
 
 
 
 
1283
  /**
1284
  * Return an array of items within this shipment.
1285
  *
@@ -1564,6 +1593,45 @@ abstract class Shipment extends WC_Data {
1564
  return false;
1565
  }
1566
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1567
  /**
1568
  * Tries to fetch the order for the current shipment.
1569
  *
97
  */
98
  protected $heights = null;
99
 
100
+ /**
101
+ * Packaging
102
+ *
103
+ * @var null|Packaging
104
+ */
105
+ protected $packaging = null;
106
+
107
  /**
108
  * Stores shipment data.
109
  *
127
  'total' => 0,
128
  'additional_total' => 0,
129
  'est_delivery_date' => null,
130
+ 'packaging_id' => 0,
131
  );
132
 
133
  /**
322
  return $weight;
323
  }
324
 
325
+ public function get_total_weight() {
326
+ $weight = $this->get_weight();
327
+
328
+ if ( $packaging = $this->get_packaging() ) {
329
+ $weight += $packaging->get_weight();
330
+ }
331
+
332
+ return apply_filters( "{$this->get_hook_prefix()}total_weight", $weight, $this );
333
+ }
334
+
335
  /**
336
  * Returns the shipment weight unit.
337
  *
493
  $this->heights = array();
494
 
495
  foreach( $this->get_items() as $item ) {
496
+ $this->heights[ $item->get_id() ] = ( $item->get_height() === '' ? 0 : $item->get_height() ) * $item->get_quantity();
497
  }
498
 
499
  if ( empty( $this->heights ) ) {
537
  * @return float
538
  */
539
  public function get_content_height() {
540
+ return wc_format_decimal( array_sum( $this->get_item_heights() ) );
541
  }
542
 
543
  /**
1177
  }
1178
 
1179
  /**
1180
+ * Set shipment width.
1181
  *
1182
  * @param string $width The width.
1183
  */
1194
  }
1195
 
1196
  /**
1197
+ * Set shipment length.
1198
  *
1199
  * @param string $length The length.
1200
  */
1203
  }
1204
 
1205
  /**
1206
+ * Set shipment height.
1207
  *
1208
  * @param string $height The height.
1209
  */
1298
  $this->set_prop( 'shipping_provider', wc_gzd_get_shipping_provider_slug( $provider ) );
1299
  }
1300
 
1301
+ /**
1302
+ * Set packaging id.
1303
+ *
1304
+ * @param integer $packaging_id The packaging id.
1305
+ */
1306
+ public function set_packaging_id( $packaging_id ) {
1307
+ $this->set_prop( 'packaging_id', absint( $packaging_id ) );
1308
+
1309
+ $this->packaging = null;
1310
+ }
1311
+
1312
  /**
1313
  * Return an array of items within this shipment.
1314
  *
1593
  return false;
1594
  }
1595
 
1596
+ /**
1597
+ * Returns the packaging id belonging to the shipment.
1598
+ *
1599
+ * @param string $context What the value is for. Valid values are 'view' and 'edit'.
1600
+ * @return integer
1601
+ */
1602
+ public function get_packaging_id( $context = 'view' ) {
1603
+ return $this->get_prop( 'packaging_id', $context );
1604
+ }
1605
+
1606
+ public function get_packaging() {
1607
+ if ( is_null( $this->packaging ) && $this->get_packaging_id() > 0 ) {
1608
+ $this->packaging = wc_gzd_get_packaging( $this->get_packaging_id() );
1609
+ }
1610
+
1611
+ return $this->packaging;
1612
+ }
1613
+
1614
+ public function get_available_packaging() {
1615
+ $packaging_store = \WC_Data_Store::load( 'packaging' );
1616
+
1617
+ return apply_filters( "{$this->get_hook_prefix()}available_packaging", $packaging_store->find_available_packaging_for_shipment( $this ), $this );
1618
+ }
1619
+
1620
+ public function get_default_packaging() {
1621
+ $packaging_store = \WC_Data_Store::load( 'packaging' );
1622
+ $default_packaging = $packaging_store->find_best_match_for_shipment( $this );
1623
+
1624
+ if ( ! $default_packaging ) {
1625
+ $setting = Package::get_setting( 'default_packaging' );
1626
+
1627
+ if ( ! empty( $setting ) && wc_gzd_get_packaging( $setting ) ) {
1628
+ $default_packaging = wc_gzd_get_packaging( $setting );
1629
+ }
1630
+ }
1631
+
1632
+ return apply_filters( "{$this->get_hook_prefix()}default_packaging_id", $default_packaging, $this );
1633
+ }
1634
+
1635
  /**
1636
  * Tries to fetch the order for the current shipment.
1637
  *
packages/woocommerce-germanized-shipments/src/ShippingProvider.php CHANGED
@@ -115,6 +115,10 @@ class ShippingProvider extends WC_Data {
115
  return false;
116
  }
117
 
 
 
 
 
118
  /**
119
  * Some providers (e.g. DHL) create return labels automatically and the return
120
  * address is chosen dynamically depending on the country. For that reason the return address
@@ -543,7 +547,7 @@ class ShippingProvider extends WC_Data {
543
  array( 'title' => '', 'type' => 'title', 'id' => 'shipping_provider_options', 'desc' => $desc ),
544
  );
545
 
546
- $supports_returns = true;
547
 
548
  if ( $this->is_manual_integration() ) {
549
  $settings = array_merge( $settings, array(
@@ -567,7 +571,7 @@ class ShippingProvider extends WC_Data {
567
  ),
568
  ) );
569
  } else {
570
- $supports_returns = $this->supports_labels( 'return' );
571
  }
572
 
573
  $settings = array_merge( $settings, array(
@@ -594,7 +598,7 @@ class ShippingProvider extends WC_Data {
594
  )
595
  ) );
596
 
597
- if ( $supports_returns ) {
598
  $settings = array_merge( $settings, array(
599
  array(
600
  'title' => _x( 'Customer returns', 'shipments', 'woocommerce-germanized' ),
115
  return false;
116
  }
117
 
118
+ public function supports_customer_return_requests() {
119
+ return false;
120
+ }
121
+
122
  /**
123
  * Some providers (e.g. DHL) create return labels automatically and the return
124
  * address is chosen dynamically depending on the country. For that reason the return address
547
  array( 'title' => '', 'type' => 'title', 'id' => 'shipping_provider_options', 'desc' => $desc ),
548
  );
549
 
550
+ $supports_customer_returns = true;
551
 
552
  if ( $this->is_manual_integration() ) {
553
  $settings = array_merge( $settings, array(
571
  ),
572
  ) );
573
  } else {
574
+ $supports_customer_returns = $this->supports_customer_return_requests();
575
  }
576
 
577
  $settings = array_merge( $settings, array(
598
  )
599
  ) );
600
 
601
+ if ( $supports_customer_returns ) {
602
  $settings = array_merge( $settings, array(
603
  array(
604
  'title' => _x( 'Customer returns', 'shipments', 'woocommerce-germanized' ),
packages/woocommerce-germanized-shipments/src/SimpleShipment.php CHANGED
@@ -134,13 +134,25 @@ class SimpleShipment extends Shipment {
134
  $default_provider_instance = wc_gzd_get_order_shipping_provider( $order );
135
  $default_provider = $default_provider_instance ? $default_provider_instance->get_name() : '';
136
  $provider = $this->get_shipping_provider( 'edit' );
 
 
 
 
 
 
 
 
 
 
 
137
 
138
  $args = wp_parse_args( $args, array(
139
  'order_id' => $order->get_id(),
140
  'country' => $order->get_shipping_country(),
141
  'shipping_method' => wc_gzd_get_shipment_order_shipping_method_id( $order ),
142
  'shipping_provider' => ( ! empty( $provider ) ) ? $provider : $default_provider,
143
- 'address' => array_merge( $order->get_address( 'shipping' ), array( 'email' => $order->get_billing_email(), 'phone' => $order->get_billing_phone() ) ),
 
144
  'weight' => $this->get_weight( 'edit' ),
145
  'length' => $this->get_length( 'edit' ),
146
  'width' => $this->get_width( 'edit' ),
134
  $default_provider_instance = wc_gzd_get_order_shipping_provider( $order );
135
  $default_provider = $default_provider_instance ? $default_provider_instance->get_name() : '';
136
  $provider = $this->get_shipping_provider( 'edit' );
137
+ $address_data = array_merge( $order->get_address( 'shipping' ), array( 'email' => $order->get_billing_email(), 'phone' => $order->get_billing_phone() ) );
138
+
139
+ /**
140
+ * Fix to make sure that we are not syncing formatted customer titles (e.g. Herr)
141
+ * which prevents shipment addresses from being translated.
142
+ */
143
+ if ( isset( $address_data['title'] ) && ! empty( $address_data['title'] ) ) {
144
+ if ( $title = $order->get_meta( "_shipping_title", true ) ) {
145
+ $address_data['title'] = $title;
146
+ }
147
+ }
148
 
149
  $args = wp_parse_args( $args, array(
150
  'order_id' => $order->get_id(),
151
  'country' => $order->get_shipping_country(),
152
  'shipping_method' => wc_gzd_get_shipment_order_shipping_method_id( $order ),
153
  'shipping_provider' => ( ! empty( $provider ) ) ? $provider : $default_provider,
154
+ 'packaging_id' => $this->get_packaging_id( 'edit' ),
155
+ 'address' => $address_data,
156
  'weight' => $this->get_weight( 'edit' ),
157
  'length' => $this->get_length( 'edit' ),
158
  'width' => $this->get_width( 'edit' ),
packages/woocommerce-germanized-shipments/woocommerce-germanized-shipments.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: The Germanized Shipments integration, installed as a feature plugin for development and testing purposes.
6
  * Author: vendidero
7
  * Author URI: https://vendidero.de
8
- * Version: 1.3.3
9
  * Requires PHP: 5.6
10
  * License: GPLv3
11
  *
5
  * Description: The Germanized Shipments integration, installed as a feature plugin for development and testing purposes.
6
  * Author: vendidero
7
  * Author URI: https://vendidero.de
8
+ * Version: 1.4.0
9
  * Requires PHP: 5.6
10
  * License: GPLv3
11
  *
packages/woocommerce-trusted-shops/src/Package.php CHANGED
@@ -16,7 +16,7 @@ class Package {
16
  *
17
  * @var string
18
  */
19
- const VERSION = '4.0.8';
20
 
21
  /**
22
  * Init the package - load the REST API Server class.
16
  *
17
  * @var string
18
  */
19
+ const VERSION = '4.0.9';
20
 
21
  /**
22
  * Init the package - load the REST API Server class.
packages/woocommerce-trusted-shops/woocommerce-trusted-shops.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Trustbadge Reviews for WooCommerce
4
  * Plugin URI: http://www.trustedshops.co.uk/
5
  * Description: Adds Seller and Product Reviews or Trusted Shops Integration to your WooCommerce Shop.
6
- * Version: 4.0.8
7
  * Author: vendidero
8
  * Author URI: http://vendidero.de
9
  * Requires at least: 4.9
3
  * Plugin Name: Trustbadge Reviews for WooCommerce
4
  * Plugin URI: http://www.trustedshops.co.uk/
5
  * Description: Adds Seller and Product Reviews or Trusted Shops Integration to your WooCommerce Shop.
6
+ * Version: 4.0.9
7
  * Author: vendidero
8
  * Author URI: http://vendidero.de
9
  * Requires at least: 4.9
readme.txt CHANGED
@@ -4,8 +4,8 @@ Tags: woocommerce, woocommerce german, woocommerce DE, woocommerce germany, wooc
4
  Requires at least: 5.4
5
  Tested up to: 5.6
6
  WC requires at least: 3.9
7
- WC tested up to: 4.6
8
- Stable tag: 3.2.3
9
  Requires PHP: 5.6
10
  License: GPLv3
11
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
@@ -33,7 +33,7 @@ Furthermore we customized the WooCommerce checkout to make your store meet the b
33
  * *Tax Calculation for Shipping Costs and Fees* - Enable split tax calculation based on your WooCommerce cart taxes.
34
  * *Legal pages in Email Templates* - Attach legal pages content to certain WooCommerce e-mail templates.
35
  * *Trusted Shops Integration* - Integrate your Trusted Shops Products within your WooCommerce store
36
- * *DHL Integration* - Generate labels for shipments and returns right from your backend. Offer Wunschpaket services to your customers.
37
  * *Payment Gateway: SEPA direct debit* - Receive payments via direct debit. We've added a XML export to transfer payments to your bank.
38
  * *Payment Gateway: Pay by Invoice* - Allow certain customers to pay by invoice. Best integration with our PDF invoices feature (Pro).
39
  * *Online Revocation Form* - Allow customers to submit revocations by filling out a form on your revocation page.
@@ -73,9 +73,9 @@ You can then manage your shipments and it's statuses independently from your ord
73
  Managing returns can be a time-consuming challenge. By using Germanized you might let your customers create return requests through their customer panel. All you need to do is confirm the request through your return dashboard and your customers will receive an email containing further steps on how to return their product(s).
74
  In case you are using our DHL integration you might as well (automatically) create a label to the return which will be attached to the email sent to the customer.
75
 
76
- = DHL Integration =
77
- With the help of our built-in DHL integration you can easily create labels for your shipments and add tracking information to the notification emails. Furthermore you can offer Wunschpaket Services to your customers including shipping to Packstation or choosing a preferred location, day and/or time within the checkout.
78
- You can even let your shipments and labels be generated automatically by Germanized to avoid further manual work. [Learn more](https://vendidero.de/dokumentation/woocommerce-germanized/sendungen-dhl "DHL for WooCommerce") about how our DHL integration works.
79
 
80
  = Pro: Premium Support =
81
  Customers of Germanized for WooCommerce Pro enjoy our high-quality support via tickets. Nevertheless we also seek to offer a good plugin support via our WordPress support forum.
@@ -150,10 +150,6 @@ By adjusting parameter width=55 (55 means 55px width/height) you may optionally
150
  `[trusted_shops_rich_snippets]`
151
  If you are using Trusted Shop's review functionality, you may insert a Google Rich Snippet to show your current shop's rating.
152
 
153
- `[ekomi_badge]`
154
- Inserts your eKomi badge as image.
155
- By adjusting width=55 (55 means 55px width/height) you may optionally set badge's width.
156
-
157
  = Updating Germanized for WooCommerce =
158
 
159
  Before updating WooCommerce you should definitely check whether Germanized does already support the newest version.
@@ -190,6 +186,17 @@ Bug reports may be filed via our [GitHub repository](https://github.com/vendider
190
  6. Edit pdf documents (Pro)
191
 
192
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
193
  = 3.2.3 =
194
  * Feature: WP 5.6 compatibility
195
  * Improvement: Report checkboxes with hidden inputs as checked
4
  Requires at least: 5.4
5
  Tested up to: 5.6
6
  WC requires at least: 3.9
7
+ WC tested up to: 4.7
8
+ Stable tag: 3.3.0
9
  Requires PHP: 5.6
10
  License: GPLv3
11
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
33
  * *Tax Calculation for Shipping Costs and Fees* - Enable split tax calculation based on your WooCommerce cart taxes.
34
  * *Legal pages in Email Templates* - Attach legal pages content to certain WooCommerce e-mail templates.
35
  * *Trusted Shops Integration* - Integrate your Trusted Shops Products within your WooCommerce store
36
+ * *Post & DHL Integration* - Generate labels for shipments and returns right from your backend. Offer Wunschpaket services to your customers.
37
  * *Payment Gateway: SEPA direct debit* - Receive payments via direct debit. We've added a XML export to transfer payments to your bank.
38
  * *Payment Gateway: Pay by Invoice* - Allow certain customers to pay by invoice. Best integration with our PDF invoices feature (Pro).
39
  * *Online Revocation Form* - Allow customers to submit revocations by filling out a form on your revocation page.
73
  Managing returns can be a time-consuming challenge. By using Germanized you might let your customers create return requests through their customer panel. All you need to do is confirm the request through your return dashboard and your customers will receive an email containing further steps on how to return their product(s).
74
  In case you are using our DHL integration you might as well (automatically) create a label to the return which will be attached to the email sent to the customer.
75
 
76
+ = Post & DHL Integration =
77
+ With the help of our built-in Post & DHL integration you can easily create labels for your shipments and add tracking information to the notification emails. Furthermore you can offer DHL Wunschpaket Services to your customers including shipping to Packstation or choosing a preferred location, day and/or time within the checkout.
78
+ You can even let your shipments and labels be generated automatically by Germanized to avoid further manual work. [Learn more](https://vendidero.de/dokumentation/woocommerce-germanized/post-dhl "Post & DHL for WooCommerce") about how our Post & DHL integration works.
79
 
80
  = Pro: Premium Support =
81
  Customers of Germanized for WooCommerce Pro enjoy our high-quality support via tickets. Nevertheless we also seek to offer a good plugin support via our WordPress support forum.
150
  `[trusted_shops_rich_snippets]`
151
  If you are using Trusted Shop's review functionality, you may insert a Google Rich Snippet to show your current shop's rating.
152
 
 
 
 
 
153
  = Updating Germanized for WooCommerce =
154
 
155
  Before updating WooCommerce you should definitely check whether Germanized does already support the newest version.
186
  6. Edit pdf documents (Pro)
187
 
188
  == Changelog ==
189
+ = 3.3.0 =
190
+ * Feature: Deutsche Post Internetmarke integration
191
+ * Feature: Packaging options for shipments
192
+ * Feature: Recalculate unit price via AJAX in case price HTML changes
193
+ * Improvement: Added gender neutral title option and empty option
194
+ * Improvement: Net price voucher tax calculation
195
+ * Improvement: Explicitly exclude admins from possible account cleanup
196
+ * Improvement: Make last parameter optional for BCC headers to prevent third party problems
197
+ * Improvement: Add to cart variation JS price detecting
198
+ * Fix: Use order total - refund total for SEPA Export
199
+
200
  = 3.2.3 =
201
  * Feature: WP 5.6 compatibility
202
  * Improvement: Report checkboxes with hidden inputs as checked
templates/global/complaints.php CHANGED
@@ -12,12 +12,14 @@
12
  *
13
  * @see https://github.com/vendidero/woocommerce-germanized/wiki/Overriding-Germanized-Templates
14
  * @package Germanized/Templates
15
- * @version 1.0.0
16
  */
17
  if ( ! defined( 'ABSPATH' ) ) {
18
  exit;
19
  } // Exit if accessed directly ?>
20
 
 
21
  <h3><?php _e( 'Alternative Dispute Resolution in accordance with Art. 14 (1) ODR-VO and § 36 VSBG:', 'woocommerce-germanized' ); ?></h3>
 
22
 
23
  <?php echo $dispute_text; ?>
12
  *
13
  * @see https://github.com/vendidero/woocommerce-germanized/wiki/Overriding-Germanized-Templates
14
  * @package Germanized/Templates
15
+ * @version 1.0.1
16
  */
17
  if ( ! defined( 'ABSPATH' ) ) {
18
  exit;
19
  } // Exit if accessed directly ?>
20
 
21
+ <?php if ( ! $text_only ) : ?>
22
  <h3><?php _e( 'Alternative Dispute Resolution in accordance with Art. 14 (1) ODR-VO and § 36 VSBG:', 'woocommerce-germanized' ); ?></h3>
23
+ <?php endif; ?>
24
 
25
  <?php echo $dispute_text; ?>
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit5295187f8f3726c599ad5e80f34383a2::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInitdc772b88b4d1512e782645ce96adba93::getLoader();
vendor/autoload_packages.php CHANGED
@@ -1,129 +1,14 @@
1
  <?php
2
  /**
3
- * This file `autoload_packages.php`was generated by automattic/jetpack-autoloader.
4
  *
5
- * From your plugin include this file with:
6
- * require_once . plugin_dir_path( __FILE__ ) . '/vendor/autoload_packages.php';
7
- *
8
- * @package Automattic\Jetpack\Autoloader
9
  */
10
 
11
- // phpcs:disable PHPCompatibility.LanguageConstructs.NewLanguageConstructs.t_ns_separatorFound
12
- // phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_namespaceFound
13
- // phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_ns_cFound
14
-
15
- namespace Automattic\Jetpack\Autoloader;
16
-
17
- if ( ! function_exists( __NAMESPACE__ . '\enqueue_package_class' ) ) {
18
- global $jetpack_packages_classes;
19
-
20
- if ( ! is_array( $jetpack_packages_classes ) ) {
21
- $jetpack_packages_classes = array();
22
- }
23
- /**
24
- * Adds the version of a package to the $jetpack_packages global array so that
25
- * the autoloader is able to find it.
26
- *
27
- * @param string $class_name Name of the class that you want to autoload.
28
- * @param string $version Version of the class.
29
- * @param string $path Absolute path to the class so that we can load it.
30
- */
31
- function enqueue_package_class( $class_name, $version, $path ) {
32
- global $jetpack_packages_classes;
33
-
34
- if ( ! isset( $jetpack_packages_classes[ $class_name ] ) ) {
35
- $jetpack_packages_classes[ $class_name ] = array(
36
- 'version' => $version,
37
- 'path' => $path,
38
- );
39
- }
40
- // If we have a @dev version set always use that one!
41
- if ( 'dev-' === substr( $jetpack_packages_classes[ $class_name ]['version'], 0, 4 ) ) {
42
- return;
43
- }
44
-
45
- // Always favour the @dev version. Since that version is the same as bleeding edge.
46
- // We need to make sure that we don't do this in production!
47
- if ( 'dev-' === substr( $version, 0, 4 ) ) {
48
- $jetpack_packages_classes[ $class_name ] = array(
49
- 'version' => $version,
50
- 'path' => $path,
51
- );
52
 
53
- return;
54
- }
55
- // Set the latest version!
56
- if ( version_compare( $jetpack_packages_classes[ $class_name ]['version'], $version, '<' ) ) {
57
- $jetpack_packages_classes[ $class_name ] = array(
58
- 'version' => $version,
59
- 'path' => $path,
60
- );
61
- }
62
- }
63
- }
64
 
65
- if ( ! function_exists( __NAMESPACE__ . '\autoloader' ) ) {
66
- /**
67
- * Used for autoloading jetpack packages.
68
- *
69
- * @param string $class_name Class Name to load.
70
- */
71
- function autoloader( $class_name ) {
72
- global $jetpack_packages_classes;
73
 
74
- if ( isset( $jetpack_packages_classes[ $class_name ] ) ) {
75
- if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
76
- // TODO ideally we shouldn't skip any of these, see: https://github.com/Automattic/jetpack/pull/12646.
77
- $ignore = in_array(
78
- $class_name,
79
- array(
80
- 'Automattic\Jetpack\JITM',
81
- 'Automattic\Jetpack\Connection\Manager',
82
- 'Automattic\Jetpack\Connection\Manager_Interface',
83
- 'Automattic\Jetpack\Connection\XMLRPC_Connector',
84
- 'Jetpack_Options',
85
- 'Jetpack_Signature',
86
- 'Automattic\Jetpack\Sync\Main',
87
- 'Automattic\Jetpack\Constants',
88
- 'Automattic\Jetpack\Tracking',
89
- 'Automattic\Jetpack\Plugin\Tracking',
90
- ),
91
- true
92
- );
93
- if ( ! $ignore && function_exists( 'did_action' ) && ! did_action( 'plugins_loaded' ) ) {
94
- _doing_it_wrong(
95
- esc_html( $class_name ),
96
- sprintf(
97
- /* translators: %s Name of a PHP Class */
98
- esc_html__( 'Not all plugins have loaded yet but we requested the class %s', 'jetpack' ),
99
- // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
100
- $class_name
101
- ),
102
- esc_html( $jetpack_packages_classes[ $class_name ]['version'] )
103
- );
104
- }
105
- }
106
-
107
- if ( file_exists( $jetpack_packages_classes[ $class_name ]['path'] ) ) {
108
- require_once $jetpack_packages_classes[ $class_name ]['path'];
109
-
110
- return true;
111
- }
112
- }
113
-
114
- return false;
115
- }
116
-
117
- // Add the jetpack autoloader.
118
- spl_autoload_register( __NAMESPACE__ . '\autoloader' );
119
- }
120
- /**
121
- * Prepare all the classes for autoloading.
122
- */
123
- function enqueue_packages_cf3f064d48993a0a294f78d1279130cb() {
124
- $class_map = require_once dirname( __FILE__ ) . '/composer/autoload_classmap_package.php';
125
- foreach ( $class_map as $class_name => $class_info ) {
126
- enqueue_package_class( $class_name, $class_info['version'], $class_info['path'] );
127
- }
128
- }
129
- enqueue_packages_cf3f064d48993a0a294f78d1279130cb();
1
  <?php
2
  /**
3
+ * This file was automatically generated by automattic/jetpack-autoloader.
4
  *
5
+ * @package automattic/jetpack-autoloader
 
 
 
6
  */
7
 
8
+ namespace Automattic\Jetpack\Autoloader\jpdc772b88b4d1512e782645ce96adba93;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
10
+ // phpcs:ignore
 
 
 
 
 
 
 
 
 
 
11
 
12
+ require_once trailingslashit( __DIR__ ) . 'jetpack-autoloader/autoload_functions.php';
 
 
 
 
 
 
 
13
 
14
+ set_up_autoloader();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/automattic/jetpack-autoloader/src/AutoloadGenerator.php CHANGED
@@ -1,8 +1,8 @@
1
- <?php
2
  /**
3
  * Autoloader Generator.
4
  *
5
- * @package Automattic\Jetpack\Autoloader
6
  */
7
 
8
  // phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_useFound
@@ -11,33 +11,48 @@
11
  // phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_namespaceFound
12
  // phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_dirFound
13
  // phpcs:disable WordPress.Files.FileName.InvalidClassFileName
14
- // phpcs:disable WordPress.Files.FileName.NotHyphenatedLowercase
15
- // phpcs:disable WordPress.Files.FileName.InvalidClassFileName
16
  // phpcs:disable WordPress.PHP.DevelopmentFunctions.error_log_var_export
17
  // phpcs:disable WordPress.WP.AlternativeFunctions.file_system_read_file_put_contents
18
  // phpcs:disable WordPress.WP.AlternativeFunctions.file_system_read_fopen
19
  // phpcs:disable WordPress.WP.AlternativeFunctions.file_system_read_fwrite
 
20
  // phpcs:disable WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
21
  // phpcs:disable WordPress.NamingConventions.ValidVariableName.InterpolatedVariableNotSnakeCase
22
  // phpcs:disable WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase
23
  // phpcs:disable WordPress.NamingConventions.ValidVariableName.PropertyNotSnakeCase
24
 
25
-
26
  namespace Automattic\Jetpack\Autoloader;
27
 
28
- use Composer\Autoload\AutoloadGenerator as BaseGenerator;
29
  use Composer\Autoload\ClassMapGenerator;
 
30
  use Composer\Config;
31
  use Composer\Installer\InstallationManager;
32
  use Composer\IO\IOInterface;
33
  use Composer\Package\PackageInterface;
34
  use Composer\Repository\InstalledRepositoryInterface;
35
  use Composer\Util\Filesystem;
 
36
 
37
  /**
38
  * Class AutoloadGenerator.
39
  */
40
- class AutoloadGenerator extends BaseGenerator {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
 
42
  /**
43
  * Instantiate an AutoloadGenerator object.
@@ -45,60 +60,174 @@ class AutoloadGenerator extends BaseGenerator {
45
  * @param IOInterface $io IO object.
46
  */
47
  public function __construct( IOInterface $io = null ) {
48
- $this->io = $io;
 
49
  }
50
 
51
  /**
52
- * Dump the autoloader.
53
  *
 
54
  * @param Config $config Config object.
55
- * @param InstalledRepositoryInterface $localRepo Installed Reposetories object.
56
  * @param PackageInterface $mainPackage Main Package object.
57
  * @param InstallationManager $installationManager Manager for installing packages.
58
  * @param string $targetDir Path to the current target directory.
59
- * @param bool $scanPsr0Packages Whether to search for packages. Currently hard coded to always be false.
60
- * @param string $suffix The autoloader suffix, ignored since we want our autoloader to only be included once.
61
  */
62
  public function dump(
 
63
  Config $config,
64
  InstalledRepositoryInterface $localRepo,
65
  PackageInterface $mainPackage,
66
  InstallationManager $installationManager,
67
  $targetDir,
68
- $scanPsr0Packages = null, // Not used we always optimize.
69
  $suffix = null
70
  ) {
 
71
 
72
- $filesystem = new Filesystem();
73
- $filesystem->ensureDirectoryExists( $config->get( 'vendor-dir' ) );
74
 
75
- $basePath = $filesystem->normalizePath( realpath( getcwd() ) );
76
- $vendorPath = $filesystem->normalizePath( realpath( $config->get( 'vendor-dir' ) ) );
77
- $targetDir = $vendorPath . '/' . $targetDir;
78
- $filesystem->ensureDirectoryExists( $targetDir );
 
79
 
80
- $packageMap = $this->buildPackageMap( $installationManager, $mainPackage, $localRepo->getCanonicalPackages() );
81
- $autoloads = $this->parseAutoloads( $packageMap, $mainPackage );
82
 
83
- $classMap = $this->getClassMap( $autoloads, $filesystem, $vendorPath, $basePath );
 
 
84
 
85
- // Generate the files.
86
- file_put_contents( $targetDir . '/autoload_classmap_package.php', $this->getAutoloadClassmapPackagesFile( $classMap ) );
87
- $this->io->writeError( '<info>Generated ' . $targetDir . '/autoload_classmap_package.php</info>', true );
 
88
 
89
- file_put_contents( $vendorPath . '/autoload_packages.php', $this->getAutoloadPackageFile( $suffix ) );
90
- $this->io->writeError( '<info>Generated ' . $vendorPath . '/autoload_packages.php</info>', true );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  }
93
 
94
  /**
95
  * This function differs from the composer parseAutoloadsType in that beside returning the path.
96
  * It also return the path and the version of a package.
97
  *
98
- * Currently supports only psr-4 and clasmap parsing.
99
  *
100
  * @param array $packageMap Map of all the packages.
101
- * @param string $type Type of autoloader to use, currently not used, since we only support psr-4.
102
  * @param PackageInterface $mainPackage Instance of the Package Object.
103
  *
104
  * @return array
@@ -106,10 +235,6 @@ class AutoloadGenerator extends BaseGenerator {
106
  protected function parseAutoloadsType( array $packageMap, $type, PackageInterface $mainPackage ) {
107
  $autoloads = array();
108
 
109
- if ( 'psr-4' !== $type && 'classmap' !== $type ) {
110
- return parent::parseAutoloadsType( $packageMap, $type, $mainPackage );
111
- }
112
-
113
  foreach ( $packageMap as $item ) {
114
  list($package, $installPath) = $item;
115
  $autoload = $package->getAutoload();
@@ -122,8 +247,8 @@ class AutoloadGenerator extends BaseGenerator {
122
  $installPath = substr( $installPath, 0, -strlen( '/' . $package->getTargetDir() ) );
123
  }
124
 
125
- if ( 'psr-4' === $type && isset( $autoload['psr-4'] ) && is_array( $autoload['psr-4'] ) ) {
126
- foreach ( $autoload['psr-4'] as $namespace => $paths ) {
127
  $paths = is_array( $paths ) ? $paths : array( $paths );
128
  foreach ( $paths as $path ) {
129
  $relativePath = empty( $installPath ) ? ( empty( $path ) ? '.' : $path ) : $installPath . '/' . $path;
@@ -139,134 +264,181 @@ class AutoloadGenerator extends BaseGenerator {
139
  foreach ( $autoload['classmap'] as $paths ) {
140
  $paths = is_array( $paths ) ? $paths : array( $paths );
141
  foreach ( $paths as $path ) {
142
- $relativePath = empty( $installPath ) ? ( empty( $path ) ? '.' : $path ) : $installPath . '/' . $path;
143
- $autoloads[] = array(
144
  'path' => $relativePath,
145
  'version' => $package->getVersion(), // Version of the class comes from the package - should we try to parse it?
146
  );
147
  }
148
  }
149
  }
 
 
 
 
 
 
 
 
 
 
 
 
150
  }
151
 
152
  return $autoloads;
153
  }
154
 
155
  /**
156
- * Take the autoloads array and return the classMap that contains the path and the version for each namespace.
 
 
 
157
  *
158
- * @param array $autoloads Array of autoload settings defined defined by the packages.
159
- * @param Filesystem $filesystem Filesystem class instance.
160
- * @param string $vendorPath Path to the vendor directory.
161
- * @param string $basePath Base Path.
162
  *
163
- * @return array $classMap
 
 
 
 
 
164
  */
165
- private function getClassMap( array $autoloads, Filesystem $filesystem, $vendorPath, $basePath ) {
166
- $blacklist = null;
167
-
168
- if ( ! empty( $autoloads['exclude-from-classmap'] ) ) {
169
- $blacklist = '{(' . implode( '|', $autoloads['exclude-from-classmap'] ) . ')}';
170
- }
171
-
172
- $classmapString = '';
173
-
174
- // Scan the PSR-4 and classmap directories for class files, and add them to the class map.
175
- foreach ( $autoloads['psr-4'] as $namespace => $packages_info ) {
176
- foreach ( $packages_info as $package ) {
177
- $dir = $filesystem->normalizePath(
178
- $filesystem->isAbsolutePath( $package['path'] )
179
- ? $package['path']
180
- : $basePath . '/' . $package['path']
181
  );
182
- $map = ClassMapGenerator::createMap( $dir, $blacklist, $this->io, $namespace );
183
-
184
- foreach ( $map as $class => $path ) {
185
- $classCode = var_export( $class, true );
186
- $pathCode = $this->getPathCode( $filesystem, $basePath, $vendorPath, $path );
187
- $versionCode = var_export( $package['version'], true );
188
- $classmapString .= <<<CLASS_CODE
189
- $classCode => array(
190
- 'version' => $versionCode,
191
- 'path' => $pathCode
192
- ),
193
- CLASS_CODE;
194
- $classmapString .= PHP_EOL;
195
- }
196
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
197
  }
 
198
 
199
- foreach ( $autoloads['classmap'] as $package ) {
200
- $dir = $filesystem->normalizePath(
201
- $filesystem->isAbsolutePath( $package['path'] )
202
- ? $package['path']
203
- : $basePath . '/' . $package['path']
204
- );
205
- $map = ClassMapGenerator::createMap( $dir, $blacklist, $this->io, null );
206
-
207
- foreach ( $map as $class => $path ) {
208
- $classCode = var_export( $class, true );
209
- $pathCode = $this->getPathCode( $filesystem, $basePath, $vendorPath, $path );
210
- $versionCode = var_export( $package['version'], true );
211
- $classmapString .= <<<CLASS_CODE
212
- $classCode => array(
213
- 'version' => $versionCode,
214
- 'path' => $pathCode
215
- ),
216
- CLASS_CODE;
217
- $classmapString .= PHP_EOL;
 
 
 
 
 
 
 
 
 
 
 
 
 
218
  }
219
  }
220
-
221
- return 'array( ' . PHP_EOL . $classmapString . ');' . PHP_EOL;
222
  }
223
 
224
  /**
225
- * Generate the PHP that will be used in the autoload_classmap_package.php files.
226
  *
227
- * @param srting $classMap class map array string that is to be written out to the file.
228
- *
229
- * @return string
230
  */
231
- private function getAutoloadClassmapPackagesFile( $classMap ) {
232
-
233
- return <<<INCLUDE_CLASSMAP
234
- <?php
235
-
236
- // This file `autoload_classmap_packages.php` was auto generated by automattic/jetpack-autoloader.
237
-
238
- \$vendorDir = dirname(__DIR__);
239
- \$baseDir = dirname(\$vendorDir);
 
 
 
 
 
 
240
 
241
- return $classMap
 
 
 
242
 
243
- INCLUDE_CLASSMAP;
 
 
 
 
 
244
  }
245
 
246
  /**
247
  * Generate the PHP that will be used in the autoload_packages.php files.
248
  *
249
- * @param string $suffix Unique suffix added to the jetpack_enqueue_packages function.
 
250
  *
251
  * @return string
252
  */
253
- private function getAutoloadPackageFile( $suffix ) {
254
- $sourceLoader = fopen( __DIR__ . '/autoload.php', 'r' );
255
- $file_contents = stream_get_contents( $sourceLoader );
256
- $file_contents .= <<<INCLUDE_FILES
257
- /**
258
- * Prepare all the classes for autoloading.
259
- */
260
- function enqueue_packages_$suffix() {
261
- \$class_map = require_once dirname( __FILE__ ) . '/composer/autoload_classmap_package.php';
262
- foreach ( \$class_map as \$class_name => \$class_info ) {
263
- enqueue_package_class( \$class_name, \$class_info['version'], \$class_info['path'] );
264
- }
265
- }
266
- enqueue_packages_$suffix();
267
-
268
- INCLUDE_FILES;
269
-
270
- return $file_contents;
271
  }
272
  }
1
+ <?php // phpcs:ignore WordPress.Files.FileName
2
  /**
3
  * Autoloader Generator.
4
  *
5
+ * @package automattic/jetpack-autoloader
6
  */
7
 
8
  // phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_useFound
11
  // phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_namespaceFound
12
  // phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_dirFound
13
  // phpcs:disable WordPress.Files.FileName.InvalidClassFileName
 
 
14
  // phpcs:disable WordPress.PHP.DevelopmentFunctions.error_log_var_export
15
  // phpcs:disable WordPress.WP.AlternativeFunctions.file_system_read_file_put_contents
16
  // phpcs:disable WordPress.WP.AlternativeFunctions.file_system_read_fopen
17
  // phpcs:disable WordPress.WP.AlternativeFunctions.file_system_read_fwrite
18
+ // phpcs:disable WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
19
  // phpcs:disable WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
20
  // phpcs:disable WordPress.NamingConventions.ValidVariableName.InterpolatedVariableNotSnakeCase
21
  // phpcs:disable WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase
22
  // phpcs:disable WordPress.NamingConventions.ValidVariableName.PropertyNotSnakeCase
23
 
 
24
  namespace Automattic\Jetpack\Autoloader;
25
 
 
26
  use Composer\Autoload\ClassMapGenerator;
27
+ use Composer\Composer;
28
  use Composer\Config;
29
  use Composer\Installer\InstallationManager;
30
  use Composer\IO\IOInterface;
31
  use Composer\Package\PackageInterface;
32
  use Composer\Repository\InstalledRepositoryInterface;
33
  use Composer\Util\Filesystem;
34
+ use Composer\Util\PackageSorter;
35
 
36
  /**
37
  * Class AutoloadGenerator.
38
  */
39
+ class AutoloadGenerator {
40
+
41
+ const COMMENT = <<<AUTOLOADER_COMMENT
42
+ /**
43
+ * This file was automatically generated by automattic/jetpack-autoloader.
44
+ *
45
+ * @package automattic/jetpack-autoloader
46
+ */
47
+
48
+ AUTOLOADER_COMMENT;
49
+
50
+ /**
51
+ * The filesystem utility.
52
+ *
53
+ * @var Filesystem
54
+ */
55
+ private $filesystem;
56
 
57
  /**
58
  * Instantiate an AutoloadGenerator object.
60
  * @param IOInterface $io IO object.
61
  */
62
  public function __construct( IOInterface $io = null ) {
63
+ $this->io = $io;
64
+ $this->filesystem = new Filesystem();
65
  }
66
 
67
  /**
68
+ * Dump the Jetpack autoloader files.
69
  *
70
+ * @param Composer $composer The Composer object.
71
  * @param Config $config Config object.
72
+ * @param InstalledRepositoryInterface $localRepo Installed Repository object.
73
  * @param PackageInterface $mainPackage Main Package object.
74
  * @param InstallationManager $installationManager Manager for installing packages.
75
  * @param string $targetDir Path to the current target directory.
76
+ * @param bool $scanPsrPackages Whether or not PSR packages should be converted to a classmap.
77
+ * @param string $suffix The autoloader suffix.
78
  */
79
  public function dump(
80
+ Composer $composer,
81
  Config $config,
82
  InstalledRepositoryInterface $localRepo,
83
  PackageInterface $mainPackage,
84
  InstallationManager $installationManager,
85
  $targetDir,
86
+ $scanPsrPackages = false,
87
  $suffix = null
88
  ) {
89
+ $this->filesystem->ensureDirectoryExists( $config->get( 'vendor-dir' ) );
90
 
91
+ $packageMap = $composer->getAutoloadGenerator()->buildPackageMap( $installationManager, $mainPackage, $localRepo->getCanonicalPackages() );
92
+ $autoloads = $this->parseAutoloads( $packageMap, $mainPackage );
93
 
94
+ // Convert the autoloads into a format that the manifest generator can consume more easily.
95
+ $basePath = $this->filesystem->normalizePath( realpath( getcwd() ) );
96
+ $vendorPath = $this->filesystem->normalizePath( realpath( $config->get( 'vendor-dir' ) ) );
97
+ $processedAutoloads = $this->processAutoloads( $autoloads, $scanPsrPackages, $vendorPath, $basePath );
98
+ unset( $packageMap, $autoloads );
99
 
100
+ // Make sure none of the legacy files remain that can lead to problems with the autoloader.
101
+ $this->removeLegacyFiles( $vendorPath );
102
 
103
+ // Write all of the files now that we're done.
104
+ $this->writeAutoloaderFiles( $vendorPath . '/jetpack-autoloader/', $suffix );
105
+ $this->writeManifests( $vendorPath . '/' . $targetDir, $processedAutoloads );
106
 
107
+ if ( ! $scanPsrPackages ) {
108
+ $this->io->writeError( '<warning>You are generating an unoptimized autoloader. If this is a production build, consider using the -o option.</warning>' );
109
+ }
110
+ }
111
 
112
+ /**
113
+ * Compiles an ordered list of namespace => path mappings
114
+ *
115
+ * @param array $packageMap Array of array(package, installDir-relative-to-composer.json).
116
+ * @param PackageInterface $mainPackage Main package instance.
117
+ *
118
+ * @return array The list of path mappings.
119
+ */
120
+ public function parseAutoloads( array $packageMap, PackageInterface $mainPackage ) {
121
+ $rootPackageMap = array_shift( $packageMap );
122
+
123
+ $sortedPackageMap = $this->sortPackageMap( $packageMap );
124
+ $sortedPackageMap[] = $rootPackageMap;
125
+ array_unshift( $packageMap, $rootPackageMap );
126
+
127
+ $psr0 = $this->parseAutoloadsType( $packageMap, 'psr-0', $mainPackage );
128
+ $psr4 = $this->parseAutoloadsType( $packageMap, 'psr-4', $mainPackage );
129
+ $classmap = $this->parseAutoloadsType( array_reverse( $sortedPackageMap ), 'classmap', $mainPackage );
130
+ $files = $this->parseAutoloadsType( $sortedPackageMap, 'files', $mainPackage );
131
+
132
+ krsort( $psr0 );
133
+ krsort( $psr4 );
134
+
135
+ return array(
136
+ 'psr-0' => $psr0,
137
+ 'psr-4' => $psr4,
138
+ 'classmap' => $classmap,
139
+ 'files' => $files,
140
+ );
141
+ }
142
 
143
+ /**
144
+ * Sorts packages by dependency weight
145
+ *
146
+ * Packages of equal weight retain the original order
147
+ *
148
+ * @param array $packageMap The package map.
149
+ * @return array
150
+ */
151
+ protected function sortPackageMap( array $packageMap ) {
152
+ $packages = array();
153
+ $paths = array();
154
+
155
+ foreach ( $packageMap as $item ) {
156
+ list( $package, $path ) = $item;
157
+ $name = $package->getName();
158
+ $packages[ $name ] = $package;
159
+ $paths[ $name ] = $path;
160
+ }
161
+
162
+ $sortedPackages = PackageSorter::sortPackages( $packages );
163
+
164
+ $sortedPackageMap = array();
165
+
166
+ foreach ( $sortedPackages as $package ) {
167
+ $name = $package->getName();
168
+ $sortedPackageMap[] = array( $packages[ $name ], $paths[ $name ] );
169
+ }
170
+
171
+ return $sortedPackageMap;
172
+ }
173
+
174
+ /**
175
+ * Returns the file identifier.
176
+ *
177
+ * @param PackageInterface $package The package instance.
178
+ * @param string $path The path.
179
+ */
180
+ protected function getFileIdentifier( PackageInterface $package, $path ) {
181
+ return md5( $package->getName() . ':' . $path );
182
+ }
183
+
184
+ /**
185
+ * Returns the path code for the given path.
186
+ *
187
+ * @param Filesystem $filesystem The filesystem instance.
188
+ * @param string $basePath The base path.
189
+ * @param string $vendorPath The vendor path.
190
+ * @param string $path The path.
191
+ *
192
+ * @return string The path code.
193
+ */
194
+ protected function getPathCode( Filesystem $filesystem, $basePath, $vendorPath, $path ) {
195
+ if ( ! $filesystem->isAbsolutePath( $path ) ) {
196
+ $path = $basePath . '/' . $path;
197
+ }
198
+ $path = $filesystem->normalizePath( $path );
199
+
200
+ $baseDir = '';
201
+ if ( 0 === strpos( $path . '/', $vendorPath . '/' ) ) {
202
+ $path = substr( $path, strlen( $vendorPath ) );
203
+ $baseDir = '$vendorDir';
204
+
205
+ if ( false !== $path ) {
206
+ $baseDir .= ' . ';
207
+ }
208
+ } else {
209
+ $path = $filesystem->normalizePath( $filesystem->findShortestPath( $basePath, $path, true ) );
210
+ if ( ! $filesystem->isAbsolutePath( $path ) ) {
211
+ $baseDir = '$baseDir . ';
212
+ $path = '/' . $path;
213
+ }
214
+ }
215
+
216
+ if ( strpos( $path, '.phar' ) !== false ) {
217
+ $baseDir = "'phar://' . " . $baseDir;
218
+ }
219
+
220
+ return $baseDir . ( ( false !== $path ) ? var_export( $path, true ) : '' );
221
  }
222
 
223
  /**
224
  * This function differs from the composer parseAutoloadsType in that beside returning the path.
225
  * It also return the path and the version of a package.
226
  *
227
+ * Supports PSR-4, PSR-0, and classmap parsing.
228
  *
229
  * @param array $packageMap Map of all the packages.
230
+ * @param string $type Type of autoloader to use.
231
  * @param PackageInterface $mainPackage Instance of the Package Object.
232
  *
233
  * @return array
235
  protected function parseAutoloadsType( array $packageMap, $type, PackageInterface $mainPackage ) {
236
  $autoloads = array();
237
 
 
 
 
 
238
  foreach ( $packageMap as $item ) {
239
  list($package, $installPath) = $item;
240
  $autoload = $package->getAutoload();
247
  $installPath = substr( $installPath, 0, -strlen( '/' . $package->getTargetDir() ) );
248
  }
249
 
250
+ if ( in_array( $type, array( 'psr-4', 'psr-0' ), true ) && isset( $autoload[ $type ] ) && is_array( $autoload[ $type ] ) ) {
251
+ foreach ( $autoload[ $type ] as $namespace => $paths ) {
252
  $paths = is_array( $paths ) ? $paths : array( $paths );
253
  foreach ( $paths as $path ) {
254
  $relativePath = empty( $installPath ) ? ( empty( $path ) ? '.' : $path ) : $installPath . '/' . $path;
264
  foreach ( $autoload['classmap'] as $paths ) {
265
  $paths = is_array( $paths ) ? $paths : array( $paths );
266
  foreach ( $paths as $path ) {
267
+ $relativePath = empty( $installPath ) ? ( empty( $path ) ? '.' : $path ) : $installPath . '/' . $path;
268
+ $autoloads[] = array(
269
  'path' => $relativePath,
270
  'version' => $package->getVersion(), // Version of the class comes from the package - should we try to parse it?
271
  );
272
  }
273
  }
274
  }
275
+ if ( 'files' === $type && isset( $autoload['files'] ) && is_array( $autoload['files'] ) ) {
276
+ foreach ( $autoload['files'] as $paths ) {
277
+ $paths = is_array( $paths ) ? $paths : array( $paths );
278
+ foreach ( $paths as $path ) {
279
+ $relativePath = empty( $installPath ) ? ( empty( $path ) ? '.' : $path ) : $installPath . '/' . $path;
280
+ $autoloads[ $this->getFileIdentifier( $package, $path ) ] = array(
281
+ 'path' => $relativePath,
282
+ 'version' => $package->getVersion(), // Version of the file comes from the package - should we try to parse it?
283
+ );
284
+ }
285
+ }
286
+ }
287
  }
288
 
289
  return $autoloads;
290
  }
291
 
292
  /**
293
+ * Given Composer's autoloads this will convert them to a version that we can use to generate the manifests.
294
+ *
295
+ * When the $scanPsrPackages argument is true, PSR-4 namespaces are converted to classmaps. When $scanPsrPackages
296
+ * is false, PSR-4 namespaces are not converted to classmaps.
297
  *
298
+ * PSR-0 namespaces are always converted to classmaps.
 
 
 
299
  *
300
+ * @param array $autoloads The autoloads we want to process.
301
+ * @param bool $scanPsrPackages Whether or not PSR-4 packages should be converted to a classmap.
302
+ * @param string $vendorPath The path to the vendor directory.
303
+ * @param string $basePath The path to the current directory.
304
+ *
305
+ * @return array $processedAutoloads
306
  */
307
+ private function processAutoloads( $autoloads, $scanPsrPackages, $vendorPath, $basePath ) {
308
+ $processor = new AutoloadProcessor(
309
+ function ( $path, $excludedClasses, $namespace ) use ( $basePath ) {
310
+ $dir = $this->filesystem->normalizePath(
311
+ $this->filesystem->isAbsolutePath( $path ) ? $path : $basePath . '/' . $path
 
 
 
 
 
 
 
 
 
 
 
312
  );
313
+ return ClassMapGenerator::createMap(
314
+ $dir,
315
+ $excludedClasses,
316
+ null, // Don't pass the IOInterface since the normal autoload generation will have reported already.
317
+ empty( $namespace ) ? null : $namespace
318
+ );
319
+ },
320
+ function ( $path ) use ( $basePath, $vendorPath ) {
321
+ return $this->getPathCode( $this->filesystem, $basePath, $vendorPath, $path );
 
 
 
 
 
322
  }
323
+ );
324
+
325
+ return array(
326
+ 'psr-4' => $processor->processPsr4Packages( $autoloads, $scanPsrPackages ),
327
+ 'classmap' => $processor->processClassmap( $autoloads, $scanPsrPackages ),
328
+ 'files' => $processor->processFiles( $autoloads ),
329
+ );
330
+ }
331
+
332
+ /**
333
+ * Removes all of the legacy autoloader files so they don't cause any problems.
334
+ *
335
+ * @param string $outDir The directory legacy files are written to.
336
+ */
337
+ private function removeLegacyFiles( $outDir ) {
338
+ $files = array(
339
+ 'autoload_functions.php',
340
+ 'class-autoloader-handler.php',
341
+ 'class-classes-handler.php',
342
+ 'class-files-handler.php',
343
+ 'class-plugins-handler.php',
344
+ 'class-version-selector.php',
345
+ );
346
+ foreach ( $files as $file ) {
347
+ $this->filesystem->remove( $outDir . '/' . $file );
348
  }
349
+ }
350
 
351
+ /**
352
+ * Writes all of the autoloader files to disk.
353
+ *
354
+ * @param string $outDir The directory to write to.
355
+ * @param string $suffix The unique autoloader suffix.
356
+ */
357
+ private function writeAutoloaderFiles( $outDir, $suffix ) {
358
+ $this->io->writeError( "<info>Generating jetpack autoloader ($outDir)</info>" );
359
+
360
+ // We will remove all autoloader files to generate this again.
361
+ $this->filesystem->emptyDirectory( $outDir );
362
+
363
+ $packageFiles = array(
364
+ 'autoload.php' => '../autoload_packages.php',
365
+ 'functions.php' => 'autoload_functions.php',
366
+ 'class-autoloader-locator.php' => null,
367
+ 'class-autoloader-handler.php' => null,
368
+ 'class-manifest-handler.php' => null,
369
+ 'class-plugins-handler.php' => null,
370
+ 'class-version-selector.php' => null,
371
+ 'class-version-loader.php' => null,
372
+ );
373
+
374
+ foreach ( $packageFiles as $file => $newFile ) {
375
+ $newFile = isset( $newFile ) ? $newFile : $file;
376
+
377
+ $content = $this->getAutoloadPackageFile( $file, $suffix );
378
+
379
+ if ( file_put_contents( $outDir . '/' . $newFile, $content ) ) {
380
+ $this->io->writeError( " <info>Generated: $newFile</info>" );
381
+ } else {
382
+ $this->io->writeError( " <error>Error: $newFile</error>" );
383
  }
384
  }
 
 
385
  }
386
 
387
  /**
388
+ * Writes all of the manifest files to disk.
389
  *
390
+ * @param string $outDir The directory to write to.
391
+ * @param array $processedAutoloads The processed autoloads.
 
392
  */
393
+ private function writeManifests( $outDir, $processedAutoloads ) {
394
+ $this->io->writeError( "<info>Generating jetpack autoloader manifests ($outDir)</info>" );
395
+
396
+ $manifestFiles = array(
397
+ 'classmap' => 'jetpack_autoload_classmap.php',
398
+ 'psr-4' => 'jetpack_autoload_psr4.php',
399
+ 'files' => 'jetpack_autoload_filemap.php',
400
+ );
401
+
402
+ foreach ( $manifestFiles as $key => $file ) {
403
+ // Make sure the file doesn't exist so it isn't there if we don't write it.
404
+ $this->filesystem->remove( $outDir . '/' . $file );
405
+ if ( empty( $processedAutoloads[ $key ] ) ) {
406
+ continue;
407
+ }
408
 
409
+ $content = ManifestGenerator::buildManifest( $key, $file, $processedAutoloads[ $key ] );
410
+ if ( empty( $content ) ) {
411
+ continue;
412
+ }
413
 
414
+ if ( file_put_contents( $outDir . '/' . $file, $content ) ) {
415
+ $this->io->writeError( " <info>Generated: $file</info>" );
416
+ } else {
417
+ $this->io->writeError( " <error>Error: $file</error>" );
418
+ }
419
+ }
420
  }
421
 
422
  /**
423
  * Generate the PHP that will be used in the autoload_packages.php files.
424
  *
425
+ * @param String $filename a file to prepare.
426
+ * @param String $suffix Unique suffix used in the namespace.
427
  *
428
  * @return string
429
  */
430
+ private function getAutoloadPackageFile( $filename, $suffix ) {
431
+ $header = self::COMMENT;
432
+ $header .= PHP_EOL;
433
+ $header .= 'namespace Automattic\Jetpack\Autoloader\jp' . $suffix . ';';
434
+ $header .= PHP_EOL . PHP_EOL;
435
+
436
+ $sourceLoader = fopen( __DIR__ . '/' . $filename, 'r' );
437
+ $file_contents = stream_get_contents( $sourceLoader );
438
+ return str_replace(
439
+ '/* HEADER */',
440
+ $header,
441
+ $file_contents
442
+ );
 
 
 
 
 
443
  }
444
  }
vendor/automattic/jetpack-autoloader/src/AutoloadProcessor.php ADDED
@@ -0,0 +1,180 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php // phpcs:ignore WordPress.Files.FileName
2
+ /**
3
+ * Autoload Processor.
4
+ *
5
+ * @package automattic/jetpack-autoloader
6
+ */
7
+
8
+ // phpcs:disable WordPress.Files.FileName.InvalidClassFileName
9
+ // phpcs:disable WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
10
+ // phpcs:disable WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
11
+ // phpcs:disable WordPress.NamingConventions.ValidVariableName.InterpolatedVariableNotSnakeCase
12
+ // phpcs:disable WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase
13
+ // phpcs:disable WordPress.NamingConventions.ValidVariableName.PropertyNotSnakeCase
14
+
15
+ namespace Automattic\Jetpack\Autoloader;
16
+
17
+ /**
18
+ * Class AutoloadProcessor.
19
+ */
20
+ class AutoloadProcessor {
21
+
22
+ /**
23
+ * A callable for scanning a directory for all of its classes.
24
+ *
25
+ * @var callable
26
+ */
27
+ private $classmapScanner;
28
+
29
+ /**
30
+ * A callable for transforming a path into one to be used in code.
31
+ *
32
+ * @var callable
33
+ */
34
+ private $pathCodeTransformer;
35
+
36
+ /**
37
+ * The constructor.
38
+ *
39
+ * @param callable $classmapScanner A callable for scanning a directory for all of its classes.
40
+ * @param callable $pathCodeTransformer A callable for transforming a path into one to be used in code.
41
+ */
42
+ public function __construct( $classmapScanner, $pathCodeTransformer ) {
43
+ $this->classmapScanner = $classmapScanner;
44
+ $this->pathCodeTransformer = $pathCodeTransformer;
45
+ }
46
+
47
+ /**
48
+ * Processes the classmap autoloads into a relative path format including the version for each file.
49
+ *
50
+ * @param array $autoloads The autoloads we are processing.
51
+ * @param bool $scanPsrPackages Whether or not PSR packages should be converted to a classmap.
52
+ *
53
+ * @return array $processed
54
+ */
55
+ public function processClassmap( $autoloads, $scanPsrPackages ) {
56
+ // We can't scan PSR packages if we don't actually have any.
57
+ if ( empty( $autoloads['psr-4'] ) ) {
58
+ $scanPsrPackages = false;
59
+ }
60
+
61
+ if ( empty( $autoloads['classmap'] ) && ! $scanPsrPackages ) {
62
+ return null;
63
+ }
64
+
65
+ $excludedClasses = null;
66
+ if ( ! empty( $autoloads['exclude-from-classmap'] ) ) {
67
+ $excludedClasses = '{(' . implode( '|', $autoloads['exclude-from-classmap'] ) . ')}';
68
+ }
69
+
70
+ $processed = array();
71
+
72
+ if ( $scanPsrPackages ) {
73
+ foreach ( $autoloads['psr-4'] as $namespace => $sources ) {
74
+ $namespace = empty( $namespace ) ? null : $namespace;
75
+
76
+ foreach ( $sources as $source ) {
77
+ $classmap = call_user_func( $this->classmapScanner, $source['path'], $excludedClasses, $namespace );
78
+
79
+ foreach ( $classmap as $class => $path ) {
80
+ $processed[ $class ] = array(
81
+ 'version' => $source['version'],
82
+ 'path' => call_user_func( $this->pathCodeTransformer, $path ),
83
+ );
84
+ }
85
+ }
86
+ }
87
+ }
88
+
89
+ /*
90
+ * PSR-0 namespaces are converted to classmaps for both optimized and unoptimized autoloaders because any new
91
+ * development should use classmap or PSR-4 autoloading.
92
+ */
93
+ if ( ! empty( $autoloads['psr-0'] ) ) {
94
+ foreach ( $autoloads['psr-0'] as $namespace => $sources ) {
95
+ $namespace = empty( $namespace ) ? null : $namespace;
96
+
97
+ foreach ( $sources as $source ) {
98
+ $classmap = call_user_func( $this->classmapScanner, $source['path'], $excludedClasses, $namespace );
99
+ foreach ( $classmap as $class => $path ) {
100
+ $processed[ $class ] = array(
101
+ 'version' => $source['version'],
102
+ 'path' => call_user_func( $this->pathCodeTransformer, $path ),
103
+ );
104
+ }
105
+ }
106
+ }
107
+ }
108
+
109
+ if ( ! empty( $autoloads['classmap'] ) ) {
110
+ foreach ( $autoloads['classmap'] as $package ) {
111
+ $classmap = call_user_func( $this->classmapScanner, $package['path'], $excludedClasses, null );
112
+
113
+ foreach ( $classmap as $class => $path ) {
114
+ $processed[ $class ] = array(
115
+ 'version' => $package['version'],
116
+ 'path' => call_user_func( $this->pathCodeTransformer, $path ),
117
+ );
118
+ }
119
+ }
120
+ }
121
+
122
+ return $processed;
123
+ }
124
+
125
+ /**
126
+ * Processes the PSR-4 autoloads into a relative path format including the version for each file.
127
+ *
128
+ * @param array $autoloads The autoloads we are processing.
129
+ * @param bool $scanPsrPackages Whether or not PSR packages should be converted to a classmap.
130
+ *
131
+ * @return array $processed
132
+ */
133
+ public function processPsr4Packages( $autoloads, $scanPsrPackages ) {
134
+ if ( $scanPsrPackages || empty( $autoloads['psr-4'] ) ) {
135
+ return null;
136
+ }
137
+
138
+ $processed = array();
139
+
140
+ foreach ( $autoloads['psr-4'] as $namespace => $packages ) {
141
+ $namespace = empty( $namespace ) ? null : $namespace;
142
+ $paths = array();
143
+
144
+ foreach ( $packages as $package ) {
145
+ $paths[] = call_user_func( $this->pathCodeTransformer, $package['path'] );
146
+ }
147
+
148
+ $processed[ $namespace ] = array(
149
+ 'version' => $package['version'],
150
+ 'path' => $paths,
151
+ );
152
+ }
153
+
154
+ return $processed;
155
+ }
156
+
157
+ /**
158
+ * Processes the file autoloads into a relative format including the version for each file.
159
+ *
160
+ * @param array $autoloads The autoloads we are processing.
161
+ *
162
+ * @return array|null $processed
163
+ */
164
+ public function processFiles( $autoloads ) {
165
+ if ( empty( $autoloads['files'] ) ) {
166
+ return null;
167
+ }
168
+
169
+ $processed = array();
170
+
171
+ foreach ( $autoloads['files'] as $file_id => $package ) {
172
+ $processed[ $file_id ] = array(
173
+ 'version' => $package['version'],
174
+ 'path' => call_user_func( $this->pathCodeTransformer, $package['path'] ),
175
+ );
176
+ }
177
+
178
+ return $processed;
179
+ }
180
+ }
vendor/automattic/jetpack-autoloader/src/CustomAutoloaderPlugin.php CHANGED
@@ -1,8 +1,8 @@
1
- <?php
2
  /**
3
  * Custom Autoloader Composer Plugin, hooks into composer events to generate the custom autoloader.
4
  *
5
- * @package Automattic\Jetpack\Autoloader
6
  */
7
 
8
  // phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_useFound
@@ -15,16 +15,16 @@
15
  namespace Automattic\Jetpack\Autoloader;
16
 
17
  use Composer\Composer;
 
18
  use Composer\IO\IOInterface;
 
19
  use Composer\Script\Event;
20
  use Composer\Script\ScriptEvents;
21
- use Composer\Plugin\PluginInterface;
22
- use Composer\EventDispatcher\EventSubscriberInterface;
23
 
24
  /**
25
  * Class CustomAutoloaderPlugin.
26
  *
27
- * @package Automattic\Jetpack\Autoloader
28
  */
29
  class CustomAutoloaderPlugin implements PluginInterface, EventSubscriberInterface {
30
 
@@ -53,10 +53,38 @@ class CustomAutoloaderPlugin implements PluginInterface, EventSubscriberInterfac
53
  $this->io = $io;
54
  }
55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  /**
57
  * Tell composer to listen for events and do something with them.
58
  *
59
- * @return array List of succribed events.
60
  */
61
  public static function getSubscribedEvents() {
62
  return array(
@@ -70,21 +98,64 @@ class CustomAutoloaderPlugin implements PluginInterface, EventSubscriberInterfac
70
  * @param Event $event Script event object.
71
  */
72
  public function postAutoloadDump( Event $event ) {
 
 
 
 
 
 
 
 
73
 
74
  $installationManager = $this->composer->getInstallationManager();
75
  $repoManager = $this->composer->getRepositoryManager();
76
  $localRepo = $repoManager->getLocalRepository();
77
  $package = $this->composer->getPackage();
78
- $config = $this->composer->getConfig();
79
- $optimize = true;
80
- $suffix = $config->get( 'autoloader-suffix' )
81
- ? $config->get( 'autoloader-suffix' )
82
- : md5( uniqid( '', true ) );
83
 
84
  $generator = new AutoloadGenerator( $this->io );
85
-
86
- $generator->dump( $config, $localRepo, $package, $installationManager, 'composer', $optimize, $suffix );
87
  $this->generated = true;
88
  }
89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  }
1
+ <?php //phpcs:ignore WordPress.Files.FileName.NotHyphenatedLowercase
2
  /**
3
  * Custom Autoloader Composer Plugin, hooks into composer events to generate the custom autoloader.
4
  *
5
+ * @package automattic/jetpack-autoloader
6
  */
7
 
8
  // phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_useFound
15
  namespace Automattic\Jetpack\Autoloader;
16
 
17
  use Composer\Composer;
18
+ use Composer\EventDispatcher\EventSubscriberInterface;
19
  use Composer\IO\IOInterface;
20
+ use Composer\Plugin\PluginInterface;
21
  use Composer\Script\Event;
22
  use Composer\Script\ScriptEvents;
 
 
23
 
24
  /**
25
  * Class CustomAutoloaderPlugin.
26
  *
27
+ * @package automattic/jetpack-autoloader
28
  */
29
  class CustomAutoloaderPlugin implements PluginInterface, EventSubscriberInterface {
30
 
53
  $this->io = $io;
54
  }
55
 
56
+ /**
57
+ * Do nothing.
58
+ * phpcs:disable VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
59
+ *
60
+ * @param Composer $composer Composer object.
61
+ * @param IOInterface $io IO object.
62
+ */
63
+ public function deactivate( Composer $composer, IOInterface $io ) {
64
+ /*
65
+ * Intentionally left empty. This is a PluginInterface method.
66
+ * phpcs:enable VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
67
+ */
68
+ }
69
+
70
+ /**
71
+ * Do nothing.
72
+ * phpcs:disable VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
73
+ *
74
+ * @param Composer $composer Composer object.
75
+ * @param IOInterface $io IO object.
76
+ */
77
+ public function uninstall( Composer $composer, IOInterface $io ) {
78
+ /*
79
+ * Intentionally left empty. This is a PluginInterface method.
80
+ * phpcs:enable VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
81
+ */
82
+ }
83
+
84
  /**
85
  * Tell composer to listen for events and do something with them.
86
  *
87
+ * @return array List of subscribed events.
88
  */
89
  public static function getSubscribedEvents() {
90
  return array(
98
  * @param Event $event Script event object.
99
  */
100
  public function postAutoloadDump( Event $event ) {
101
+ $config = $this->composer->getConfig();
102
+
103
+ if ( 'vendor' !== $config->raw()['config']['vendor-dir'] ) {
104
+ $this->io->writeError( "\n<error>An error occurred while generating the autoloader files:", true );
105
+ $this->io->writeError( 'The project\'s composer.json or composer environment set a non-default vendor directory.', true );
106
+ $this->io->writeError( 'The default composer vendor directory must be used.</error>', true );
107
+ exit();
108
+ }
109
 
110
  $installationManager = $this->composer->getInstallationManager();
111
  $repoManager = $this->composer->getRepositoryManager();
112
  $localRepo = $repoManager->getLocalRepository();
113
  $package = $this->composer->getPackage();
114
+ $optimize = $event->getFlags()['optimize'];
115
+ $suffix = $this->determineSuffix();
 
 
 
116
 
117
  $generator = new AutoloadGenerator( $this->io );
118
+ $generator->dump( $this->composer, $config, $localRepo, $package, $installationManager, 'composer', $optimize, $suffix );
 
119
  $this->generated = true;
120
  }
121
 
122
+ /**
123
+ * Determine the suffix for the autoloader class.
124
+ *
125
+ * Reuses an existing suffix from vendor/autoload_packages.php or vendor/autoload.php if possible.
126
+ *
127
+ * @return string Suffix.
128
+ */
129
+ private function determineSuffix() {
130
+ $config = $this->composer->getConfig();
131
+ $vendorPath = $config->get( 'vendor-dir' );
132
+
133
+ // Command line.
134
+ $suffix = $config->get( 'autoloader-suffix' );
135
+ if ( $suffix ) {
136
+ return $suffix;
137
+ }
138
+
139
+ // Reuse our own suffix, if any.
140
+ if ( is_readable( $vendorPath . '/autoload_packages.php' ) ) {
141
+ // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents
142
+ $content = file_get_contents( $vendorPath . '/autoload_packages.php' );
143
+ if ( preg_match( '/^namespace Automattic\\\\Jetpack\\\\Autoloader\\\\jp([^;\s]+);/m', $content, $match ) ) {
144
+ return $match[1];
145
+ }
146
+ }
147
+
148
+ // Reuse Composer's suffix, if any.
149
+ if ( is_readable( $vendorPath . '/autoload.php' ) ) {
150
+ // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents
151
+ $content = file_get_contents( $vendorPath . '/autoload.php' );
152
+ if ( preg_match( '{ComposerAutoloaderInit([^:\s]+)::}', $content, $match ) ) {
153
+ return $match[1];
154
+ }
155
+ }
156
+
157
+ // Generate a random suffix.
158
+ return md5( uniqid( '', true ) );
159
+ }
160
+
161
  }
vendor/automattic/jetpack-autoloader/src/ManifestGenerator.php ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php // phpcs:ignore WordPress.Files.FileName
2
+ /**
3
+ * Manifest Generator.
4
+ *
5
+ * @package automattic/jetpack-autoloader
6
+ */
7
+
8
+ // phpcs:disable WordPress.Files.FileName.InvalidClassFileName
9
+ // phpcs:disable WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
10
+ // phpcs:disable WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
11
+ // phpcs:disable WordPress.NamingConventions.ValidVariableName.InterpolatedVariableNotSnakeCase
12
+ // phpcs:disable WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase
13
+ // phpcs:disable WordPress.NamingConventions.ValidVariableName.PropertyNotSnakeCase
14
+ // phpcs:disable WordPress.PHP.DevelopmentFunctions.error_log_var_export
15
+
16
+ namespace Automattic\Jetpack\Autoloader;
17
+
18
+ /**
19
+ * Class ManifestGenerator.
20
+ */
21
+ class ManifestGenerator {
22
+
23
+ /**
24
+ * Builds a manifest file for the given autoloader type.
25
+ *
26
+ * @param string $autoloaderType The type of autoloader to build a manifest for.
27
+ * @param string $fileName The filename of the manifest.
28
+ * @param array $content The manifest content to generate using.
29
+ *
30
+ * @return string|null $manifestFile
31
+ * @throws \InvalidArgumentException When an invalid autoloader type is given.
32
+ */
33
+ public static function buildManifest( $autoloaderType, $fileName, $content ) {
34
+ if ( empty( $content ) ) {
35
+ return null;
36
+ }
37
+
38
+ switch ( $autoloaderType ) {
39
+ case 'classmap':
40
+ case 'files':
41
+ return self::buildStandardManifest( $fileName, $content );
42
+ case 'psr-4':
43
+ return self::buildPsr4Manifest( $fileName, $content );
44
+ }
45
+
46
+ throw new \InvalidArgumentException( 'An invalid manifest type of ' . $autoloaderType . ' was passed!' );
47
+ }
48
+
49
+ /**
50
+ * Builds the contents for the standard manifest file.
51
+ *
52
+ * @param string $fileName The filename we are building.
53
+ * @param array $manifestData The formatted data for the manifest.
54
+ *
55
+ * @return string|null $manifestFile
56
+ */
57
+ private static function buildStandardManifest( $fileName, $manifestData ) {
58
+ $fileContent = PHP_EOL;
59
+ foreach ( $manifestData as $key => $data ) {
60
+ $key = var_export( $key, true );
61
+ $versionCode = var_export( $data['version'], true );
62
+ $fileContent .= <<<MANIFEST_CODE
63
+ $key => array(
64
+ 'version' => $versionCode,
65
+ 'path' => {$data['path']}
66
+ ),
67
+ MANIFEST_CODE;
68
+ $fileContent .= PHP_EOL;
69
+ }
70
+
71
+ return self::buildFile( $fileName, $fileContent );
72
+ }
73
+
74
+ /**
75
+ * Builds the contents for the PSR-4 manifest file.
76
+ *
77
+ * @param string $fileName The filename we are building.
78
+ * @param array $namespaces The formatted PSR-4 data for the manifest.
79
+ *
80
+ * @return string|null $manifestFile
81
+ */
82
+ private static function buildPsr4Manifest( $fileName, $namespaces ) {
83
+ $fileContent = PHP_EOL;
84
+ foreach ( $namespaces as $namespace => $data ) {
85
+ $namespaceCode = var_export( $namespace, true );
86
+ $versionCode = var_export( $data['version'], true );
87
+ $pathCode = 'array( ' . implode( ', ', $data['path'] ) . ' )';
88
+ $fileContent .= <<<MANIFEST_CODE
89
+ $namespaceCode => array(
90
+ 'version' => $versionCode,
91
+ 'path' => $pathCode
92
+ ),
93
+ MANIFEST_CODE;
94
+ $fileContent .= PHP_EOL;
95
+ }
96
+
97
+ return self::buildFile( $fileName, $fileContent );
98
+ }
99
+
100
+ /**
101
+ * Generate the PHP that will be used in the file.
102
+ *
103
+ * @param string $fileName The filename we are building.
104
+ * @param string $content The content to be written into the file.
105
+ *
106
+ * @return string $fileContent
107
+ */
108
+ private static function buildFile( $fileName, $content ) {
109
+ return <<<INCLUDE_FILE
110
+ <?php
111
+
112
+ // This file `$fileName` was auto generated by automattic/jetpack-autoloader.
113
+
114
+ \$vendorDir = dirname(__DIR__);
115
+ \$baseDir = dirname(\$vendorDir);
116
+
117
+ return array($content);
118
+
119
+ INCLUDE_FILE;
120
+ }
121
+ }
vendor/automattic/jetpack-autoloader/src/autoload.php CHANGED
@@ -1,119 +1,6 @@
1
  <?php
2
- /**
3
- * This file `autoload_packages.php`was generated by automattic/jetpack-autoloader.
4
- *
5
- * From your plugin include this file with:
6
- * require_once . plugin_dir_path( __FILE__ ) . '/vendor/autoload_packages.php';
7
- *
8
- * @package Automattic\Jetpack\Autoloader
9
- */
10
 
11
- // phpcs:disable PHPCompatibility.LanguageConstructs.NewLanguageConstructs.t_ns_separatorFound
12
- // phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_namespaceFound
13
- // phpcs:disable PHPCompatibility.Keywords.NewKeywords.t_ns_cFound
14
 
15
- namespace Automattic\Jetpack\Autoloader;
16
-
17
- if ( ! function_exists( __NAMESPACE__ . '\enqueue_package_class' ) ) {
18
- global $jetpack_packages_classes;
19
-
20
- if ( ! is_array( $jetpack_packages_classes ) ) {
21
- $jetpack_packages_classes = array();
22
- }
23
- /**
24
- * Adds the version of a package to the $jetpack_packages global array so that
25
- * the autoloader is able to find it.
26
- *
27
- * @param string $class_name Name of the class that you want to autoload.
28
- * @param string $version Version of the class.
29
- * @param string $path Absolute path to the class so that we can load it.
30
- */
31
- function enqueue_package_class( $class_name, $version, $path ) {
32
- global $jetpack_packages_classes;
33
-
34
- if ( ! isset( $jetpack_packages_classes[ $class_name ] ) ) {
35
- $jetpack_packages_classes[ $class_name ] = array(
36
- 'version' => $version,
37
- 'path' => $path,
38
- );
39
- }
40
- // If we have a @dev version set always use that one!
41
- if ( 'dev-' === substr( $jetpack_packages_classes[ $class_name ]['version'], 0, 4 ) ) {
42
- return;
43
- }
44
-
45
- // Always favour the @dev version. Since that version is the same as bleeding edge.
46
- // We need to make sure that we don't do this in production!
47
- if ( 'dev-' === substr( $version, 0, 4 ) ) {
48
- $jetpack_packages_classes[ $class_name ] = array(
49
- 'version' => $version,
50
- 'path' => $path,
51
- );
52
-
53
- return;
54
- }
55
- // Set the latest version!
56
- if ( version_compare( $jetpack_packages_classes[ $class_name ]['version'], $version, '<' ) ) {
57
- $jetpack_packages_classes[ $class_name ] = array(
58
- 'version' => $version,
59
- 'path' => $path,
60
- );
61
- }
62
- }
63
- }
64
-
65
- if ( ! function_exists( __NAMESPACE__ . '\autoloader' ) ) {
66
- /**
67
- * Used for autoloading jetpack packages.
68
- *
69
- * @param string $class_name Class Name to load.
70
- */
71
- function autoloader( $class_name ) {
72
- global $jetpack_packages_classes;
73
-
74
- if ( isset( $jetpack_packages_classes[ $class_name ] ) ) {
75
- if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
76
- // TODO ideally we shouldn't skip any of these, see: https://github.com/Automattic/jetpack/pull/12646.
77
- $ignore = in_array(
78
- $class_name,
79
- array(
80
- 'Automattic\Jetpack\JITM',
81
- 'Automattic\Jetpack\Connection\Manager',
82
- 'Automattic\Jetpack\Connection\Manager_Interface',
83
- 'Automattic\Jetpack\Connection\XMLRPC_Connector',
84
- 'Jetpack_Options',
85
- 'Jetpack_Signature',
86
- 'Automattic\Jetpack\Sync\Main',
87
- 'Automattic\Jetpack\Constants',
88
- 'Automattic\Jetpack\Tracking',
89
- 'Automattic\Jetpack\Plugin\Tracking',
90
- ),
91
- true
92
- );
93
- if ( ! $ignore && function_exists( 'did_action' ) && ! did_action( 'plugins_loaded' ) ) {
94
- _doing_it_wrong(
95
- esc_html( $class_name ),
96
- sprintf(
97
- /* translators: %s Name of a PHP Class */
98
- esc_html__( 'Not all plugins have loaded yet but we requested the class %s', 'jetpack' ),
99
- // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
100
- $class_name
101
- ),
102
- esc_html( $jetpack_packages_classes[ $class_name ]['version'] )
103
- );
104
- }
105
- }
106
-
107
- if ( file_exists( $jetpack_packages_classes[ $class_name ]['path'] ) ) {
108
- require_once $jetpack_packages_classes[ $class_name ]['path'];
109
-
110
- return true;
111
- }
112
- }
113
-
114
- return false;
115
- }
116
-
117
- // Add the jetpack autoloader.
118
- spl_autoload_register( __NAMESPACE__ . '\autoloader' );
119
- }
1
  <?php
2
+ /* HEADER */ // phpcs:ignore
 
 
 
 
 
 
 
3
 
4
+ require_once trailingslashit( __DIR__ ) . 'jetpack-autoloader/autoload_functions.php';
 
 
5
 
6
+ set_up_autoloader();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/automattic/jetpack-autoloader/src/class-autoloader-handler.php ADDED
@@ -0,0 +1,190 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /* HEADER */ // phpcs:ignore
3
+
4
+ /**
5
+ * This class selects the package version for the autoloader.
6
+ */
7
+ class Autoloader_Handler {
8
+
9
+ // The name of the autoloader function registered by v1.* autoloaders.
10
+ const V1_AUTOLOADER_NAME = 'Automattic\Jetpack\Autoloader\autoloader';
11
+
12
+ /*
13
+ * The autoloader function for v2.* autoloaders is named __NAMESPACE__ . \autoloader.
14
+ * The namespace is defined in AutoloadGenerator as
15
+ * 'Automattic\Jetpack\Autoloader\jp' plus a unique suffix.
16
+ */
17
+ const V2_AUTOLOADER_BASE = 'Automattic\Jetpack\Autoloader\jp';
18
+
19
+ /**
20
+ * The current plugin path.
21
+ *
22
+ * @var string
23
+ */
24
+ private $current_plugin_path;
25
+
26
+ /**
27
+ * The paths for all of the active plugins.
28
+ *
29
+ * @var array
30
+ */
31
+ private $active_plugin_paths;
32
+
33
+ /**
34
+ * The Autoloader_Locator object.
35
+ *
36
+ * @var Autoloader_Locator
37
+ */
38
+ private $autoloader_locator;
39
+
40
+ /**
41
+ * The Version_Selector object.
42
+ *
43
+ * @var Version_Selector
44
+ */
45
+ private $version_selector;
46
+
47
+ /**
48
+ * The constructor.
49
+ *
50
+ * @param string $current_plugin_path The current plugin path.
51
+ * @param array $active_plugin_paths The active plugin paths.
52
+ * @param Autoloader_Locator $autoloader_locator The Autoloader_Locator object.
53
+ * @param Version_Selector $version_selector The Version_Selector object.
54
+ */
55
+ public function __construct( $current_plugin_path, $active_plugin_paths, $autoloader_locator, $version_selector ) {
56
+ $this->current_plugin_path = $current_plugin_path;
57
+ $this->active_plugin_paths = $active_plugin_paths;
58
+ $this->autoloader_locator = $autoloader_locator;
59
+ $this->version_selector = $version_selector;
60
+ }
61
+
62
+ /**
63
+ * Finds the latest installed autoloader.
64
+ *
65
+ * @return bool True if this autoloader is the latest, false otherwise.
66
+ */
67
+ public function is_latest_autoloader() {
68
+ global $jetpack_autoloader_latest_version;
69
+
70
+ if ( isset( $jetpack_autoloader_latest_version ) ) {
71
+ return $jetpack_autoloader_latest_version === $this->autoloader_locator->get_autoloader_version( $this->current_plugin_path );
72
+ }
73
+
74
+ $latest_plugin = $this->autoloader_locator->find_latest_autoloader( $this->active_plugin_paths, $jetpack_autoloader_latest_version );
75
+ if ( ! isset( $latest_plugin ) ) {
76
+ return true;
77
+ }
78
+
79
+ if ( $latest_plugin !== $this->current_plugin_path ) {
80
+ require $this->autoloader_locator->get_autoloader_path( $latest_plugin );
81
+ return false;
82
+ }
83
+
84
+ return true;
85
+ }
86
+
87
+ /**
88
+ * Checks whether the autoloader should be reset. The autoloader should be reset:
89
+ *
90
+ * - When a plugin is activated via a method other than a request, for example using WP-CLI.
91
+ * - When the active plugins list changes between autoloader checks, for example when filtered by a plugin.
92
+ *
93
+ * We perform this reset because the manifest files for the plugin will have been initially unknown when
94
+ * selecting versions for classes and files.
95
+ *
96
+ * If the current plugin is not already known, this method will add it to the
97
+ * $jetpack_autoloader_activating_plugins_paths global.
98
+ * The $jetpack_autoloader_cached_plugin_paths global will store a cache of the
99
+ * active plugin paths when last changed.
100
+ *
101
+ * @return boolean True if the autoloader must be reset, else false.
102
+ */
103
+ public function should_autoloader_reset() {
104
+ global $jetpack_autoloader_activating_plugins_paths;
105
+ global $jetpack_autoloader_cached_plugin_paths;
106
+
107
+ $plugin_unknown = ! in_array( $this->current_plugin_path, $this->active_plugin_paths, true );
108
+ if ( $plugin_unknown ) {
109
+ if ( ! isset( $jetpack_autoloader_activating_plugins_paths ) ) {
110
+ $jetpack_autoloader_activating_plugins_paths = array();
111
+ }
112
+
113
+ // If the current plugin isn't known, add it to the activating plugins list.
114
+ $jetpack_autoloader_activating_plugins_paths[] = $this->current_plugin_path;
115
+ $this->active_plugin_paths[] = $this->current_plugin_path;
116
+ }
117
+
118
+ $cache_invalidated = $jetpack_autoloader_cached_plugin_paths !== $this->active_plugin_paths;
119
+ if ( $cache_invalidated ) {
120
+ $jetpack_autoloader_cached_plugin_paths = $this->active_plugin_paths;
121
+ }
122
+
123
+ return $plugin_unknown || $cache_invalidated;
124
+ }
125
+
126
+ /**
127
+ * Builds the Version_Autoloader class that is used for autoloading.
128
+ *
129
+ * @return Version_Loader
130
+ */
131
+ public function build_autoloader() {
132
+ $manifest_handler = new Manifest_Handler( $this->active_plugin_paths, $this->version_selector );
133
+
134
+ global $jetpack_packages_psr4;
135
+ $jetpack_packages_psr4 = array();
136
+ $manifest_handler->register_plugin_manifests( 'vendor/composer/jetpack_autoload_psr4.php', $jetpack_packages_psr4 );
137
+
138
+ global $jetpack_packages_classmap;
139
+ $jetpack_packages_classmap = array();
140
+ $manifest_handler->register_plugin_manifests( 'vendor/composer/jetpack_autoload_classmap.php', $jetpack_packages_classmap );
141
+
142
+ global $jetpack_packages_filemap;
143
+ $jetpack_packages_filemap = array();
144
+ $manifest_handler->register_plugin_manifests( 'vendor/composer/jetpack_autoload_filemap.php', $jetpack_packages_filemap );
145
+
146
+ // Store the generated autoloader data in the loader so we can use it.
147
+ return new Version_Loader(
148
+ $this->version_selector,
149
+ $jetpack_packages_classmap,
150
+ $jetpack_packages_psr4,
151
+ $jetpack_packages_filemap
152
+ );
153
+ }
154
+
155
+ /**
156
+ * Updates the spl autoloader chain:
157
+ * - Registers this namespace's autoloader function.
158
+ * - If a v1 autoloader function is registered, moves it to the end of the chain.
159
+ * - Removes any other v2 autoloader functions that have already been registered. This
160
+ * can occur when the autoloader is being reset by an activating plugin.
161
+ */
162
+ public function update_autoloader_chain() {
163
+ spl_autoload_register( __NAMESPACE__ . '\autoloader' );
164
+
165
+ $autoload_chain = spl_autoload_functions();
166
+
167
+ foreach ( $autoload_chain as $autoloader ) {
168
+ if ( ! is_string( $autoloader ) ) {
169
+ /*
170
+ * The Jetpack Autoloader functions are registered as strings, so
171
+ * just continue if $autoloader isn't a string.
172
+ */
173
+ continue;
174
+ }
175
+
176
+ if ( self::V1_AUTOLOADER_NAME === $autoloader ) {
177
+ // Move the v1.* autoloader function to the end of the spl autoloader chain.
178
+ spl_autoload_unregister( $autoloader );
179
+ spl_autoload_register( $autoloader );
180
+
181
+ } elseif (
182
+ self::V2_AUTOLOADER_BASE === substr( $autoloader, 0, strlen( self::V2_AUTOLOADER_BASE ) )
183
+ && __NAMESPACE__ !== substr( $autoloader, 0, strlen( __NAMESPACE__ ) )
184
+ ) {
185
+ // Unregister any other v2.* autoloader functions if they're in the chain.
186
+ spl_autoload_unregister( $autoloader );
187
+ }
188
+ }
189
+ }
190
+ }
vendor/automattic/jetpack-autoloader/src/class-autoloader-locator.php ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /* HEADER */ // phpcs:ignore
3
+
4
+ use \Automattic\Jetpack\Autoloader\AutoloadGenerator;
5
+
6
+ /**
7
+ * This class locates autoloaders.
8
+ */
9
+ class Autoloader_Locator {
10
+
11
+ /**
12
+ * The object for comparing autoloader versions.
13
+ *
14
+ * @var Version_Selector
15
+ */
16
+ private $version_selector;
17
+
18
+ /**
19
+ * The constructor.
20
+ *
21
+ * @param Version_Selector $version_selector The version selector object.
22
+ */
23
+ public function __construct( $version_selector ) {
24
+ $this->version_selector = $version_selector;
25
+ }
26
+
27
+ /**
28
+ * Finds the path to the plugin with the latest autoloader.
29
+ *
30
+ * @param array $plugin_paths An array of plugin paths.
31
+ * @param string $latest_version The latest version reference.
32
+ *
33
+ * @return string|null
34
+ */
35
+ public function find_latest_autoloader( $plugin_paths, &$latest_version ) {
36
+ $latest_plugin = null;
37
+
38
+ foreach ( $plugin_paths as $plugin_path ) {
39
+ $version = $this->get_autoloader_version( $plugin_path );
40
+ if ( ! $this->version_selector->is_version_update_required( $latest_version, $version ) ) {
41
+ continue;
42
+ }
43
+
44
+ $latest_version = $version;
45
+ $latest_plugin = $plugin_path;
46
+ }
47
+
48
+ return $latest_plugin;
49
+ }
50
+
51
+ /**
52
+ * Gets the path to the autoloader.
53
+ *
54
+ * @param string $plugin_path The path to the plugin.
55
+ *
56
+ * @return string
57
+ */
58
+ public function get_autoloader_path( $plugin_path ) {
59
+ return trailingslashit( $plugin_path ) . 'vendor/autoload_packages.php';
60
+ }
61
+
62
+ /**
63
+ * Gets the version for the autoloader.
64
+ *
65
+ * @param string $plugin_path The path to the plugin.
66
+ *
67
+ * @return string|null
68
+ */
69
+ public function get_autoloader_version( $plugin_path ) {
70
+ $classmap = trailingslashit( $plugin_path ) . 'vendor/composer/jetpack_autoload_classmap.php';
71
+ if ( ! file_exists( $classmap ) ) {
72
+ return null;
73
+ }
74
+
75
+ $classmap = require $classmap;
76
+ if ( isset( $classmap[ AutoloadGenerator::class ] ) ) {
77
+ return $classmap[ AutoloadGenerator::class ]['version'];
78
+ }
79
+
80
+ return null;
81
+ }
82
+ }
vendor/automattic/jetpack-autoloader/src/class-manifest-handler.php ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /* HEADER */ // phpcs:ignore
3
+
4
+ /**
5
+ * This class selects the most recent version of a registered path.
6
+ */
7
+ class Manifest_Handler {
8
+
9
+ /**
10
+ * An array of the active plugin paths we want to search.
11
+ *
12
+ * @var array
13
+ */
14
+ private $active_plugin_paths;
15
+
16
+ /**
17
+ * The Version_Selector object.
18
+ *
19
+ * @var Version_Selector
20
+ */
21
+ private $version_selector;
22
+
23
+ /**
24
+ * The constructor.
25
+ *
26
+ * @param array $active_plugin_paths An array of the active plugin paths we want to search.
27
+ * @param Version_Selector $version_selector The Version_Selector object.
28
+ */
29
+ public function __construct( $active_plugin_paths, $version_selector ) {
30
+ $this->active_plugin_paths = $active_plugin_paths;
31
+ $this->version_selector = $version_selector;
32
+ }
33
+
34
+ /**
35
+ * Registers all of the paths in a given manifest.
36
+ *
37
+ * @param string $manifest_path The path that we're loading the manifest from in each plugin.
38
+ * @param array $path_map The path map to add the contents of the manifests to.
39
+ *
40
+ * @return array $path_map The path map we've built using the manifests in each plugin.
41
+ */
42
+ public function register_plugin_manifests( $manifest_path, &$path_map ) {
43
+ $file_paths = array_map(
44
+ function ( $path ) use ( $manifest_path ) {
45
+ return trailingslashit( $path ) . $manifest_path;
46
+ },
47
+ $this->active_plugin_paths
48
+ );
49
+
50
+ foreach ( $file_paths as $path ) {
51
+ $this->register_manifest( $path, $path_map );
52
+ }
53
+
54
+ return $path_map;
55
+ }
56
+
57
+ /**
58
+ * Registers a plugin's manifest file with the path map.
59
+ *
60
+ * @param string $manifest_path The absolute path to the manifest that we're loading.
61
+ * @param array $path_map The path map to add the contents of the manifest to.
62
+ */
63
+ protected function register_manifest( $manifest_path, &$path_map ) {
64
+ if ( ! is_readable( $manifest_path ) ) {
65
+ return;
66
+ }
67
+
68
+ $manifest = require $manifest_path;
69
+ if ( ! is_array( $manifest ) ) {
70
+ return;
71
+ }
72
+
73
+ foreach ( $manifest as $key => $data ) {
74
+ $this->register_record( $key, $data, $path_map );
75
+ }
76
+ }
77
+
78
+ /**
79
+ * Registers an entry from the manifest in the path map.
80
+ *
81
+ * @param string $key The identifier for the entry we're registering.
82
+ * @param array $data The data for the entry we're registering.
83
+ * @param array $path_map The path map to add the contents of the manifest to.
84
+ */
85
+ protected function register_record( $key, $data, &$path_map ) {
86
+ if ( isset( $path_map[ $key ]['version'] ) ) {
87
+ $selected_version = $path_map[ $key ]['version'];
88
+ } else {
89
+ $selected_version = null;
90
+ }
91
+
92
+ if ( $this->version_selector->is_version_update_required( $selected_version, $data['version'] ) ) {
93
+ $path_map[ $key ] = array(
94
+ 'version' => $data['version'],
95
+ 'path' => $data['path'],
96
+ );
97
+ }
98
+ }
99
+ }
vendor/automattic/jetpack-autoloader/src/class-plugins-handler.php ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /* HEADER */ // phpcs:ignore
3
+
4
+ /**
5
+ * This class provides information about the current plugin and the site's active plugins.
6
+ */
7
+ class Plugins_Handler {
8
+
9
+ /**
10
+ * Returns an array containing the paths of all active plugins and all known activating plugins.
11
+ *
12
+ * @return array An array of plugin paths as strings or an empty array.
13
+ */
14
+ public function get_all_active_plugins_paths() {
15
+ global $jetpack_autoloader_activating_plugins_paths;
16
+
17
+ $active_plugins_paths = $this->get_active_plugins_paths();
18
+ $multisite_plugins_paths = $this->get_multisite_plugins_paths();
19
+ $activating_plugins_paths = $this->get_plugins_activating_via_request();
20
+
21
+ return array_unique(
22
+ array_merge(
23
+ $active_plugins_paths,
24
+ $activating_plugins_paths,
25
+ $multisite_plugins_paths,
26
+ (array) $jetpack_autoloader_activating_plugins_paths
27
+ )
28
+ );
29
+ }
30
+
31
+ /**
32
+ * Returns an array containing the paths of the active sitewide plugins in a multisite environment.
33
+ *
34
+ * @return array The paths of the active sitewide plugins or an empty array.
35
+ */
36
+ protected function get_multisite_plugins_paths() {
37
+ $plugin_slugs = is_multisite()
38
+ ? array_keys( get_site_option( 'active_sitewide_plugins', array() ) )
39
+ : array();
40
+
41
+ $plugin_slugs = array_filter( $plugin_slugs, array( $this, 'is_directory_plugin' ) );
42
+ return array_map( array( $this, 'create_plugin_path' ), $plugin_slugs );
43
+ }
44
+
45
+ /**
46
+ * Returns an array containing the paths of the currently active plugins.
47
+ *
48
+ * @return array The active plugins' paths or an empty array.
49
+ */
50
+ protected function get_active_plugins_paths() {
51
+ $plugin_slugs = (array) get_option( 'active_plugins', array() );
52
+ $plugin_slugs = array_filter( $plugin_slugs, array( $this, 'is_directory_plugin' ) );
53
+ return array_map( array( $this, 'create_plugin_path' ), $plugin_slugs );
54
+ }
55
+
56
+ /**
57
+ * Adds the plugin directory from the WP_PLUGIN_DIR constant to the plugin slug.
58
+ *
59
+ * @param string $plugin_slug The plugin slug.
60
+ */
61
+ private function create_plugin_path( $plugin_slug ) {
62
+ $plugin_dir = str_replace( '\\', '/', WP_PLUGIN_DIR );
63
+ return trailingslashit( $plugin_dir ) . substr( $plugin_slug, 0, strrpos( $plugin_slug, '/' ) );
64
+ }
65
+
66
+ /**
67
+ * Ensure the plugin has its own directory and not a single-file plugin.
68
+ *
69
+ * @param string $plugin Plugin name, may be prefixed with "/".
70
+ *
71
+ * @return bool
72
+ */
73
+ public function is_directory_plugin( $plugin ) {
74
+ return strlen( $plugin ) > 1 && false !== strpos( $plugin, '/', 1 );
75
+ }
76
+
77
+ /**
78
+ * Returns an array containing the names of plugins that are activating via a request.
79
+ *
80
+ * @return array An array of names of the activating plugins or an empty array.
81
+ */
82
+ private function get_plugins_activating_via_request() {
83
+
84
+ // phpcs:disable WordPress.Security.NonceVerification.Recommended
85
+ // phpcs:disable WordPress.Security.ValidatedSanitizedInput.MissingUnslash
86
+ // phpcs:disable WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
87
+
88
+ $action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : false;
89
+ $plugin = isset( $_REQUEST['plugin'] ) ? $_REQUEST['plugin'] : false;
90
+ $nonce = isset( $_REQUEST['_wpnonce'] ) ? $_REQUEST['_wpnonce'] : false;
91
+
92
+ /**
93
+ * Note: we're not actually checking the nonce here becase it's too early
94
+ * in the execution. The pluggable functions are not yet loaded to give
95
+ * plugins a chance to plug their versions. Therefore we're doing the bare
96
+ * minimum: checking whether the nonce exists and it's in the right place.
97
+ * The request will fail later if the nonce doesn't pass the check.
98
+ */
99
+
100
+ // In case of a single plugin activation there will be a plugin slug.
101
+ if ( 'activate' === $action && ! empty( $nonce ) ) {
102
+ return array( $this->create_plugin_path( wp_unslash( $plugin ) ) );
103
+ }
104
+
105
+ $plugins = isset( $_REQUEST['checked'] ) ? $_REQUEST['checked'] : array();
106
+
107
+ // In case of bulk activation there will be an array of plugins.
108
+ if ( 'activate-selected' === $action && ! empty( $nonce ) ) {
109
+ $plugin_slugs = array_map( 'wp_unslash', $plugins );
110
+ return array_map( array( $this, 'create_plugin_path' ), $plugin_slugs );
111
+ }
112
+
113
+ // phpcs:enable WordPress.Security.NonceVerification.Recommended
114
+ // phpcs:enable WordPress.Security.ValidatedSanitizedInput.MissingUnslash
115
+ // phpcs:enable WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
116
+ return array();
117
+ }
118
+
119
+ /**
120
+ * Returns the path of the current plugin.
121
+ *
122
+ * @return string The path of the current plugin.
123
+ */
124
+ public function get_current_plugin_path() {
125
+ $vendor_path = str_replace( '\\', '/', dirname( __DIR__ ) );
126
+ // Path to the plugin's folder (the parent of the vendor/jetpack-autoloader folder).
127
+ return substr( $vendor_path, 0, strrpos( $vendor_path, '/' ) );
128
+ }
129
+ }
vendor/automattic/jetpack-autoloader/src/class-version-loader.php ADDED
@@ -0,0 +1,156 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /* HEADER */ // phpcs:ignore
3
+
4
+ /**
5
+ * This class loads other classes based on given parameters.
6
+ */
7
+ class Version_Loader {
8
+
9
+ /**
10
+ * The Version_Selector object.
11
+ *
12
+ * @var Version_Selector
13
+ */
14
+ private $version_selector;
15
+
16
+ /**
17
+ * A map of available classes and their version and file path.
18
+ *
19
+ * @var array
20
+ */
21
+ private $classmap;
22
+
23
+ /**
24
+ * A map of PSR-4 namespaces and their version and directory path.
25
+ *
26
+ * @var array
27
+ */
28
+ private $psr4_map;
29
+
30
+ /**
31
+ * A map of all the files that we should load.
32
+ *
33
+ * @var array
34
+ */
35
+ private $filemap;
36
+
37
+ /**
38
+ * The constructor.
39
+ *
40
+ * @param Version_Selector $version_selector The Version_Selector object.
41
+ * @param array $classmap The verioned classmap to load using.
42
+ * @param array $psr4_map The versioned PSR-4 map to load using.
43
+ * @param array $filemap The versioned filemap to load.
44
+ */
45
+ public function __construct( $version_selector, $classmap, $psr4_map, $filemap ) {
46
+ $this->version_selector = $version_selector;
47
+ $this->classmap = $classmap;
48
+ $this->psr4_map = $psr4_map;
49
+ $this->filemap = $filemap;
50
+ }
51
+
52
+ /**
53
+ * Finds the file path for the given class.
54
+ *
55
+ * @param string $class_name The class to find.
56
+ *
57
+ * @return string|null $file_path The path to the file if found, null if no class was found.
58
+ */
59
+ public function find_class_file( $class_name ) {
60
+ $data = $this->select_newest_file(
61
+ isset( $this->classmap[ $class_name ] ) ? $this->classmap[ $class_name ] : null,
62
+ $this->find_psr4_file( $class_name )
63
+ );
64
+ if ( ! isset( $data ) ) {
65
+ return null;
66
+ }
67
+
68
+ return $data['path'];
69
+ }
70
+
71
+ /**
72
+ * Load all of the files in the filemap.
73
+ */
74
+ public function load_filemap() {
75
+ if ( empty( $this->filemap ) ) {
76
+ return;
77
+ }
78
+
79
+ foreach ( $this->filemap as $file_identifier => $file_data ) {
80
+ if ( empty( $GLOBALS['__composer_autoload_files'][ $file_identifier ] ) ) {
81
+ require_once $file_data['path'];
82
+
83
+ $GLOBALS['__composer_autoload_files'][ $file_identifier ] = true;
84
+ }
85
+ }
86
+ }
87
+
88
+ /**
89
+ * Compares different class sources and returns the newest.
90
+ *
91
+ * @param array|null $classmap_data The classmap class data.
92
+ * @param array|null $psr4_data The PSR-4 class data.
93
+ *
94
+ * @return array|null $data
95
+ */
96
+ private function select_newest_file( $classmap_data, $psr4_data ) {
97
+ if ( ! isset( $classmap_data ) ) {
98
+ return $psr4_data;
99
+ } elseif ( ! isset( $psr4_data ) ) {
100
+ return $classmap_data;
101
+ }
102
+
103
+ if ( $this->version_selector->is_version_update_required( $classmap_data['version'], $psr4_data['version'] ) ) {
104
+ return $psr4_data;
105
+ }
106
+
107
+ return $classmap_data;
108
+ }
109
+
110
+ /**
111
+ * Finds the file for a given class in a PSR-4 namespace.
112
+ *
113
+ * @param string $class_name The class to find.
114
+ *
115
+ * @return array|null $data The version and path path to the file if found, null otherwise.
116
+ */
117
+ private function find_psr4_file( $class_name ) {
118
+ if ( ! isset( $this->psr4_map ) ) {
119
+ return null;
120
+ }
121
+
122
+ // Don't bother with classes that have no namespace.
123
+ $class_index = strrpos( $class_name, '\\' );
124
+ if ( ! $class_index ) {
125
+ return null;
126
+ }
127
+ $class_for_path = str_replace( '\\', '/', $class_name );
128
+
129
+ // Search for the namespace by iteratively cutting off the last segment until
130
+ // we find a match. This allows us to check the most-specific namespaces
131
+ // first as well as minimize the amount of time spent looking.
132
+ for (
133
+ $class_namespace = substr( $class_name, 0, $class_index );
134
+ ! empty( $class_namespace );
135
+ $class_namespace = substr( $class_namespace, 0, strrpos( $class_namespace, '\\' ) )
136
+ ) {
137
+ $namespace = $class_namespace . '\\';
138
+ if ( ! isset( $this->psr4_map[ $namespace ] ) ) {
139
+ continue;
140
+ }
141
+ $data = $this->psr4_map[ $namespace ];
142
+
143
+ foreach ( $data['path'] as $path ) {
144
+ $path .= '/' . substr( $class_for_path, strlen( $namespace ) ) . '.php';
145
+ if ( file_exists( $path ) ) {
146
+ return array(
147
+ 'version' => $data['version'],
148
+ 'path' => $path,
149
+ );
150
+ }
151
+ }
152
+ }
153
+
154
+ return null;
155
+ }
156
+ }
vendor/automattic/jetpack-autoloader/src/class-version-selector.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /* HEADER */ // phpcs:ignore
3
+
4
+ /**
5
+ * Used to select package versions.
6
+ */
7
+ class Version_Selector {
8
+
9
+ /**
10
+ * Checks whether the selected package version should be updated. Composer development
11
+ * package versions ('9999999-dev' or versions that start with 'dev-') are favored
12
+ * when the JETPACK_AUTOLOAD_DEV constant is set to true.
13
+ *
14
+ * @param String $selected_version The currently selected package version.
15
+ * @param String $compare_version The package version that is being evaluated to
16
+ * determine if the version needs to be updated.
17
+ *
18
+ * @return Boolean Returns true if the selected package version should be updated,
19
+ * else false.
20
+ */
21
+ public function is_version_update_required( $selected_version, $compare_version ) {
22
+ $use_dev_versions = defined( 'JETPACK_AUTOLOAD_DEV' ) && JETPACK_AUTOLOAD_DEV;
23
+
24
+ if ( is_null( $selected_version ) ) {
25
+ return true;
26
+ }
27
+
28
+ if ( $use_dev_versions && $this->is_package_version_dev( $selected_version ) ) {
29
+ return false;
30
+ }
31
+
32
+ if ( $this->is_package_version_dev( $compare_version ) ) {
33
+ if ( $use_dev_versions ) {
34
+ return true;
35
+ } else {
36
+ return false;
37
+ }
38
+ }
39
+
40
+ if ( version_compare( $selected_version, $compare_version, '<' ) ) {
41
+ return true;
42
+ }
43
+
44
+ return false;
45
+ }
46
+
47
+ /**
48
+ * Checks whether the given package version is a development version.
49
+ *
50
+ * @param String $version The package version.
51
+ *
52
+ * @return Boolean True if the version is a dev version, else false.
53
+ */
54
+ private function is_package_version_dev( $version ) {
55
+ if ( 'dev-' === substr( $version, 0, 4 ) || '9999999-dev' === $version ) {
56
+ return true;
57
+ }
58
+
59
+ return false;
60
+ }
61
+ }
vendor/automattic/jetpack-autoloader/src/functions.php ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /* HEADER */ // phpcs:ignore
3
+
4
+ /**
5
+ * Used for autoloading jetpack packages.
6
+ *
7
+ * @param string $class_name Class Name to load.
8
+ *
9
+ * @return Boolean Whether the class_name was found in the classmap.
10
+ */
11
+ function autoloader( $class_name ) {
12
+ global $jetpack_autoloader_loader;
13
+ if ( ! isset( $jetpack_autoloader_loader ) ) {
14
+ return false;
15
+ }
16
+
17
+ $file = $jetpack_autoloader_loader->find_class_file( $class_name );
18
+ if ( ! isset( $file ) ) {
19
+ return false;
20
+ }
21
+
22
+ require_once $file;
23
+ return true;
24
+ }
25
+
26
+ /**
27
+ * Finds the latest installed autoloader. If this is the latest autoloader, sets
28
+ * up the classmap and filemap.
29
+ */
30
+ function set_up_autoloader() {
31
+ global $jetpack_autoloader_latest_version;
32
+ global $jetpack_autoloader_loader;
33
+
34
+ require_once __DIR__ . '/class-plugins-handler.php';
35
+ require_once __DIR__ . '/class-version-selector.php';
36
+ require_once __DIR__ . '/class-autoloader-locator.php';
37
+ require_once __DIR__ . '/class-autoloader-handler.php';
38
+
39
+ $plugins_handler = new Plugins_Handler();
40
+ $version_selector = new Version_Selector();
41
+ $autoloader_handler = new Autoloader_Handler(
42
+ $plugins_handler->get_current_plugin_path(),
43
+ $plugins_handler->get_all_active_plugins_paths(),
44
+ new Autoloader_Locator( $version_selector ),
45
+ $version_selector
46
+ );
47
+
48
+ // The autoloader must be reset when a plugin that was previously unknown is detected.
49
+ if ( $autoloader_handler->should_autoloader_reset() ) {
50
+ $jetpack_autoloader_latest_version = null;
51
+ $jetpack_autoloader_loader = null;
52
+ }
53
+
54
+ if ( ! $autoloader_handler->is_latest_autoloader() || isset( $jetpack_autoloader_loader ) ) {
55
+ return;
56
+ }
57
+
58
+ require_once __DIR__ . '/class-manifest-handler.php';
59
+ require_once __DIR__ . '/class-version-loader.php';
60
+
61
+ $jetpack_autoloader_loader = $autoloader_handler->build_autoloader();
62
+ $autoloader_handler->update_autoloader_chain();
63
+
64
+ // Now that the autoloader is ready we can load the files in the filemap safely.
65
+ $jetpack_autoloader_loader->load_filemap();
66
+ }
vendor/{setasign/fpdi-fpdf/LICENSE.txt → baltpeter/internetmarke-php/LICENSE} RENAMED
@@ -1,6 +1,6 @@
1
  The MIT License (MIT)
2
 
3
- Copyright (c) 2020 Setasign GmbH & Co. KG, https://www.setasign.com
4
 
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
  of this software and associated documentation files (the "Software"), to deal
1
  The MIT License (MIT)
2
 
3
+ Copyright (c) 2017 Benjamin Altpeter <hi@bn.al>
4
 
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
  of this software and associated documentation files (the "Software"), to deal
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/Address.php ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ class Address extends ApiResult {
6
+ /**
7
+ * @var string Address supplement
8
+ */
9
+ protected $additional;
10
+ /**
11
+ * @var string Street
12
+ */
13
+ protected $street;
14
+ /**
15
+ * @var string House number
16
+ */
17
+ protected $houseNo;
18
+ /**
19
+ * @var string Postal code (ZIP code)
20
+ */
21
+ protected $zip;
22
+ /**
23
+ * @var string City
24
+ */
25
+ protected $city;
26
+ /**
27
+ * @var string 3-digit ISO country code
28
+ */
29
+ protected $country;
30
+
31
+ /**
32
+ * Address constructor.
33
+ *
34
+ * @param string $additional
35
+ * @param string $street
36
+ * @param string $house_no
37
+ * @param string $zip
38
+ * @param string $city
39
+ * @param string $country
40
+ */
41
+ public function __construct($additional, $street, $house_no, $zip, $city, $country) {
42
+ $this->setAdditional($additional);
43
+ $this->setStreet($street);
44
+ $this->setHouseNo($house_no);
45
+ $this->setZip($zip);
46
+ $this->setCity($city);
47
+ $this->setCountry($country);
48
+ }
49
+
50
+ /**
51
+ * @return string
52
+ */
53
+ public function getAdditional() {
54
+ return $this->additional;
55
+ }
56
+
57
+ /**
58
+ * @param string $additional
59
+ */
60
+ public function setAdditional($additional) {
61
+ $this->additional = $additional;
62
+ }
63
+
64
+ /**
65
+ * @return string
66
+ */
67
+ public function getStreet() {
68
+ return $this->street;
69
+ }
70
+
71
+ /**
72
+ * @param string $street
73
+ */
74
+ public function setStreet($street) {
75
+ $this->street = $street;
76
+ }
77
+
78
+ /**
79
+ * @return string
80
+ */
81
+ public function getHouseNo() {
82
+ return $this->houseNo;
83
+ }
84
+
85
+ /**
86
+ * @param string $houseNo
87
+ */
88
+ public function setHouseNo($houseNo) {
89
+ $this->houseNo = $houseNo;
90
+ }
91
+
92
+ /**
93
+ * @return string
94
+ */
95
+ public function getZip() {
96
+ return $this->zip;
97
+ }
98
+
99
+ /**
100
+ * @param string $zip
101
+ */
102
+ public function setZip($zip) {
103
+ $this->zip = $zip;
104
+ }
105
+
106
+ /**
107
+ * @return string
108
+ */
109
+ public function getCity() {
110
+ return $this->city;
111
+ }
112
+
113
+ /**
114
+ * @param string $city
115
+ */
116
+ public function setCity($city) {
117
+ $this->city = $city;
118
+ }
119
+
120
+ /**
121
+ * @return string
122
+ */
123
+ public function getCountry() {
124
+ return $this->country;
125
+ }
126
+
127
+ /**
128
+ * @param string $country
129
+ */
130
+ public function setCountry($country) {
131
+ $this->country = $country;
132
+ }
133
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/AddressBinding.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ use function DeepCopy\deep_copy;
6
+
7
+ class AddressBinding extends ApiResult {
8
+ /**
9
+ * @var NamedAddress The sender's address
10
+ */
11
+ protected $sender;
12
+ /**
13
+ * @var NamedAddress The recipient's address
14
+ */
15
+ protected $receiver;
16
+
17
+ /**
18
+ * AddressBinding constructor.
19
+ *
20
+ * @param NamedAddress $sender_address
21
+ * @param NamedAddress $receiver_address
22
+ */
23
+ public function __construct($sender_address, $receiver_address) {
24
+ $this->setSender($sender_address);
25
+ $this->setReceiver($receiver_address);
26
+ }
27
+
28
+ /**
29
+ * @return NamedAddress
30
+ */
31
+ public function getSender() {
32
+ return $this->sender;
33
+ }
34
+
35
+ /**
36
+ * @param NamedAddress $sender
37
+ */
38
+ public function setSender($sender) {
39
+ $this->sender = deep_copy($sender);
40
+ }
41
+
42
+ /**
43
+ * @return NamedAddress
44
+ */
45
+ public function getReceiver() {
46
+ return $this->receiver;
47
+ }
48
+
49
+ /**
50
+ * @param NamedAddress $receiver
51
+ */
52
+ public function setReceiver($receiver) {
53
+ $this->receiver = deep_copy($receiver);
54
+ }
55
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/ApiResult.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ abstract class ApiResult {
6
+ public static function fromStdObject($std_object) {
7
+ $class_name = get_called_class();
8
+ // You might call this a rather convoluted way of achieving the intended result...
9
+ $object = new $class_name(...array_fill(0, ((new \ReflectionMethod($class_name, '__construct'))->getNumberOfParameters()), null));
10
+
11
+ if($std_object) {
12
+ foreach($std_object as $property => $value) {
13
+ // taken from https://github.com/doctrine/inflector by the Doctrine Project, Inflector::tableize()
14
+ $snake_property = mb_strtolower(preg_replace('~(?<=\\w)([A-Z])~u', '_$1', $property));
15
+
16
+ if(is_object($value)) {
17
+ // taken from https://github.com/doctrine/inflector by the Doctrine Project, Inflector::classify()
18
+ $value_class_name = __NAMESPACE__ . '\\' . str_replace([' ', '_', '-'], '', ucwords($property, ' _-'));
19
+ if(class_exists($value_class_name) && is_subclass_of($value_class_name, get_class())) {
20
+ $value = $value_class_name::fromStdObject($value);
21
+ }
22
+ }
23
+
24
+ if(property_exists(get_called_class(), $property)) {
25
+ $object->$property = $value;
26
+ } elseif(property_exists(get_called_class(), $snake_property)) {
27
+ $object->$snake_property = $value;
28
+ }
29
+ }
30
+ }
31
+
32
+ return $object;
33
+ }
34
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/CompanyName.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ use function DeepCopy\deep_copy;
6
+
7
+ class CompanyName {
8
+ /**
9
+ * @var string Company name
10
+ */
11
+ protected $company;
12
+ /**
13
+ * @var PersonName Name of the company's contact person
14
+ */
15
+ protected $personName;
16
+
17
+ /**
18
+ * CompanyName constructor.
19
+ *
20
+ * @param string $company
21
+ * @param PersonName $person_name
22
+ */
23
+ public function __construct($company, $person_name) {
24
+ $this->setCompany($company);
25
+ $this->setPersonName($person_name);
26
+ }
27
+
28
+ /**
29
+ * @return string
30
+ */
31
+ public function getCompany() {
32
+ return $this->company;
33
+ }
34
+
35
+ /**
36
+ * @param string $company
37
+ */
38
+ public function setCompany($company) {
39
+ $this->company = $company;
40
+ }
41
+
42
+ /**
43
+ * @return PersonName
44
+ */
45
+ public function getPersonName() {
46
+ return $this->personName;
47
+ }
48
+
49
+ /**
50
+ * @param PersonName $personName
51
+ */
52
+ public function setPersonName($personName) {
53
+ $this->personName = deep_copy($personName);
54
+ }
55
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/LabelCount.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ class LabelCount extends ApiResult {
6
+ /**
7
+ * @var int Number of label items in the x direction
8
+ */
9
+ protected $labelX;
10
+ /**
11
+ * @var int Number of label items in the y direction
12
+ */
13
+ protected $labelY;
14
+
15
+ /**
16
+ * LabelCount constructor.
17
+ *
18
+ * @param int $label_x Number of label items in the x direction
19
+ * @param int $label_y Number of label items in the y direction
20
+ */
21
+ public function __construct($label_x, $label_y) {
22
+ $this->setLabelX($label_x);
23
+ $this->setLabelY($label_y);
24
+ }
25
+
26
+ /**
27
+ * @return int Number of label items in the x direction
28
+ */
29
+ public function getLabelX() {
30
+ return $this->labelX;
31
+ }
32
+
33
+ /**
34
+ * @param int $labelX Number of label items in the x direction
35
+ */
36
+ public function setLabelX($labelX) {
37
+ $this->labelX = $labelX;
38
+ }
39
+
40
+ /**
41
+ * @return int Number of label items in the y direction
42
+ */
43
+ public function getLabelY() {
44
+ return $this->labelY;
45
+ }
46
+
47
+ /**
48
+ * @param int $labelY Number of label items in the y direction
49
+ */
50
+ public function setLabelY($labelY) {
51
+ $this->labelY = $labelY;
52
+ }
53
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/LabelSpacing.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ class LabelSpacing extends ApiResult {
6
+ /**
7
+ * @var int Spacing between labels in the x direction in millimeters
8
+ */
9
+ protected $x;
10
+ /**
11
+ * @var int Spacing between labels in the y direction in millimeters
12
+ */
13
+ protected $y;
14
+
15
+ /**
16
+ * Size constructor.
17
+ *
18
+ * @param int $x Spacing between labels in the x direction in millimeters
19
+ * @param int $y Spacing between labels in the y direction in millimeters
20
+ */
21
+ public function __construct($x, $y) {
22
+ $this->setX($x);
23
+ $this->setY($y);
24
+ }
25
+
26
+ /**
27
+ * @return int Spacing between labels in the x direction in millimeters
28
+ */
29
+ public function getX() {
30
+ return $this->x;
31
+ }
32
+
33
+ /**
34
+ * @param int $x Spacing between labels in the x direction in millimeters
35
+ */
36
+ public function setX($x) {
37
+ $this->x = $x;
38
+ }
39
+
40
+ /**
41
+ * @return int Spacing between labels in the y direction in millimeters
42
+ */
43
+ public function getY() {
44
+ return $this->y;
45
+ }
46
+
47
+ /**
48
+ * @param int $y Spacing between labels in the y direction in millimeters
49
+ */
50
+ public function setY($y) {
51
+ $this->y = $y;
52
+ }
53
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/Margin.php ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ class Margin extends ApiResult {
6
+ /**
7
+ * @var int Inner top margin size of the page format in millimeters
8
+ */
9
+ protected $top;
10
+ /**
11
+ * @var int Inner bottom margin size of the page format in millimeters
12
+ */
13
+ protected $bottom;
14
+ /**
15
+ * @var int Inner left margin size of the page format in millimeters
16
+ */
17
+ protected $left;
18
+ /**
19
+ * @var int Inner right margin size of the page format in millimeters
20
+ */
21
+ protected $right;
22
+
23
+ /**
24
+ * Margin constructor.
25
+ *
26
+ * @param int $top Inner top margin size of the page format in millimeters
27
+ * @param int $bottom Inner bottom margin size of the page format in millimeters
28
+ * @param int $left Inner left margin size of the page format in millimeters
29
+ * @param int $right Inner right margin size of the page format in millimeters
30
+ */
31
+ public function __construct($top, $bottom, $left, $right) {
32
+ $this->setTop($top);
33
+ $this->setBottom($bottom);
34
+ $this->setLeft($left);
35
+ $this->setRight($right);
36
+ }
37
+
38
+ /**
39
+ * @return int Inner top margin size of the page format in millimeters
40
+ */
41
+ public function getTop() {
42
+ return $this->top;
43
+ }
44
+
45
+ /**
46
+ * @param int $top Inner top margin size of the page format in millimeters
47
+ */
48
+ public function setTop($top) {
49
+ $this->top = $top;
50
+ }
51
+
52
+ /**
53
+ * @return int Inner bottom margin size of the page format in millimeters
54
+ */
55
+ public function getBottom() {
56
+ return $this->bottom;
57
+ }
58
+
59
+ /**
60
+ * @param int $bottom Inner bottom margin size of the page format in millimeters
61
+ */
62
+ public function setBottom($bottom) {
63
+ $this->bottom = $bottom;
64
+ }
65
+
66
+ /**
67
+ * @return int Inner left margin size of the page format in millimeters
68
+ */
69
+ public function getLeft() {
70
+ return $this->left;
71
+ }
72
+
73
+ /**
74
+ * @param int $left Inner left margin size of the page format in millimeters
75
+ */
76
+ public function setLeft($left) {
77
+ $this->left = $left;
78
+ }
79
+
80
+ /**
81
+ * @return int Inner right margin size of the page format in millimeters
82
+ */
83
+ public function getRight() {
84
+ return $this->right;
85
+ }
86
+
87
+ /**
88
+ * @param int $right Inner right margin size of the page format in millimeters
89
+ */
90
+ public function setRight($right) {
91
+ $this->right = $right;
92
+ }
93
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/Name.php ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ use function DeepCopy\deep_copy;
6
+
7
+ class Name extends ApiResult {
8
+ /**
9
+ * @var PersonName First name and last name of a natural person
10
+ * (The parameters name and companyName are mutually exclusive, i.e., if a companyName is used, there must be no details on name.)
11
+ */
12
+ protected $personName;
13
+ /**
14
+ * @var CompanyName Company name and contact person
15
+ * (The parameters name and companyName are mutually exclusive, i.e., if a companyName is used, there must be no details on name.)
16
+ */
17
+ protected $companyName;
18
+
19
+ /**
20
+ * Name constructor.
21
+ *
22
+ * @param PersonName $person_name
23
+ * @param CompanyName $company_name
24
+ */
25
+ public function __construct($person_name, $company_name) {
26
+ $this->setPersonName($person_name);
27
+ $this->setCompanyName($company_name);
28
+ }
29
+
30
+ /**
31
+ * @return PersonName
32
+ */
33
+ public function getPersonName() {
34
+ return $this->personName;
35
+ }
36
+
37
+ /**
38
+ * @param PersonName $personName
39
+ */
40
+ public function setPersonName($personName) {
41
+ $this->personName = deep_copy($personName);
42
+ }
43
+
44
+ /**
45
+ * @return CompanyName
46
+ */
47
+ public function getCompanyName() {
48
+ return $this->companyName;
49
+ }
50
+
51
+ /**
52
+ * @param CompanyName $companyName
53
+ */
54
+ public function setCompanyName($companyName) {
55
+ $this->companyName = deep_copy($companyName);
56
+ }
57
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/NamedAddress.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ use function DeepCopy\deep_copy;
6
+
7
+ class NamedAddress extends ApiResult {
8
+ /**
9
+ * @var Name A person or company name
10
+ */
11
+ protected $name;
12
+ /**
13
+ * @var Address An address
14
+ */
15
+ protected $address;
16
+
17
+ /**
18
+ * NamedAddress constructor.
19
+ *
20
+ * @param Name $name
21
+ * @param Address $address
22
+ */
23
+ public function __construct(Name $name, Address $address) {
24
+ $this->setName($name);
25
+ $this->setAddress($address);
26
+ }
27
+
28
+ /**
29
+ * @return Name
30
+ */
31
+ public function getName() {
32
+ return $this->name;
33
+ }
34
+
35
+ /**
36
+ * @param Name $name
37
+ */
38
+ public function setName($name) {
39
+ $this->name = deep_copy($name);
40
+ }
41
+
42
+ /**
43
+ * @return Address
44
+ */
45
+ public function getAddress() {
46
+ return $this->address;
47
+ }
48
+
49
+ /**
50
+ * @param Address $address
51
+ */
52
+ public function setAddress($address) {
53
+ $this->address = deep_copy($address);
54
+ }
55
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/OrderItem.php ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ use function DeepCopy\deep_copy;
6
+
7
+ class OrderItem extends ApiResult {
8
+ /**
9
+ * @var int Deutsche Post’s internal product ID for the selected product
10
+ */
11
+ protected $productCode;
12
+ /**
13
+ * @var int ID of the image to be printed
14
+ */
15
+ protected $imageId;
16
+ /**
17
+ * @var AddressBinding Optional address details for Internet stamps in the address zone
18
+ */
19
+ protected $address;
20
+ /**
21
+ * @var Position Optional specification of the position of the Internet stamp on the PDF document
22
+ */
23
+ protected $position;
24
+ /**
25
+ * @var string Layout of the Internet stamp (possible values: 'AddressZone' and 'FrankingZone')
26
+ */
27
+ protected $voucherLayout;
28
+
29
+ /**
30
+ * OrderItem constructor.
31
+ *
32
+ * @param int $product_code
33
+ * @param int $image_id
34
+ * @param AddressBinding $address_binding
35
+ * @param Position $position
36
+ * @param string $voucher_layout
37
+ */
38
+ public function __construct($product_code, $image_id, $address_binding, $position, $voucher_layout) {
39
+ $this->setProductCode($product_code);
40
+ $this->setImageId($image_id);
41
+ $this->setAddress($address_binding);
42
+ $this->setPosition($position);
43
+ $this->setVoucherLayout($voucher_layout);
44
+ }
45
+
46
+ /**
47
+ * @return int
48
+ */
49
+ public function getProductCode() {
50
+ return $this->productCode;
51
+ }
52
+
53
+ /**
54
+ * @param int $productCode
55
+ */
56
+ public function setProductCode($productCode) {
57
+ $this->productCode = $productCode;
58
+ }
59
+
60
+ /**
61
+ * @return int
62
+ */
63
+ public function getImageId() {
64
+ return $this->imageId;
65
+ }
66
+
67
+ /**
68
+ * @param int $imageId
69
+ */
70
+ public function setImageId($imageId) {
71
+ $this->imageId = $imageId;
72
+ }
73
+
74
+ /**
75
+ * @return AddressBinding
76
+ */
77
+ public function getAddress() {
78
+ return $this->address;
79
+ }
80
+
81
+ /**
82
+ * @param AddressBinding $address
83
+ */
84
+ public function setAddress($address) {
85
+ $this->address = deep_copy($address);
86
+ }
87
+
88
+ /**
89
+ * @return Position
90
+ */
91
+ public function getPosition() {
92
+ return $this->position;
93
+ }
94
+
95
+ /**
96
+ * @param Position $position
97
+ */
98
+ public function setPosition($position) {
99
+ $this->position = deep_copy($position);
100
+ }
101
+
102
+ /**
103
+ * @return string
104
+ */
105
+ public function getVoucherLayout() {
106
+ return $this->voucherLayout;
107
+ }
108
+
109
+ /**
110
+ * @param string $voucherLayout
111
+ */
112
+ public function setVoucherLayout($voucherLayout) {
113
+ $this->voucherLayout = $voucherLayout;
114
+ }
115
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/PageFormat.php ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ use function DeepCopy\deep_copy;
6
+
7
+ class PageFormat extends ApiResult {
8
+ /**
9
+ * @var int Page format ID
10
+ */
11
+ protected $id;
12
+ /**
13
+ * @var bool true if addresses can be printed on the franking marks using the page format
14
+ */
15
+ protected $isAddressPossible;
16
+ /**
17
+ * @var bool true if image can be printed on the franking marks using the page format
18
+ */
19
+ protected $isImagePossible;
20
+ /**
21
+ * @var string Name of the page format (e.g. 'DIN A4 normal paper' or 'letter C5 162 x 229')
22
+ */
23
+ protected $name;
24
+ /**
25
+ * @var string Description of the page format
26
+ */
27
+ protected $description;
28
+ /**
29
+ * @var string Specification of the print medium (possible values: 'REGULARPAGE', 'ENVELOPE', 'LABELPRINTER', 'LABELPAGE')
30
+ */
31
+ protected $pageType;
32
+ /**
33
+ * @var PageLayout Description of the page layout in a structured format
34
+ */
35
+ protected $pageLayout;
36
+
37
+ /**
38
+ * PageFormat constructor.
39
+ *
40
+ * @param int $id
41
+ * @param bool $is_address_possible
42
+ * @param bool $is_image_possible
43
+ * @param string $name
44
+ * @param string $description
45
+ * @param string $page_type
46
+ * @param PageLayout $page_layout
47
+ */
48
+ public function __construct($id, $is_address_possible, $is_image_possible, $name, $description, $page_type, $page_layout) {
49
+ $this->setId($id);
50
+ $this->setIsAddressPossible($is_address_possible);
51
+ $this->setIsImagePossible($is_image_possible);
52
+ $this->setName($name);
53
+ $this->setDescription($description);
54
+ $this->setPageType($page_type);
55
+ $this->setPageLayout($page_layout);
56
+ }
57
+
58
+ /**
59
+ * @return int
60
+ */
61
+ public function getId() {
62
+ return $this->id;
63
+ }
64
+
65
+ /**
66
+ * @param int $id
67
+ */
68
+ public function setId($id) {
69
+ $this->id = $id;
70
+ }
71
+
72
+ /**
73
+ * @return boolean
74
+ */
75
+ public function isIsAddressPossible() {
76
+ return $this->isAddressPossible;
77
+ }
78
+
79
+ /**
80
+ * @param boolean $isAddressPossible
81
+ */
82
+ public function setIsAddressPossible($isAddressPossible) {
83
+ $this->isAddressPossible = $isAddressPossible;
84
+ }
85
+
86
+ /**
87
+ * @return boolean
88
+ */
89
+ public function isIsImagePossible() {
90
+ return $this->isImagePossible;
91
+ }
92
+
93
+ /**
94
+ * @param boolean $isImagePossible
95
+ */
96
+ public function setIsImagePossible($isImagePossible) {
97
+ $this->isImagePossible = $isImagePossible;
98
+ }
99
+
100
+ /**
101
+ * @return string
102
+ */
103
+ public function getName() {
104
+ return $this->name;
105
+ }
106
+
107
+ /**
108
+ * @param string $name
109
+ */
110
+ public function setName($name) {
111
+ $this->name = $name;
112
+ }
113
+
114
+ /**
115
+ * @return string
116
+ */
117
+ public function getDescription() {
118
+ return $this->description;
119
+ }
120
+
121
+ /**
122
+ * @param string $description
123
+ */
124
+ public function setDescription($description) {
125
+ $this->description = $description;
126
+ }
127
+
128
+ /**
129
+ * @return string
130
+ */
131
+ public function getPageType() {
132
+ return $this->pageType;
133
+ }
134
+
135
+ /**
136
+ * @param string $pageType
137
+ */
138
+ public function setPageType($pageType) {
139
+ $this->pageType = $pageType;
140
+ }
141
+
142
+ /**
143
+ * @return PageLayout
144
+ */
145
+ public function getPageLayout() {
146
+ return $this->pageLayout;
147
+ }
148
+
149
+ /**
150
+ * @param PageLayout $pageLayout
151
+ */
152
+ public function setPageLayout($pageLayout) {
153
+ $this->pageLayout = deep_copy($pageLayout);
154
+ }
155
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/PageLayout.php ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ use function DeepCopy\deep_copy;
6
+
7
+ class PageLayout extends ApiResult {
8
+ /**
9
+ * @var Size Dimension of the page format in millimeters in the x and y direction
10
+ */
11
+ protected $size;
12
+ /**
13
+ * @var string Page orientation (possible values: 'PORTRAIT' and 'LANDSCAPE')
14
+ */
15
+ protected $orientation;
16
+ /**
17
+ * @var LabelSpacing Spacing between labels in millimeters
18
+ */
19
+ protected $labelSpacing;
20
+ /**
21
+ * @var LabelCount Number of label items in the x and y direction
22
+ */
23
+ protected $labelCount;
24
+ /**
25
+ * @var Margin Inner margin size of the page format in millimeters
26
+ */
27
+ protected $margin;
28
+
29
+ /**
30
+ * PageLayout constructor.
31
+ *
32
+ * @param Size $size Dimension of the page format in millimeters in the x and y direction
33
+ * @param string $orientation Page orientation (possible values: 'PORTRAIT' and 'LANDSCAPE')
34
+ * @param LabelSpacing $label_spacing Spacing between labels in millimeters
35
+ * @param LabelCount $label_count Number of label items in the x and y direction
36
+ * @param Margin $margin Inner margin size of the page format in millimeters
37
+ */
38
+ public function __construct($size, $orientation, $label_spacing, $label_count, $margin) {
39
+ $this->setSize($size);
40
+ $this->setOrientation($orientation);
41
+ $this->setLabelSpacing($label_spacing);
42
+ $this->setLabelCount($label_count);
43
+ $this->setMargin($margin);
44
+ }
45
+
46
+ /**
47
+ * @return Size Dimension of the page format in millimeters in the x and y direction
48
+ */
49
+ public function getSize() {
50
+ return $this->size;
51
+ }
52
+
53
+ /**
54
+ * @param Size $size Dimension of the page format in millimeters in the x and y direction
55
+ */
56
+ public function setSize($size) {
57
+ $this->size = deep_copy($size);
58
+ }
59
+
60
+ /**
61
+ * @return string Page orientation (possible values: 'PORTRAIT' and 'LANDSCAPE')
62
+ */
63
+ public function getOrientation() {
64
+ return $this->orientation;
65
+ }
66
+
67
+ /**
68
+ * @param string $orientation Page orientation (possible values: 'PORTRAIT' and 'LANDSCAPE')
69
+ */
70
+ public function setOrientation($orientation) {
71
+ $this->orientation = $orientation;
72
+ }
73
+
74
+ /**
75
+ * @return LabelSpacing Spacing between labels in millimeters
76
+ */
77
+ public function getLabelSpacing() {
78
+ return $this->labelSpacing;
79
+ }
80
+
81
+ /**
82
+ * @param LabelSpacing $labelSpacing Spacing between labels in millimeters
83
+ */
84
+ public function setLabelSpacing($labelSpacing) {
85
+ $this->labelSpacing = deep_copy($labelSpacing);
86
+ }
87
+
88
+ /**
89
+ * @return LabelCount Number of label items in the x and y direction
90
+ */
91
+ public function getLabelCount() {
92
+ return $this->labelCount;
93
+ }
94
+
95
+ /**
96
+ * @param LabelCount $labelCount Number of label items in the x and y direction
97
+ */
98
+ public function setLabelCount($labelCount) {
99
+ $this->labelCount = deep_copy($labelCount);
100
+ }
101
+
102
+ /**
103
+ * @return Margin Inner margin size of the page format in millimeters
104
+ */
105
+ public function getMargin() {
106
+ return $this->margin;
107
+ }
108
+
109
+ /**
110
+ * @param Margin $margin Inner margin size of the page format in millimeters
111
+ */
112
+ public function setMargin($margin) {
113
+ $this->margin = deep_copy($margin);
114
+ }
115
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/PartnerInformation.php ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ class PartnerInformation {
6
+ /**
7
+ * @var string The partner's ID as supplied by DPDHL
8
+ */
9
+ protected $partnerId;
10
+ /**
11
+ * @var int The secret to be used for the signature (usually 1)
12
+ */
13
+ protected $keyPhase;
14
+ /**
15
+ * @var string A secret (and static) key supplied to the partner by DPDHL
16
+ */
17
+ protected $schlusselDpwnMeinmarktplatz;
18
+
19
+ /**
20
+ * PartnerInformation constructor.
21
+ *
22
+ * @param string $partner_id The partner's ID as supplied by DPDHL
23
+ * @param int $key_phase The secret to be used for the signature (usually 1)
24
+ * @param string $schlussel_dpwn_meinmarktplatz A secret (and static) key supplied to the partner by DPDHL
25
+ */
26
+ public function __construct($partner_id, $key_phase, $schlussel_dpwn_meinmarktplatz) {
27
+ $this->setPartnerId($partner_id);
28
+ $this->setKeyPhase($key_phase);
29
+ $this->setSchlusselDpwnMeinmarktplatz($schlussel_dpwn_meinmarktplatz);
30
+ }
31
+
32
+ /**
33
+ * @return string The partner's ID as supplied by DPDHL
34
+ */
35
+ public function getPartnerId() {
36
+ return $this->partnerId;
37
+ }
38
+
39
+ /**
40
+ * @param string $partnerId The partner's ID as supplied by DPDHL
41
+ */
42
+ public function setPartnerId($partnerId) {
43
+ $this->partnerId = $partnerId;
44
+ }
45
+
46
+ /**
47
+ * @return int The secret to be used for the signature (usually 1)
48
+ */
49
+ public function getKeyPhase() {
50
+ return $this->keyPhase;
51
+ }
52
+
53
+ /**
54
+ * @param int $keyPhase The secret to be used for the signature (usually 1)
55
+ */
56
+ public function setKeyPhase($keyPhase) {
57
+ $this->keyPhase = $keyPhase;
58
+ }
59
+
60
+ /**
61
+ * @return string A secret (and static) key supplied to the partner by DPDHL
62
+ */
63
+ public function getSchlusselDpwnMeinmarktplatz() {
64
+ return $this->schlusselDpwnMeinmarktplatz;
65
+ }
66
+
67
+ /**
68
+ * @param string $schlusselDpwnMeinmarktplatz A secret (and static) key supplied to the partner by DPDHL
69
+ */
70
+ public function setSchlusselDpwnMeinmarktplatz($schlusselDpwnMeinmarktplatz) {
71
+ $this->schlusselDpwnMeinmarktplatz = $schlusselDpwnMeinmarktplatz;
72
+ }
73
+
74
+ /**
75
+ * @return string The signature to be appended to the request header
76
+ */
77
+ protected function calculateSignature() {
78
+ return substr(md5($this->partnerId . '::' . date('dmY-His') . '::' . $this->keyPhase . '::' . $this->schlusselDpwnMeinmarktplatz), 0, 8);
79
+ }
80
+
81
+ /**
82
+ * @return array An array of SOAP headers to authenticate the request with the Internetmarke server. Valid for four minutes from `REQUEST_TIMESTAMP`
83
+ */
84
+ public function soapHeaderArray() {
85
+ date_default_timezone_set('Europe/Berlin'); // The DPAG server requires a date from the German timezone
86
+ return array(
87
+ new \SoapHeader('https://internetmarke.deutschepost.de', 'PARTNER_ID', $this->partnerId),
88
+ new \SoapHeader('https://internetmarke.deutschepost.de', 'REQUEST_TIMESTAMP', date('dmY-His')),
89
+ new \SoapHeader('https://internetmarke.deutschepost.de', 'KEY_PHASE', $this->keyPhase),
90
+ new \SoapHeader('https://internetmarke.deutschepost.de', 'PARTNER_SIGNATURE', $this->calculateSignature())
91
+ );
92
+ }
93
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/PersonName.php ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ class PersonName extends ApiResult {
6
+ /**
7
+ * @var string
8
+ */
9
+ protected $salutation;
10
+ /**
11
+ * @var string
12
+ */
13
+ protected $title;
14
+ /**
15
+ * @var string
16
+ */
17
+ protected $firstname;
18
+ /**
19
+ * @var string
20
+ */
21
+ protected $lastname;
22
+
23
+ /**
24
+ * PersonName constructor.
25
+ *
26
+ * @param string $salutation
27
+ * @param string $title
28
+ * @param string $firstname
29
+ * @param string $lastname
30
+ */
31
+ public function __construct($salutation, $title, $firstname, $lastname) {
32
+ $this->setSalutation($salutation);
33
+ $this->setTitle($title);
34
+ $this->setFirstname($firstname);
35
+ $this->setLastname($lastname);
36
+ }
37
+
38
+ /**
39
+ * @return string
40
+ */
41
+ public function getSalutation() {
42
+ return $this->salutation;
43
+ }
44
+
45
+ /**
46
+ * @param string $salutation
47
+ */
48
+ public function setSalutation($salutation) {
49
+ $this->salutation = $salutation;
50
+ }
51
+
52
+ /**
53
+ * @return string
54
+ */
55
+ public function getTitle() {
56
+ return $this->title;
57
+ }
58
+
59
+ /**
60
+ * @param string $title
61
+ */
62
+ public function setTitle($title) {
63
+ $this->title = $title;
64
+ }
65
+
66
+ /**
67
+ * @return string
68
+ */
69
+ public function getFirstname() {
70
+ return $this->firstname;
71
+ }
72
+
73
+ /**
74
+ * @param string $firstname
75
+ */
76
+ public function setFirstname($firstname) {
77
+ $this->firstname = $firstname;
78
+ }
79
+
80
+ /**
81
+ * @return string
82
+ */
83
+ public function getLastname() {
84
+ return $this->lastname;
85
+ }
86
+
87
+ /**
88
+ * @param string $lastname
89
+ */
90
+ public function setLastname($lastname) {
91
+ $this->lastname = $lastname;
92
+ }
93
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/PortokasseCharge.php ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ /**
6
+ * Helper class to create form
7
+ * for loading the portokasse
8
+ */
9
+ class PortokasseCharge
10
+ {
11
+ /**
12
+ * @var string Generated during authentification in service class
13
+ */
14
+ protected $user_token;
15
+ /**
16
+ * @var datetime in format dmY-His. The form is only valid for the next 4 minutes
17
+ */
18
+ protected $time;
19
+ /**
20
+ * @var string url where user is redirected after successfully loading the portokasse
21
+ */
22
+ protected $success_url;
23
+ /**
24
+ * @var string url where user is redirected after failing to load the portokasse
25
+ */
26
+ protected $cancel_url;
27
+ /**
28
+ * @var integer number of eurocents of the balance of the portokasse after payment.
29
+ * Example: When user has an actual balance of 400 eurocents on his portokasse
30
+ * and he submits this form with $balance=1500 he will be asked
31
+ * to pay 1100. However, he has to pay at least 1000 eurocents regardless of his current balance.
32
+ */
33
+ protected $balance;
34
+ /**
35
+ * @var ParterInformation
36
+ */
37
+ protected $partner_information;
38
+
39
+ /**
40
+ * [__construct description]
41
+ * @param ParterInformation $parter_information
42
+ * @param string $user_token Unique user ID
43
+ * @param string $success_url redirect url after success
44
+ * @param string $cancel_url redirect url after failure
45
+ * @param integer $balance balance in eurocents of the portokasse after payment
46
+ */
47
+ public function __construct(PartnerInformation $partner_information, $user_token, $success_url, $cancel_url, $balance = 1000)
48
+ {
49
+ $this->user_token = $user_token;
50
+ $this->time = date('dmY-His');
51
+ $this->success_url = $success_url;
52
+ $this->cancel_url = $cancel_url;
53
+ $this->balance = $balance;
54
+ $this->partner_information = $partner_information;
55
+ }
56
+
57
+ /**
58
+ *
59
+ * @return string
60
+ */
61
+ public function getSignature()
62
+ {
63
+ return substr(md5($this->partner_information->getPartnerId() . '::' . $this->time . '::' . $this->success_url . '::' . $this->cancel_url . '::' . $this->user_token . '::' . $this->balance . '::' . $this->partner_information->getSchlusselDpwnMeinmarktplatz()), 0, 8);
64
+ }
65
+
66
+ /**
67
+ *
68
+ * @return string
69
+ */
70
+ public function getUserToken()
71
+ {
72
+ return $this->user_token;
73
+ }
74
+
75
+ public function getRequestTimestamp() {
76
+ return $this->time;
77
+ }
78
+
79
+ /**
80
+ *
81
+ * @return string
82
+ */
83
+ public function getSuccessUrl()
84
+ {
85
+ return $this->success_url;
86
+ }
87
+
88
+ /**
89
+ *
90
+ * @return string
91
+ */
92
+ public function getCancelUrl()
93
+ {
94
+ return $this->cancel_url;
95
+ }
96
+
97
+ /**
98
+ *
99
+ * @return integer
100
+ */
101
+ public function getBalance()
102
+ {
103
+ return $this->balance;
104
+ }
105
+
106
+
107
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/Position.php ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ class Position {
6
+ /**
7
+ * @var int Column on the page
8
+ */
9
+ protected $labelX;
10
+ /**
11
+ * @var int Row on the page
12
+ */
13
+ protected $labelY;
14
+ /**
15
+ * @var int Page number
16
+ */
17
+ protected $page;
18
+
19
+ /**
20
+ * Position constructor.
21
+ *
22
+ * @param int $label_x
23
+ * @param int $label_y
24
+ * @param int $page
25
+ */
26
+ public function __construct($label_x, $label_y, $page) {
27
+ $this->setLabelX($label_x);
28
+ $this->setLabelY($label_y);
29
+ $this->setPage($page);
30
+ }
31
+
32
+ /**
33
+ * @return int
34
+ */
35
+ public function getLabelX() {
36
+ return $this->labelX;
37
+ }
38
+
39
+ /**
40
+ * @param int $labelX
41
+ */
42
+ public function setLabelX($labelX) {
43
+ $this->labelX = $labelX;
44
+ }
45
+
46
+ /**
47
+ * @return int
48
+ */
49
+ public function getLabelY() {
50
+ return $this->labelY;
51
+ }
52
+
53
+ /**
54
+ * @param int $labelY
55
+ */
56
+ public function setLabelY($labelY) {
57
+ $this->labelY = $labelY;
58
+ }
59
+
60
+ /**
61
+ * @return int
62
+ */
63
+ public function getPage() {
64
+ return $this->page;
65
+ }
66
+
67
+ /**
68
+ * @param int $page
69
+ */
70
+ public function setPage($page) {
71
+ $this->page = $page;
72
+ }
73
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/PublicGalleryItem.php ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ class PublicGalleryItem extends ApiResult {
6
+ /**
7
+ * @var string Technical designation of the image category
8
+ */
9
+ protected $category;
10
+ /**
11
+ * @var string Category and type of image
12
+ */
13
+ protected $categoryDescription;
14
+ /**
15
+ * @var int Technical ID, which uniquely identifies the category
16
+ */
17
+ protected $categoryId;
18
+ /**
19
+ * @var array An array of the images
20
+ */
21
+ protected $images;
22
+
23
+ /**
24
+ * PublicGalleryItem constructor.
25
+ *
26
+ * @param string $category
27
+ * @param string $category_description
28
+ * @param int $category_id
29
+ * @param array $images
30
+ */
31
+ public function __construct($category, $category_description, $category_id, array $images = null) {
32
+ $this->setCategory($category);
33
+ $this->setCategoryDescription($category_description);
34
+ $this->setCategoryId($category_id);
35
+ $this->setImages($images);
36
+ }
37
+
38
+ /**
39
+ * @return string
40
+ */
41
+ public function getCategory() {
42
+ return $this->category;
43
+ }
44
+
45
+ /**
46
+ * @param string $category
47
+ */
48
+ public function setCategory($category) {
49
+ $this->category = $category;
50
+ }
51
+
52
+ /**
53
+ * @return string
54
+ */
55
+ public function getCategoryDescription() {
56
+ return $this->categoryDescription;
57
+ }
58
+
59
+ /**
60
+ * @param string $categoryDescription
61
+ */
62
+ public function setCategoryDescription($categoryDescription) {
63
+ $this->categoryDescription = $categoryDescription;
64
+ }
65
+
66
+ /**
67
+ * @return int
68
+ */
69
+ public function getCategoryId() {
70
+ return $this->categoryId;
71
+ }
72
+
73
+ /**
74
+ * @param int $categoryId
75
+ */
76
+ public function setCategoryId($categoryId) {
77
+ $this->categoryId = $categoryId;
78
+ }
79
+
80
+ /**
81
+ * @return array
82
+ */
83
+ public function getImages() {
84
+ return $this->images;
85
+ }
86
+
87
+ /**
88
+ * @param array $images
89
+ */
90
+ public function setImages($images) {
91
+ $this->images = $images;
92
+ }
93
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/Service.php ADDED
@@ -0,0 +1,178 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ class Service extends \SoapClient {
6
+ protected $partner_information;
7
+
8
+ /**
9
+ * Service constructor.
10
+ *
11
+ * @param $partner_information PartnerInformation
12
+ * @param array $options A array of config values for `SoapClient` (see PHP docs)
13
+ * @param string $wsdl The wsdl file to use (defaults to 'https://internetmarke.deutschepost.de/OneClickForAppV3?wsdl')
14
+ */
15
+ public function __construct($partner_information, $options = array(), $wsdl = null) {
16
+ $this->partner_information = $partner_information;
17
+ $options = array_merge(array('features' => SOAP_SINGLE_ELEMENT_ARRAYS), $options);
18
+ if($wsdl === null) {
19
+ $wsdl = 'https://internetmarke.deutschepost.de/OneClickForAppV3?wsdl';
20
+ }
21
+ parent::__construct($wsdl, $options);
22
+ $this->__setSoapHeaders($this->partner_information->soapHeaderArray());
23
+ }
24
+
25
+ /**
26
+ * Used to authenticate a user on the system. Returns a token and some information about the user
27
+ *
28
+ * @param $username string The user's email address
29
+ * @param $password string The user's (plaintext) password
30
+ * @return User An object holding: - a token used as authentication for other methods, - the user's wallet balance,
31
+ * - whether the user accepted the T&C, - an (optional) information text
32
+ */
33
+ public function authenticateUser($username, $password) {
34
+ $result = $this->__soapCall('authenticateUser', array('AuthenticateUserRequest' => array('username' => $username, 'password' => $password)));
35
+ return User::fromStdObject($result);
36
+ }
37
+
38
+ /**
39
+ * Fetch a list of all valid page formats
40
+ *
41
+ * @return PageFormat[]
42
+ */
43
+ public function retrievePageFormats() {
44
+ $result = $this->__soapCall('retrievePageFormats', array());
45
+ $array_result = array();
46
+ foreach($result->pageFormat as $item) {
47
+ $array_result[] = PageFormat::fromStdObject($item);
48
+ }
49
+ return $array_result;
50
+ }
51
+
52
+ /**
53
+ * Generate a unique order number (if your system doesn't generate its own)
54
+ *
55
+ * @param $user_token string A token to authenticate the user (gotten from `authenticateUser`)
56
+ * @return string Next available shop order ID
57
+ */
58
+ public function createShopOrderId($user_token) {
59
+ $result = $this->__soapCall('createShopOrderId', array('CreateShopOrderIdRequest' => array('userToken' => $user_token)));
60
+ return $result->shopOrderId;
61
+ }
62
+
63
+ /**
64
+ * Fetch a hierarchical structure of image categories and the images in those categories
65
+ *
66
+ * @return PublicGalleryItem[]
67
+ */
68
+ public function retrievePublicGallery() {
69
+ $result = $this->__soapCall('retrievePublicGallery', array());
70
+ $array_result = array();
71
+ foreach($result->items as $item) {
72
+ $array_result[] = PublicGalleryItem::fromStdObject($item);
73
+ }
74
+ return $array_result;
75
+ }
76
+
77
+ /**
78
+ * Fetch the user's private image gallery
79
+ *
80
+ * @param $user_token string A token to authenticate the user (gotten from `authenticateUser`)
81
+ * @return array The user's images (empty if there are none)
82
+ */
83
+ public function retrievePrivateGallery($user_token) {
84
+ $result = $this->__soapCall('retrievePrivateGallery', array('RetrievePublicGalleryRequest' => array('userToken' => $user_token)));
85
+ return $result;
86
+ }
87
+
88
+ /**
89
+ * Get a link to a preview of a stamp in PDF format
90
+ *
91
+ * @param $product_code int A product code for the type of stamp (a list of products is only available via the separate ProdWS service)
92
+ * @param $voucher_layout string The layout of the stamp (possible values: 'FrankingZone' and 'AddressZone')
93
+ * @param $page_format_id int ID of the page layout to be used (gotten from `retrievePageFormats`)
94
+ * @param null $image_id An image ID to include in the stamp (optional, gotten from `retrievePublicGallery` or `retrievePrivateGallery`)
95
+ * @return string A link to the preview stamp in PDF format
96
+ */
97
+ public function retrievePreviewVoucherPdf($product_code, $voucher_layout, $page_format_id, $image_id = null) {
98
+ $result = $this->__soapCall('retrievePreviewVoucherPDF',
99
+ array('RetrievePreviewVoucherPDFRequest' => array('productCode' => $product_code, 'imageID' => $image_id,
100
+ 'voucherLayout' => $voucher_layout, 'pageFormatId' => $page_format_id)));
101
+ return $result->link;
102
+ }
103
+
104
+ /**
105
+ * Get a link to a preview of a stamp in PNG format
106
+ *
107
+ * @param $product_code int A product code for the type of stamp (a list of products is only available via the separate ProdWS service)
108
+ * @param $voucher_layout string The layout of the stamp (possible values: 'FrankingZone' and 'AddressZone')
109
+ * @param null $image_id An image ID to include in the stamp (optional, gotten from `retrievePublicGallery` or `retrievePrivateGallery`)
110
+ * @return string A link to the preview stamp in PNG format
111
+ */
112
+ public function retrievePreviewVoucherPng($product_code, $voucher_layout, $image_id = null) {
113
+ $result = $this->__soapCall('retrievePreviewVoucherPNG',
114
+ array('RetrievePreviewVoucherPNGRequest' => array('productCode' => $product_code, 'imageID' => $image_id,
115
+ 'voucherLayout' => $voucher_layout)));
116
+ return $result->link;
117
+ }
118
+
119
+ /**
120
+ * Create a stamp in PDF format (costs actual money, debited from the Portokasse account)
121
+ *
122
+ * @param $user_token string A token to authenticate the user (gotten from `authenticateUser`)
123
+ * @param $page_format_id int ID of the page layout to be used (gotten from `retrievePageFormats`)
124
+ * @param $positions OrderItem[] An array of items to be ordered
125
+ * @param $total int The total value of the shopping cart in eurocents (this is actually checked by the server and has to be correct)
126
+ * @param null $shop_order_id
127
+ * @param null $ppl_id
128
+ * @param null $create_manifest bool Whether to create a posting receipt
129
+ * @param null $create_shipping_list int Type of shipping list to be created (0: No shipping list,
130
+ * 1: Shipping list without addresses, 2: Shipping list with addresses)
131
+ * @return \stdClass An object containing: - a link to the PDF version of the stamp, - a link to the shipping list (if requested),
132
+ * - the user's wallet balance after the order, - the order ID, - the voucher ID, - the tracking ID (if applicable)
133
+ */
134
+ public function checkoutShoppingCartPdf($user_token, $page_format_id, $positions, $total, $shop_order_id = null,
135
+ $ppl_id = null, $create_manifest = null, $create_shipping_list = null) {
136
+ $result = $this->__soapCall('checkoutShoppingCartPDF', array('CheckoutShoppingCartPDFRequest' => array(
137
+ 'userToken' => $user_token, 'shopOrderId' => $shop_order_id, 'pageFormatId' => $page_format_id, 'ppl' => $ppl_id,
138
+ 'positions' => array_map("DeepCopy\deep_copy", $positions), 'total' => $total, 'createManifest' => $create_manifest, 'createShippingList' => $create_shipping_list
139
+ )));
140
+ return $result;
141
+ }
142
+
143
+ /**
144
+ * Create a stamp in PNG format (costs actual money, debited from the Portokasse account)
145
+ *
146
+ * @param $user_token string A token to authenticate the user (gotten from `authenticateUser`)
147
+ * @param $positions OrderItem[] An array of items to be ordered
148
+ * @param $total int The total value of the shopping cart in eurocents (this is actually checked by the server and has to be correct)
149
+ * @param null $shop_order_id
150
+ * @param null $ppl_id
151
+ * @param null $create_manifest bool Whether to create a posting receipt
152
+ * @param null $create_shipping_list int Type of shipping list to be created (0: No shipping list,
153
+ * 1: Shipping list without addresses, 2: Shipping list with addresses)
154
+ * @return \stdClass An object containing: - a link to the PNG version of the stamp, - a link to the shipping list (if requested),
155
+ * - the user's wallet balance after the order, - the order ID, - the voucher ID, - the tracking ID (if applicable)
156
+ */
157
+ public function checkoutShoppingCartPng($user_token, $positions, $total, $shop_order_id = null,
158
+ $ppl_id = null, $create_manifest = null, $create_shipping_list = null) {
159
+ $result = $this->__soapCall('checkoutShoppingCartPNG', array('CheckoutShoppingCartPNGRequest' => array(
160
+ 'userToken' => $user_token, 'shopOrderId' => $shop_order_id, 'ppl' => $ppl_id, 'positions' => array_map("DeepCopy\deep_copy", $positions),
161
+ 'total' => $total, 'createManifest' => $create_manifest, 'createShippingList' => $create_shipping_list
162
+ )));
163
+ return StampPngResult::fromStdObject($result);
164
+ }
165
+
166
+ /**
167
+ * Fetch a previous order (from `checkoutShoppingCartPdf` or `checkoutShoppingCartPng`)
168
+ *
169
+ * @param $user_token string A token to authenticate the user (gotten from `authenticateUser`)
170
+ * @param $shop_order_id int The order ID of the order to be fetched
171
+ * @return \stdClass Same as for the corresponding call to `checkoutShoppingCart(Pdf|Png)`
172
+ */
173
+ public function retrieveOrder($user_token, $shop_order_id) {
174
+ $result = $this->__soapCall('retrieveOrder',
175
+ array('RetrieveOrderRequest' => array('userToken' => $user_token, 'shopOrderId' => $shop_order_id)));
176
+ return $result;
177
+ }
178
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/Size.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ class Size extends ApiResult {
6
+ /**
7
+ * @var int Width in millimeters
8
+ */
9
+ protected $x;
10
+ /**
11
+ * @var int Height in millimeters
12
+ */
13
+ protected $y;
14
+
15
+ /**
16
+ * Size constructor.
17
+ *
18
+ * @param int $x Width in millimeters
19
+ * @param int $y Height in millimeters
20
+ */
21
+ public function __construct($x, $y) {
22
+ $this->setX($x);
23
+ $this->setY($y);
24
+ }
25
+
26
+ /**
27
+ * @return int Width in millimeters
28
+ */
29
+ public function getX() {
30
+ return $this->x;
31
+ }
32
+
33
+ /**
34
+ * @param int $x Width in millimeters
35
+ */
36
+ public function setX($x) {
37
+ $this->x = $x;
38
+ }
39
+
40
+ /**
41
+ * @return int Height in millimeters
42
+ */
43
+ public function getY() {
44
+ return $this->y;
45
+ }
46
+
47
+ /**
48
+ * @param int $y Height in millimeters
49
+ */
50
+ public function setY($y) {
51
+ $this->y = $y;
52
+ }
53
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/StampPngResult.php ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ class StampPngResult extends ApiResult {
6
+ /**
7
+ * @var string url to zipfile
8
+ */
9
+ public $link;
10
+ /**
11
+ * @var integer portokasse balance in eurocent
12
+ */
13
+ public $walletBallance;
14
+ /**
15
+ * @var stdClass with attributes `shopOrderId` and `voucherList`
16
+ */
17
+ public $shoppingCart;
18
+ /**
19
+ * @var string url to manifestLink
20
+ */
21
+ public $manifestLink;
22
+
23
+ /**
24
+ *
25
+ * @param string $link url to zipfile
26
+ * @param integer $walletBallance portokasse balance in eurocent
27
+ * @param stdClass $shoppingCart with attributes `shopOrderId` and `voucherList`
28
+ * @param string url to posting receipt of order
29
+ */
30
+ public function __construct($link, $walletBallance, $shoppingCart, $manifestLink = null) {
31
+ $this->link = $link;
32
+ $this->walletBallance = $walletBallance;
33
+ $this->shoppingCart = $shoppingCart;
34
+ $this->manifestLink = $manifestLink;
35
+ }
36
+
37
+ /**
38
+ * Store zip and png files in folder of $path
39
+ * @param string $path location where png should be extracted to
40
+ * @return array on success: filenames of png's that were extracted
41
+ * on failure: if copy of zip file failed false,
42
+ * if zip coulnd not be opened the error code
43
+ */
44
+ public function unzipPNG($path)
45
+ {
46
+ // make sure $path ends with slash
47
+ $path = rtrim($path, '/') . '/';
48
+
49
+ if(!file_exists($path)){
50
+ mkdir($path);
51
+ }
52
+
53
+ $tempFile = $path . 'zip' . date('Y-m-d_H:i:s'). '_' . uniqid();
54
+
55
+ if(!copy($this->link,$tempFile)) return false;
56
+
57
+ $zip = new \ZipArchive();
58
+ $zip_result = $zip->open($tempFile);
59
+
60
+ if($zip_result !== true) return $zip_result;
61
+
62
+ $file_count = $zip->count();
63
+ $files = [];
64
+ for ($i=0; $i < $file_count; $i++) {
65
+ $data = $zip->getFromIndex($i);
66
+ $filename = date('Y-m-d_H:i:s'). '_' . uniqid() . '.png';
67
+ file_put_contents($path . $filename, $data);
68
+ $files[] = $filename;
69
+ }
70
+
71
+ unlink($tempFile);
72
+ return $files;
73
+ }
74
+
75
+ }
vendor/baltpeter/internetmarke-php/src/baltpeter/Internetmarke/User.php ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace baltpeter\Internetmarke;
4
+
5
+ class User extends ApiResult {
6
+ /**
7
+ * @var string Unique user ID. Used for those web services that require user authentication. The userToken is only valid for one day.
8
+ */
9
+ protected $userToken;
10
+ /**
11
+ * @var int Balance of the postage account in eurocents
12
+ */
13
+ protected $walletBalance;
14
+ /**
15
+ * @var bool Has this user already agreed to the current GT&C and DP DHL data protection provisions?
16
+ */
17
+ protected $showTermsAndConditions;
18
+ /**
19
+ * @var string Optional information text
20
+ */
21
+ protected $info_message;
22
+
23
+ /**
24
+ * User constructor.
25
+ *
26
+ * @param string $user_token Unique user ID
27
+ * @param int $wallet_balance Balance of the account
28
+ * @param bool $show_terms_and_conditions Has this user agreed to the T&C?
29
+ * @param string $info_message Optional information text
30
+ */
31
+ public function __construct($user_token, $wallet_balance, $show_terms_and_conditions, $info_message) {
32
+ $this->setUserToken($user_token);
33
+ $this->setWalletBalance($wallet_balance);
34
+ $this->setShowTermsAndConditions($show_terms_and_conditions);
35
+ $this->setInfoMessage($info_message);
36
+ }
37
+
38
+ /**
39
+ * @return string Unique user ID
40
+ */
41
+ public function getUserToken() {
42
+ return $this->userToken;
43
+ }
44
+
45
+ /**
46
+ * @param string $userToken Unique user ID
47
+ */
48
+ public function setUserToken($userToken) {
49
+ $this->userToken = $userToken;
50
+ }
51
+
52
+ /**
53
+ * @return int Balance of the account
54
+ */
55
+ public function getWalletBalance() {
56
+ return $this->walletBalance;
57
+ }
58
+
59
+ /**
60
+ * @param int $walletBalance Balance of the account
61
+ */
62
+ public function setWalletBalance($walletBalance) {
63
+ $this->walletBalance = $walletBalance;
64
+ }
65
+
66
+ /**
67
+ * @return boolean Has this user agreed to the T&C?
68
+ */
69
+ public function isShowTermsAndConditions() {
70
+ return $this->showTermsAndConditions;
71
+ }
72
+
73
+ /**
74
+ * @param boolean $show_terms_and_conditions Has this user agreed to the T&C?
75
+ */
76
+ public function setShowTermsAndConditions($show_terms_and_conditions) {
77
+ $this->showTermsAndConditions = $show_terms_and_conditions;
78
+ }
79
+
80
+ /**
81
+ * @return string Optional information text
82
+ */
83
+ public function getInfoMessage() {
84
+ return $this->info_message;
85
+ }
86
+
87
+ /**
88
+ * @param string $info_message Optional information text
89
+ */
90
+ public function setInfoMessage($info_message) {
91
+ $this->info_message = $info_message;
92
+ }
93
+ }
vendor/composer/ClassLoader.php CHANGED
@@ -37,8 +37,8 @@ namespace Composer\Autoload;
37
  *
38
  * @author Fabien Potencier <fabien@symfony.com>
39
  * @author Jordi Boggiano <j.boggiano@seld.be>
40
- * @see http://www.php-fig.org/psr/psr-0/
41
- * @see http://www.php-fig.org/psr/psr-4/
42
  */
43
  class ClassLoader
44
  {
@@ -60,7 +60,7 @@ class ClassLoader
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
63
- return call_user_func_array('array_merge', $this->prefixesPsr0);
64
  }
65
 
66
  return array();
37
  *
38
  * @author Fabien Potencier <fabien@symfony.com>
39
  * @author Jordi Boggiano <j.boggiano@seld.be>
40
+ * @see https://www.php-fig.org/psr/psr-0/
41
+ * @see https://www.php-fig.org/psr/psr-4/
42
  */
43
  class ClassLoader
44
  {
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
63
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
64
  }
65
 
66
  return array();
vendor/composer/InstalledVersions.php ADDED
@@ -0,0 +1,317 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer;
4
+
5
+ use Composer\Semver\VersionParser;
6
+
7
+
8
+
9
+
10
+
11
+
12
+ class InstalledVersions
13
+ {
14
+ private static $installed = array (
15
+ 'root' =>
16
+ array (
17
+ 'pretty_version' => 'dev-master',
18
+ 'version' => 'dev-master',
19
+ 'aliases' =>
20
+ array (
21
+ ),
22
+ 'reference' => 'adf51295389eae4da5d8cf21ee5ef0c60962c74a',
23
+ 'name' => 'vendidero/woocommerce-germanized',
24
+ ),
25
+ 'versions' =>
26
+ array (
27
+ 'automattic/jetpack-autoloader' =>
28
+ array (
29
+ 'pretty_version' => 'v2.6.0',
30
+ 'version' => '2.6.0.0',
31
+ 'aliases' =>
32
+ array (
33
+ ),
34
+ 'reference' => '47dde8dbca6b1e30f176725f2f748a9abefcaf58',
35
+ ),
36
+ 'baltpeter/internetmarke-php' =>
37
+ array (
38
+ 'pretty_version' => 'v0.5.0',
39
+ 'version' => '0.5.0.0',
40
+ 'aliases' =>
41
+ array (
42
+ ),
43
+ 'reference' => '7657ee5a55eb80c77a35e35ce71c465364d73ab4',
44
+ ),
45
+ 'composer/installers' =>
46
+ array (
47
+ 'pretty_version' => 'v1.9.0',
48
+ 'version' => '1.9.0.0',
49
+ 'aliases' =>
50
+ array (
51
+ ),
52
+ 'reference' => 'b93bcf0fa1fccb0b7d176b0967d969691cd74cca',
53
+ ),
54
+ 'myclabs/deep-copy' =>
55
+ array (
56
+ 'pretty_version' => '1.10.2',
57
+ 'version' => '1.10.2.0',
58
+ 'aliases' =>
59
+ array (
60
+ ),
61
+ 'reference' => '776f831124e9c62e1a2c601ecc52e776d8bb7220',
62
+ 'replaced' =>
63
+ array (
64
+ 0 => '1.10.2',
65
+ ),
66
+ ),
67
+ 'roundcube/plugin-installer' =>
68
+ array (
69
+ 'replaced' =>
70
+ array (
71
+ 0 => '*',
72
+ ),
73
+ ),
74
+ 'setasign/fpdf' =>
75
+ array (
76
+ 'pretty_version' => '1.8.2',
77
+ 'version' => '1.8.2.0',
78
+ 'aliases' =>
79
+ array (
80
+ ),
81
+ 'reference' => 'd77904018090c17dc9f3ab6e944679a7a47e710a',
82
+ ),
83
+ 'setasign/fpdi' =>
84
+ array (
85
+ 'pretty_version' => 'v2.3.5',
86
+ 'version' => '2.3.5.0',
87
+ 'aliases' =>
88
+ array (
89
+ ),
90
+ 'reference' => 'f2246c8669bd25834f5c264425eb0e250d7a9312',
91
+ ),
92
+ 'shama/baton' =>
93
+ array (
94
+ 'replaced' =>
95
+ array (
96
+ 0 => '*',
97
+ ),
98
+ ),
99
+ 'vendidero/woocommerce-germanized' =>
100
+ array (
101
+ 'pretty_version' => 'dev-master',
102
+ 'version' => 'dev-master',
103
+ 'aliases' =>
104
+ array (
105
+ ),
106
+ 'reference' => 'adf51295389eae4da5d8cf21ee5ef0c60962c74a',
107
+ ),
108
+ 'vendidero/woocommerce-germanized-dhl' =>
109
+ array (
110
+ 'pretty_version' => 'v1.4.0',
111
+ 'version' => '1.4.0.0',
112
+ 'aliases' =>
113
+ array (
114
+ ),
115
+ 'reference' => 'b679821b847b8b80e9d460f9c75458c8f98fc647',
116
+ ),
117
+ 'vendidero/woocommerce-germanized-shipments' =>
118
+ array (
119
+ 'pretty_version' => 'v1.4.0',
120
+ 'version' => '1.4.0.0',
121
+ 'aliases' =>
122
+ array (
123
+ ),
124
+ 'reference' => '81d7c81bf8a8c41871b73c60736e8d380ff876d2',
125
+ ),
126
+ 'vendidero/woocommerce-trusted-shops' =>
127
+ array (
128
+ 'pretty_version' => 'v4.0.9',
129
+ 'version' => '4.0.9.0',
130
+ 'aliases' =>
131
+ array (
132
+ ),
133
+ 'reference' => 'd5dcf1487799eec37a827ffb75af76b0171bda2c',
134
+ ),
135
+ 'wsdltophp/wssecurity' =>
136
+ array (
137
+ 'pretty_version' => '1.2.2',
138
+ 'version' => '1.2.2.0',
139
+ 'aliases' =>
140
+ array (
141
+ ),
142
+ 'reference' => '6a450af3cd462cbf73fdb3a09e80322da893af4f',
143
+ ),
144
+ ),
145
+ );
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+ public static function getInstalledPackages()
154
+ {
155
+ return array_keys(self::$installed['versions']);
156
+ }
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+ public static function isInstalled($packageName)
167
+ {
168
+ return isset(self::$installed['versions'][$packageName]);
169
+ }
170
+
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+
182
+
183
+
184
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
185
+ {
186
+ $constraint = $parser->parseConstraints($constraint);
187
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
188
+
189
+ return $provided->matches($constraint);
190
+ }
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
+
200
+
201
+ public static function getVersionRanges($packageName)
202
+ {
203
+ if (!isset(self::$installed['versions'][$packageName])) {
204
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
205
+ }
206
+
207
+ $ranges = array();
208
+ if (isset(self::$installed['versions'][$packageName]['pretty_version'])) {
209
+ $ranges[] = self::$installed['versions'][$packageName]['pretty_version'];
210
+ }
211
+ if (array_key_exists('aliases', self::$installed['versions'][$packageName])) {
212
+ $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']);
213
+ }
214
+ if (array_key_exists('replaced', self::$installed['versions'][$packageName])) {
215
+ $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']);
216
+ }
217
+ if (array_key_exists('provided', self::$installed['versions'][$packageName])) {
218
+ $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']);
219
+ }
220
+
221
+ return implode(' || ', $ranges);
222
+ }
223
+
224
+
225
+
226
+
227
+
228
+ public static function getVersion($packageName)
229
+ {
230
+ if (!isset(self::$installed['versions'][$packageName])) {
231
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
232
+ }
233
+
234
+ if (!isset(self::$installed['versions'][$packageName]['version'])) {
235
+ return null;
236
+ }
237
+
238
+ return self::$installed['versions'][$packageName]['version'];
239
+ }
240
+
241
+
242
+
243
+
244
+
245
+ public static function getPrettyVersion($packageName)
246
+ {
247
+ if (!isset(self::$installed['versions'][$packageName])) {
248
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
249
+ }
250
+
251
+ if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) {
252
+ return null;
253
+ }
254
+
255
+ return self::$installed['versions'][$packageName]['pretty_version'];
256
+ }
257
+
258
+
259
+
260
+
261
+
262
+ public static function getReference($packageName)
263
+ {
264
+ if (!isset(self::$installed['versions'][$packageName])) {
265
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
266
+ }
267
+
268
+ if (!isset(self::$installed['versions'][$packageName]['reference'])) {
269
+ return null;
270
+ }
271
+
272
+ return self::$installed['versions'][$packageName]['reference'];
273
+ }
274
+
275
+
276
+
277
+
278
+
279
+ public static function getRootPackage()
280
+ {
281
+ return self::$installed['root'];
282
+ }
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+ public static function getRawData()
291
+ {
292
+ return self::$installed;
293
+ }
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+ public static function reload($data)
314
+ {
315
+ self::$installed = $data;
316
+ }
317
+ }
vendor/composer/autoload_classmap.php CHANGED
@@ -6,5 +6,7 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
 
9
  'FPDF' => $vendorDir . '/setasign/fpdf/fpdf.php',
10
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
+ 'Automattic\\Jetpack\\Autoloader\\AutoloadGenerator' => $vendorDir . '/automattic/jetpack-autoloader/src/AutoloadGenerator.php',
10
+ 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
11
  'FPDF' => $vendorDir . '/setasign/fpdf/fpdf.php',
12
  );
vendor/composer/autoload_classmap_package.php DELETED
@@ -1,874 +0,0 @@
1
- <?php
2
-
3
- // This file `autoload_classmap_packages.php` was auto generated by automattic/jetpack-autoloader.
4
-
5
- $vendorDir = dirname(__DIR__);
6
- $baseDir = dirname($vendorDir);
7
-
8
- return array(
9
- 'setasign\\Fpdi\\Tcpdf\\Fpdi' => array(
10
- 'version' => '2.3.4.0',
11
- 'path' => $vendorDir . '/setasign/fpdi/src/Tcpdf/Fpdi.php'
12
- ),
13
- 'setasign\\Fpdi\\Tfpdf\\Fpdi' => array(
14
- 'version' => '2.3.4.0',
15
- 'path' => $vendorDir . '/setasign/fpdi/src/Tfpdf/Fpdi.php'
16
- ),
17
- 'setasign\\Fpdi\\Tfpdf\\FpdfTpl' => array(
18
- 'version' => '2.3.4.0',
19
- 'path' => $vendorDir . '/setasign/fpdi/src/Tfpdf/FpdfTpl.php'
20
- ),
21
- 'setasign\\Fpdi\\Fpdi' => array(
22
- 'version' => '2.3.4.0',
23
- 'path' => $vendorDir . '/setasign/fpdi/src/Fpdi.php'
24
- ),
25
- 'setasign\\Fpdi\\FpdfTplTrait' => array(
26
- 'version' => '2.3.4.0',
27
- 'path' => $vendorDir . '/setasign/fpdi/src/FpdfTplTrait.php'
28
- ),
29
- 'setasign\\Fpdi\\FpdiTrait' => array(
30
- 'version' => '2.3.4.0',
31
- 'path' => $vendorDir . '/setasign/fpdi/src/FpdiTrait.php'
32
- ),
33
- 'setasign\\Fpdi\\TcpdfFpdi' => array(
34
- 'version' => '2.3.4.0',
35
- 'path' => $vendorDir . '/setasign/fpdi/src/TcpdfFpdi.php'
36
- ),
37
- 'setasign\\Fpdi\\PdfParser\\StreamReader' => array(
38
- 'version' => '2.3.4.0',
39
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/StreamReader.php'
40
- ),
41
- 'setasign\\Fpdi\\PdfParser\\PdfParserException' => array(
42
- 'version' => '2.3.4.0',
43
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/PdfParserException.php'
44
- ),
45
- 'setasign\\Fpdi\\PdfParser\\CrossReference\\ReaderInterface' => array(
46
- 'version' => '2.3.4.0',
47
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/CrossReference/ReaderInterface.php'
48
- ),
49
- 'setasign\\Fpdi\\PdfParser\\CrossReference\\CrossReferenceException' => array(
50
- 'version' => '2.3.4.0',
51
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/CrossReference/CrossReferenceException.php'
52
- ),
53
- 'setasign\\Fpdi\\PdfParser\\CrossReference\\LineReader' => array(
54
- 'version' => '2.3.4.0',
55
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/CrossReference/LineReader.php'
56
- ),
57
- 'setasign\\Fpdi\\PdfParser\\CrossReference\\AbstractReader' => array(
58
- 'version' => '2.3.4.0',
59
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/CrossReference/AbstractReader.php'
60
- ),
61
- 'setasign\\Fpdi\\PdfParser\\CrossReference\\CrossReference' => array(
62
- 'version' => '2.3.4.0',
63
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/CrossReference/CrossReference.php'
64
- ),
65
- 'setasign\\Fpdi\\PdfParser\\CrossReference\\FixedReader' => array(
66
- 'version' => '2.3.4.0',
67
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/CrossReference/FixedReader.php'
68
- ),
69
- 'setasign\\Fpdi\\PdfParser\\PdfParser' => array(
70
- 'version' => '2.3.4.0',
71
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/PdfParser.php'
72
- ),
73
- 'setasign\\Fpdi\\PdfParser\\Type\\PdfStream' => array(
74
- 'version' => '2.3.4.0',
75
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Type/PdfStream.php'
76
- ),
77
- 'setasign\\Fpdi\\PdfParser\\Type\\PdfIndirectObjectReference' => array(
78
- 'version' => '2.3.4.0',
79
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Type/PdfIndirectObjectReference.php'
80
- ),
81
- 'setasign\\Fpdi\\PdfParser\\Type\\PdfHexString' => array(
82
- 'version' => '2.3.4.0',
83
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Type/PdfHexString.php'
84
- ),
85
- 'setasign\\Fpdi\\PdfParser\\Type\\PdfBoolean' => array(
86
- 'version' => '2.3.4.0',
87
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Type/PdfBoolean.php'
88
- ),
89
- 'setasign\\Fpdi\\PdfParser\\Type\\PdfType' => array(
90
- 'version' => '2.3.4.0',
91
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Type/PdfType.php'
92
- ),
93
- 'setasign\\Fpdi\\PdfParser\\Type\\PdfNumeric' => array(
94
- 'version' => '2.3.4.0',
95
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Type/PdfNumeric.php'
96
- ),
97
- 'setasign\\Fpdi\\PdfParser\\Type\\PdfArray' => array(
98
- 'version' => '2.3.4.0',
99
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Type/PdfArray.php'
100
- ),
101
- 'setasign\\Fpdi\\PdfParser\\Type\\PdfName' => array(
102
- 'version' => '2.3.4.0',
103
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Type/PdfName.php'
104
- ),
105
- 'setasign\\Fpdi\\PdfParser\\Type\\PdfTypeException' => array(
106
- 'version' => '2.3.4.0',
107
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Type/PdfTypeException.php'
108
- ),
109
- 'setasign\\Fpdi\\PdfParser\\Type\\PdfString' => array(
110
- 'version' => '2.3.4.0',
111
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Type/PdfString.php'
112
- ),
113
- 'setasign\\Fpdi\\PdfParser\\Type\\PdfNull' => array(
114
- 'version' => '2.3.4.0',
115
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Type/PdfNull.php'
116
- ),
117
- 'setasign\\Fpdi\\PdfParser\\Type\\PdfToken' => array(
118
- 'version' => '2.3.4.0',
119
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Type/PdfToken.php'
120
- ),
121
- 'setasign\\Fpdi\\PdfParser\\Type\\PdfDictionary' => array(
122
- 'version' => '2.3.4.0',
123
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Type/PdfDictionary.php'
124
- ),
125
- 'setasign\\Fpdi\\PdfParser\\Type\\PdfIndirectObject' => array(
126
- 'version' => '2.3.4.0',
127
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Type/PdfIndirectObject.php'
128
- ),
129
- 'setasign\\Fpdi\\PdfParser\\Tokenizer' => array(
130
- 'version' => '2.3.4.0',
131
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Tokenizer.php'
132
- ),
133
- 'setasign\\Fpdi\\PdfParser\\Filter\\FilterInterface' => array(
134
- 'version' => '2.3.4.0',
135
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Filter/FilterInterface.php'
136
- ),
137
- 'setasign\\Fpdi\\PdfParser\\Filter\\Ascii85Exception' => array(
138
- 'version' => '2.3.4.0',
139
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Filter/Ascii85Exception.php'
140
- ),
141
- 'setasign\\Fpdi\\PdfParser\\Filter\\FlateException' => array(
142
- 'version' => '2.3.4.0',
143
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Filter/FlateException.php'
144
- ),
145
- 'setasign\\Fpdi\\PdfParser\\Filter\\Flate' => array(
146
- 'version' => '2.3.4.0',
147
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Filter/Flate.php'
148
- ),
149
- 'setasign\\Fpdi\\PdfParser\\Filter\\FilterException' => array(
150
- 'version' => '2.3.4.0',
151
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Filter/FilterException.php'
152
- ),
153
- 'setasign\\Fpdi\\PdfParser\\Filter\\Ascii85' => array(
154
- 'version' => '2.3.4.0',
155
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Filter/Ascii85.php'
156
- ),
157
- 'setasign\\Fpdi\\PdfParser\\Filter\\LzwException' => array(
158
- 'version' => '2.3.4.0',
159
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Filter/LzwException.php'
160
- ),
161
- 'setasign\\Fpdi\\PdfParser\\Filter\\AsciiHex' => array(
162
- 'version' => '2.3.4.0',
163
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Filter/AsciiHex.php'
164
- ),
165
- 'setasign\\Fpdi\\PdfParser\\Filter\\Lzw' => array(
166
- 'version' => '2.3.4.0',
167
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfParser/Filter/Lzw.php'
168
- ),
169
- 'setasign\\Fpdi\\FpdiException' => array(
170
- 'version' => '2.3.4.0',
171
- 'path' => $vendorDir . '/setasign/fpdi/src/FpdiException.php'
172
- ),
173
- 'setasign\\Fpdi\\PdfReader\\PdfReader' => array(
174
- 'version' => '2.3.4.0',
175
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfReader/PdfReader.php'
176
- ),
177
- 'setasign\\Fpdi\\PdfReader\\PageBoundaries' => array(
178
- 'version' => '2.3.4.0',
179
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfReader/PageBoundaries.php'
180
- ),
181
- 'setasign\\Fpdi\\PdfReader\\DataStructure\\Rectangle' => array(
182
- 'version' => '2.3.4.0',
183
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfReader/DataStructure/Rectangle.php'
184
- ),
185
- 'setasign\\Fpdi\\PdfReader\\PdfReaderException' => array(
186
- 'version' => '2.3.4.0',
187
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfReader/PdfReaderException.php'
188
- ),
189
- 'setasign\\Fpdi\\PdfReader\\Page' => array(
190
- 'version' => '2.3.4.0',
191
- 'path' => $vendorDir . '/setasign/fpdi/src/PdfReader/Page.php'
192
- ),
193
- 'setasign\\Fpdi\\FpdfTpl' => array(
194
- 'version' => '2.3.4.0',
195
- 'path' => $vendorDir . '/setasign/fpdi/src/FpdfTpl.php'
196
- ),
197
- 'Vendidero\\TrustedShops\\Package' => array(
198
- 'version' => '4.0.8.0',
199
- 'path' => $baseDir . '/packages/woocommerce-trusted-shops/src/Package.php'
200
- ),
201
- 'Vendidero\\Germanized\\Shipments\\Shipment' => array(
202
- 'version' => '1.3.3.0',
203
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Shipment.php'
204
- ),
205
- 'Vendidero\\Germanized\\Shipments\\Install' => array(
206
- 'version' => '1.3.3.0',
207
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Install.php'
208
- ),
209
- 'Vendidero\\Germanized\\Shipments\\SimpleShipment' => array(
210
- 'version' => '1.3.3.0',
211
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/SimpleShipment.php'
212
- ),
213
- 'Vendidero\\Germanized\\Shipments\\ShippingProviderMethod' => array(
214
- 'version' => '1.3.3.0',
215
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/ShippingProviderMethod.php'
216
- ),
217
- 'Vendidero\\Germanized\\Shipments\\Package' => array(
218
- 'version' => '1.3.3.0',
219
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Package.php'
220
- ),
221
- 'Vendidero\\Germanized\\Shipments\\Order' => array(
222
- 'version' => '1.3.3.0',
223
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Order.php'
224
- ),
225
- 'Vendidero\\Germanized\\Shipments\\DataStores\\Shipment' => array(
226
- 'version' => '1.3.3.0',
227
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/DataStores/Shipment.php'
228
- ),
229
- 'Vendidero\\Germanized\\Shipments\\DataStores\\ShippingProvider' => array(
230
- 'version' => '1.3.3.0',
231
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/DataStores/ShippingProvider.php'
232
- ),
233
- 'Vendidero\\Germanized\\Shipments\\DataStores\\ShipmentItem' => array(
234
- 'version' => '1.3.3.0',
235
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/DataStores/ShipmentItem.php'
236
- ),
237
- 'Vendidero\\Germanized\\Shipments\\Ajax' => array(
238
- 'version' => '1.3.3.0',
239
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Ajax.php'
240
- ),
241
- 'Vendidero\\Germanized\\Shipments\\ReturnShipment' => array(
242
- 'version' => '1.3.3.0',
243
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/ReturnShipment.php'
244
- ),
245
- 'Vendidero\\Germanized\\Shipments\\ShippingProvider' => array(
246
- 'version' => '1.3.3.0',
247
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/ShippingProvider.php'
248
- ),
249
- 'Vendidero\\Germanized\\Shipments\\AddressSplitter' => array(
250
- 'version' => '1.3.3.0',
251
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/AddressSplitter.php'
252
- ),
253
- 'Vendidero\\Germanized\\Shipments\\Admin\\BulkLabel' => array(
254
- 'version' => '1.3.3.0',
255
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Admin/BulkLabel.php'
256
- ),
257
- 'Vendidero\\Germanized\\Shipments\\Admin\\Settings' => array(
258
- 'version' => '1.3.3.0',
259
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Admin/Settings.php'
260
- ),
261
- 'Vendidero\\Germanized\\Shipments\\Admin\\MetaBox' => array(
262
- 'version' => '1.3.3.0',
263
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Admin/MetaBox.php'
264
- ),
265
- 'Vendidero\\Germanized\\Shipments\\Admin\\DownloadHandler' => array(
266
- 'version' => '1.3.3.0',
267
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Admin/DownloadHandler.php'
268
- ),
269
- 'Vendidero\\Germanized\\Shipments\\Admin\\ReturnTable' => array(
270
- 'version' => '1.3.3.0',
271
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Admin/ReturnTable.php'
272
- ),
273
- 'Vendidero\\Germanized\\Shipments\\Admin\\BulkActionHandler' => array(
274
- 'version' => '1.3.3.0',
275
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Admin/BulkActionHandler.php'
276
- ),
277
- 'Vendidero\\Germanized\\Shipments\\Admin\\Admin' => array(
278
- 'version' => '1.3.3.0',
279
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Admin/Admin.php'
280
- ),
281
- 'Vendidero\\Germanized\\Shipments\\Admin\\Table' => array(
282
- 'version' => '1.3.3.0',
283
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Admin/Table.php'
284
- ),
285
- 'Vendidero\\Germanized\\Shipments\\ShipmentQuery' => array(
286
- 'version' => '1.3.3.0',
287
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/ShipmentQuery.php'
288
- ),
289
- 'Vendidero\\Germanized\\Shipments\\WPMLHelper' => array(
290
- 'version' => '1.3.3.0',
291
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/WPMLHelper.php'
292
- ),
293
- 'Vendidero\\Germanized\\Shipments\\ShipmentReturnItem' => array(
294
- 'version' => '1.3.3.0',
295
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/ShipmentReturnItem.php'
296
- ),
297
- 'Vendidero\\Germanized\\Shipments\\FormHandler' => array(
298
- 'version' => '1.3.3.0',
299
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/FormHandler.php'
300
- ),
301
- 'Vendidero\\Germanized\\Shipments\\PDFMerger' => array(
302
- 'version' => '1.3.3.0',
303
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/PDFMerger.php'
304
- ),
305
- 'Vendidero\\Germanized\\Shipments\\ShipmentFactory' => array(
306
- 'version' => '1.3.3.0',
307
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/ShipmentFactory.php'
308
- ),
309
- 'Vendidero\\Germanized\\Shipments\\ShippingProviderMethodPlaceholder' => array(
310
- 'version' => '1.3.3.0',
311
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/ShippingProviderMethodPlaceholder.php'
312
- ),
313
- 'Vendidero\\Germanized\\Shipments\\Automation' => array(
314
- 'version' => '1.3.3.0',
315
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Automation.php'
316
- ),
317
- 'Vendidero\\Germanized\\Shipments\\ShippingProviders' => array(
318
- 'version' => '1.3.3.0',
319
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/ShippingProviders.php'
320
- ),
321
- 'Vendidero\\Germanized\\Shipments\\Api' => array(
322
- 'version' => '1.3.3.0',
323
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Api.php'
324
- ),
325
- 'Vendidero\\Germanized\\Shipments\\ShipmentItem' => array(
326
- 'version' => '1.3.3.0',
327
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/ShipmentItem.php'
328
- ),
329
- 'Vendidero\\Germanized\\Shipments\\Validation' => array(
330
- 'version' => '1.3.3.0',
331
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Validation.php'
332
- ),
333
- 'Vendidero\\Germanized\\Shipments\\Emails' => array(
334
- 'version' => '1.3.3.0',
335
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Emails.php'
336
- ),
337
- 'Vendidero\\Germanized\\Shipments\\PDFSplitter' => array(
338
- 'version' => '1.3.3.0',
339
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/PDFSplitter.php'
340
- ),
341
- 'Vendidero\\Germanized\\Shipments\\ReturnReason' => array(
342
- 'version' => '1.3.3.0',
343
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/ReturnReason.php'
344
- ),
345
- 'Vendidero\\Germanized\\Shipments\\Interfaces\\ShipmentReturnLabel' => array(
346
- 'version' => '1.3.3.0',
347
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Interfaces/ShipmenReturnLabel.php'
348
- ),
349
- 'Vendidero\\Germanized\\Shipments\\Interfaces\\ShipmentLabel' => array(
350
- 'version' => '1.3.3.0',
351
- 'path' => $baseDir . '/packages/woocommerce-germanized-shipments/src/Interfaces/ShipmentLabel.php'
352
- ),
353
- 'Vendidero\\Germanized\\DHL\\ShippingProviderDHL' => array(
354
- 'version' => '1.3.2.0',
355
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/ShippingProviderDHL.php'
356
- ),
357
- 'Vendidero\\Germanized\\DHL\\ShippingProviderMethodDHL' => array(
358
- 'version' => '1.3.2.0',
359
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/ShippingProviderMethodDHL.php'
360
- ),
361
- 'Vendidero\\Germanized\\DHL\\Install' => array(
362
- 'version' => '1.3.2.0',
363
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/Install.php'
364
- ),
365
- 'Vendidero\\Germanized\\DHL\\LabelQuery' => array(
366
- 'version' => '1.3.2.0',
367
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/LabelQuery.php'
368
- ),
369
- 'Vendidero\\Germanized\\DHL\\ShipmentLabelWatcher' => array(
370
- 'version' => '1.3.2.0',
371
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/ShipmentLabelWatcher.php'
372
- ),
373
- 'Vendidero\\Germanized\\DHL\\Package' => array(
374
- 'version' => '1.3.2.0',
375
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/Package.php'
376
- ),
377
- 'Vendidero\\Germanized\\DHL\\Product' => array(
378
- 'version' => '1.3.2.0',
379
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/Product.php'
380
- ),
381
- 'Vendidero\\Germanized\\DHL\\Order' => array(
382
- 'version' => '1.3.2.0',
383
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/Order.php'
384
- ),
385
- 'Vendidero\\Germanized\\DHL\\DataStores\\Label' => array(
386
- 'version' => '1.3.2.0',
387
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/DataStores/Label.php'
388
- ),
389
- 'Vendidero\\Germanized\\DHL\\Label' => array(
390
- 'version' => '1.3.2.0',
391
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/Label.php'
392
- ),
393
- 'Vendidero\\Germanized\\DHL\\ParcelServices' => array(
394
- 'version' => '1.3.2.0',
395
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/ParcelServices.php'
396
- ),
397
- 'Vendidero\\Germanized\\DHL\\Admin\\Importer' => array(
398
- 'version' => '1.3.2.0',
399
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/Admin/Importer.php'
400
- ),
401
- 'Vendidero\\Germanized\\DHL\\Admin\\Settings' => array(
402
- 'version' => '1.3.2.0',
403
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/Admin/Settings.php'
404
- ),
405
- 'Vendidero\\Germanized\\DHL\\Admin\\Admin' => array(
406
- 'version' => '1.3.2.0',
407
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/Admin/Admin.php'
408
- ),
409
- 'Vendidero\\Germanized\\DHL\\ReturnLabel' => array(
410
- 'version' => '1.3.2.0',
411
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/ReturnLabel.php'
412
- ),
413
- 'Vendidero\\Germanized\\DHL\\ParcelLocator' => array(
414
- 'version' => '1.3.2.0',
415
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/ParcelLocator.php'
416
- ),
417
- 'Vendidero\\Germanized\\DHL\\SimpleLabel' => array(
418
- 'version' => '1.3.2.0',
419
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/SimpleLabel.php'
420
- ),
421
- 'Vendidero\\Germanized\\DHL\\Admin\\DownloadHandler' => array(
422
- 'version' => '1.3.2.0',
423
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/DownloadHandler.php'
424
- ),
425
- 'Vendidero\\Germanized\\DHL\\Api\\ReturnRest' => array(
426
- 'version' => '1.3.2.0',
427
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/Api/ReturnRest.php'
428
- ),
429
- 'Vendidero\\Germanized\\DHL\\Api\\Paket' => array(
430
- 'version' => '1.3.2.0',
431
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/Api/Paket.php'
432
- ),
433
- 'Vendidero\\Germanized\\DHL\\Api\\LabelSoap' => array(
434
- 'version' => '1.3.2.0',
435
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/Api/LabelSoap.php'
436
- ),
437
- 'Vendidero\\Germanized\\DHL\\Api\\AuthSoap' => array(
438
- 'version' => '1.3.2.0',
439
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/Api/AuthSoap.php'
440
- ),
441
- 'Vendidero\\Germanized\\DHL\\Api\\ParcelRest' => array(
442
- 'version' => '1.3.2.0',
443
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/Api/ParcelRest.php'
444
- ),
445
- 'Vendidero\\Germanized\\DHL\\Api\\Soap' => array(
446
- 'version' => '1.3.2.0',
447
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/Api/Soap.php'
448
- ),
449
- 'Vendidero\\Germanized\\DHL\\Api\\Rest' => array(
450
- 'version' => '1.3.2.0',
451
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/Api/Rest.php'
452
- ),
453
- 'Vendidero\\Germanized\\DHL\\Api\\FinderSoap' => array(
454
- 'version' => '1.3.2.0',
455
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/Api/FinderSoap.php'
456
- ),
457
- 'Vendidero\\Germanized\\DHL\\Automation' => array(
458
- 'version' => '1.3.2.0',
459
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/Automation.php'
460
- ),
461
- 'Vendidero\\Germanized\\DHL\\LabelFactory' => array(
462
- 'version' => '1.3.2.0',
463
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/LabelFactory.php'
464
- ),
465
- 'Vendidero\\Germanized\\DHL\\LabelWatcher' => array(
466
- 'version' => '1.3.2.0',
467
- 'path' => $baseDir . '/packages/woocommerce-germanized-dhl/src/LabelWatcher.php'
468
- ),
469
- 'Vendidero\\Germanized\\Shopmark' => array(
470
- 'version' => '9999999-dev',
471
- 'path' => $baseDir . '/src/Shopmark.php'
472
- ),
473
- 'Vendidero\\Germanized\\Packages' => array(
474
- 'version' => '9999999-dev',
475
- 'path' => $baseDir . '/src/Packages.php'
476
- ),
477
- 'Vendidero\\Germanized\\Shopmarks' => array(
478
- 'version' => '9999999-dev',
479
- 'path' => $baseDir . '/src/Shopmarks.php'
480
- ),
481
- 'Vendidero\\Germanized\\Autoloader' => array(
482
- 'version' => '9999999-dev',
483
- 'path' => $baseDir . '/src/Autoloader.php'
484
- ),
485
- 'Composer\\Installers\\GravInstaller' => array(
486
- 'version' => '1.7.0.0',
487
- 'path' => $vendorDir . '/composer/installers/src/Composer/Installers/GravInstaller.php'
488
- ),
489
- 'Composer\\Installers\\AttogramInstaller' => array(
490
- 'version' => '1.7.0.0',
491
- 'path' => $vendorDir . '/composer/installers/src/Composer/Installers/AttogramInstaller.php'
492
- ),
493
- 'Composer\\Installers\\DrupalInstaller' => array(
494
- 'version' => '1.7.0.0',
495
- 'path' => $vendorDir . '/composer/installers/src/Composer/Installers/DrupalInstaller.php'
496
- ),
497
- 'Composer\\Installers\\CraftInstaller' => array(
498
- 'version' => '1.7.0.0',
499
- 'path' => $vendorDir . '/composer/installers/src/Composer/Installers/CraftInstaller.php'
500
- ),
501
- 'Composer\\Installers\\CiviCrmInstaller' => array(
502
- 'version' => '1