PluginProbe
PostNL for WooCommerce / 3.1.4
PostNL for WooCommerce v3.1.4
5.9.12 5.9.11 5.9.10 5.9.9 5.9.8 5.9.7 5.9.6 trunk 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 3.1.4 3.1.5 3.1.6 3.1.7 4.0.0 4.0.1 4.0.2 4.3.2 4.3.3 4.4.0 4.4.1 All 72 releases
woo-postnl / includes / class-wcmp-frontend.php

class-wcmp-frontend.php in PostNL for WooCommerce 3.1.4, at includes/class-wcmp-frontend.php

619 lines 24.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 use WPO\WC\PostNL\Compatibility\WC_Core as WCX;
4 use WPO\WC\PostNL\Compatibility\Order as WCX_Order;
5
6 if ( ! defined('ABSPATH')) exit; // Exit if accessed directly
7
8 if ( ! class_exists('WooCommerce_PostNL_Frontend')) :
9
10 /**
11 * Frontend views
12 */
13 class WooCommerce_PostNL_Frontend {
14
15 const RADIO_CHECKED = 'on';
16 private $frontend_settings;
17
18 function __construct() {
19 // Customer Emails
20 if (isset(WooCommerce_PostNL()->general_settings['email_tracktrace'])) {
21 add_action('woocommerce_email_before_order_table', array($this, 'track_trace_email'), 10, 2);
22 }
23
24 // Track & Trace in my account
25 if (isset(WooCommerce_PostNL()->general_settings['myaccount_tracktrace'])) {
26 add_filter('woocommerce_my_account_my_orders_actions', array($this, 'track_trace_myaccount'), 10, 2);
27 }
28
29 // pickup address in email
30 // woocommerce_email_customer_details:
31 // @10 = templates/email-customer-details.php
32 // @20 = templates/email-addresses.php
33 add_action('woocommerce_email_customer_details', array($this, 'email_pickup_html'), 19, 3);
34
35 // pickup address on thank you page
36 add_action('woocommerce_thankyou', array($this, 'thankyou_pickup_html'), 10, 1);
37
38 // WooCommerce PDF Invoices & Packing Slips Premium Templates compatibility
39 add_filter('wpo_wcpdf_templates_replace_postnl_delivery_date', array($this, 'wpo_wcpdf_delivery_date'), 10, 2);
40 add_filter('wpo_wcpdf_templates_replace_postnl_tracktrace', array($this, 'wpo_wcpdf_tracktrace'), 10, 2);
41 add_filter('wpo_wcpdf_templates_replace_postnl_tracktrace_link', array($this, 'wpo_wcpdf_tracktrace_link'), 10, 2);
42 add_filter('wpo_wcpdf_templates_replace_postnl_delivery_options', array($this, 'wpo_wcpdf_delivery_options'), 10, 2);
43
44 // Delivery options
45 if (isset(WooCommerce_PostNL()->checkout_settings['postnl_checkout'])) {
46 // Change the position of the checkout
47 if (isset(WooCommerce_PostNL()->checkout_settings['checkout_position'])) {
48 $checkout_place = WooCommerce_PostNL()->checkout_settings['checkout_position'];
49 } else {
50 $checkout_place = 'woocommerce_after_checkout_billing_form';
51 }
52
53 add_action('wp_enqueue_scripts', array($this, 'inject_delivery_options_variables'), 9999);
54 add_action(apply_filters('wc_postnl_delivery_options_location', $checkout_place), array($this, 'output_delivery_options'), 10);
55 }
56
57 // Save delivery options data
58 add_action('woocommerce_checkout_update_order_meta', array($this, 'save_delivery_options'), 10, 2);
59
60 // Delivery options fees
61 add_action('woocommerce_cart_calculate_fees', array($this, 'get_delivery_options_fees'));
62
63 // Output most expensive shipping class in frontend data
64 add_action('woocommerce_checkout_after_order_review', array($this, 'output_shipping_data'));
65 add_action('woocommerce_update_order_review_fragments', array($this, 'order_review_fragments'));
66
67 $this->frontend_settings = new WooCommerce_PostNL_Frontend_Settings();
68 }
69
70 public function track_trace_email($order, $sent_to_admin) {
71 if ($sent_to_admin) return;
72
73 if (WCX_Order::get_status($order) != 'completed') return;
74
75 $order_id = WCX_Order::get_id($order);
76
77 $tracktrace_links = WooCommerce_PostNL()->admin->get_tracktrace_links($order_id);
78 if ( ! empty($tracktrace_links)) {
79 $email_text = __(
80 'You can track your order with the following PostNL Track & Trace code:',
81 'woocommerce-postnl'
82 );
83 $email_text = apply_filters('wcpostnl_email_text', $email_text, $order);
84 ?>
85 <p><?php echo $email_text . ' ' . implode(', ', $tracktrace_links); ?></p>
86
87 <?php
88 }
89 }
90
91 public function email_pickup_html($order, $sent_to_admin = false, $plain_text = false) {
92 WooCommerce_PostNL()->admin->show_order_delivery_options($order);
93 }
94
95 public function thankyou_pickup_html($order_id) {
96 $order = wc_get_order($order_id);
97 WooCommerce_PostNL()->admin->show_order_delivery_options($order);
98 }
99
100 public function track_trace_myaccount($actions, $order) {
101 $order_id = WCX_Order::get_id($order);
102 if ($consignments = WooCommerce_PostNL()->admin->get_tracktrace_shipments($order_id)) {
103 foreach ( $consignments as $key => $consignment ) {
104 $actions['postnl_tracktrace_' . $consignment['tracktrace']] = array(
105 'url' => $consignment['tracktrace_url'],
106 'name' => apply_filters(
107 'wcpostnl_myaccount_tracktrace_button',
108 __('Track & Trace', 'wooocommerce-postnl')
109 )
110 );
111 }
112 }
113
114 return $actions;
115 }
116
117 public function wpo_wcpdf_delivery_options($replacement, $order) {
118 ob_start();
119 WooCommerce_PostNL()->admin->show_order_delivery_options($order);
120
121 return ob_get_clean();
122 }
123
124 public function wpo_wcpdf_delivery_date($replacement, $order) {
125 if ($delivery_date = WooCommerce_PostNL()->export->get_delivery_date($order)) {
126 $formatted_date = date_i18n(
127 apply_filters('wcpostnl_delivery_date_format', wc_date_format()),
128 strtotime($delivery_date)
129 );
130
131 return $formatted_date;
132 }
133
134 return $replacement;
135 }
136
137 public function wpo_wcpdf_tracktrace($replacement, $order) {
138 if ($shipments = WooCommerce_PostNL()->admin->get_tracktrace_shipments(WCX_Order::get_id($order))) {
139 $tracktrace = array();
140 foreach ( $shipments as $shipment ) {
141 if ( ! empty($shipment['tracktrace'])) {
142 $tracktrace[] = $shipment['tracktrace'];
143 }
144 }
145 $replacement = implode(', ', $tracktrace);
146 }
147
148 return $replacement;
149 }
150
151 public function wpo_wcpdf_tracktrace_link($replacement, $order) {
152 $tracktrace_links = WooCommerce_PostNL()->admin->get_tracktrace_links(WCX_Order::get_id($order));
153 if ( ! empty($tracktrace_links)) {
154 $replacement = implode(', ', $tracktrace_links);
155 }
156
157 return $replacement;
158 }
159
160 /**
161 * Output some stuff.
162 * Return to hide delivery options
163 */
164 public function output_delivery_options() {
165 do_action('woocommerce_postnl_before_delivery_options');
166 require_once(WooCommerce_PostNL()->plugin_path() . '/templates/wcmp-delivery-options-template.php');
167 do_action('woocommerce_postnl_after_delivery_options');
168 }
169
170 /**
171 * Output inline script with the variables needed
172 */
173 public function inject_delivery_options_variables() {
174 wp_localize_script(
175 'wc-postnl',
176 'wcmp_delivery_options',
177 array(
178 'shipping_methods' => $this->get_delivery_options_shipping_methods(),
179 'always_display' => $this->postnl_delivery_options_always_display()
180 )
181 );
182
183 wp_localize_script(
184 'wc-postnl',
185 'wcmp_config',
186 $this->get_checkout_config()
187 );
188 }
189
190 public function output_shipping_data() {
191 $shipping_data = $this->get_shipping_data();
192 printf('<div class="postnl-shipping-data">%s</div>', $shipping_data);
193 }
194
195 public function get_shipping_data() {
196 if ($shipping_class = $this->get_cart_shipping_class()) {
197 $shipping_data = sprintf(
198 '<input type="hidden" value="%s" id="postnl_highest_shipping_class" name="postnl_highest_shipping_class">',
199 $shipping_class
200 );
201
202 return $shipping_data;
203 }
204
205 return false;
206 }
207
208 /**
209 * Save delivery options to order when used
210 *
211 * @param int $order_id
212 * @param array $posted
213 *
214 * @return void
215 */
216 public function save_delivery_options($order_id, $posted) {
217 $order = WCX::get_order($order_id);
218
219 if ($_POST['postnl_highest_shipping_class'] != null) {
220 WCX_Order::update_meta_data(
221 $order,
222 '_postnl_highest_shipping_class',
223 $_POST['postnl_highest_shipping_class']
224 );
225 } else {
226 if (isset($_POST['shipping_method'])) {
227 WCX_Order::update_meta_data(
228 $order,
229 '_postnl_highest_shipping_class',
230 $_POST['shipping_method'][0]
231 );
232 }
233 }
234
235 if (isset($_POST['postnl-signature-selector'])) {
236 WCX_Order::update_meta_data($order, '_postnl_signature', self::RADIO_CHECKED);
237 }
238
239 if (isset($_POST['method-postnl-only-recipient-selector'])) {
240 WCX_Order::update_meta_data($order, '_postnl_only_recipient', self::RADIO_CHECKED);
241 }
242
243 if ( ! empty($_POST['post-post-nl-data'])) {
244 $delivery_options = json_decode(stripslashes($_POST['post-post-nl-data']), true);
245 WCX_Order::update_meta_data($order, '_postnl_delivery_options', $delivery_options);
246 }
247 }
248
249 /**
250 * Get delivery fee in your order overview, at the front of the website
251 *
252 * @param $cart
253 */
254 public function get_delivery_options_fees() {
255 if ( ! $_POST || (is_admin() && ! is_ajax())) {
256 return;
257 }
258
259 if (isset($_POST['post_data'])) {
260 // non-default post data for AJAX calls
261 parse_str($_POST['post_data'], $post_data);
262 } else {
263 // checkout finalization
264 $post_data = $_POST;
265 }
266
267 /* check for delivery options & add fees*/
268 if ( ! empty($post_data['post-post-nl-data'])) {
269 $delivery_options = json_decode(stripslashes($post_data['post-post-nl-data']), true);
270
271 /* Fees for delivery time options*/
272 if (isset($delivery_options['time'])) {
273 $time = array_shift($delivery_options['time']); // take first element in time array
274 if (isset($time['price_comment'])) {
275 switch($time['price_comment']) {
276 case 'morning':
277 if ( ! empty(WooCommerce_PostNL()->checkout_settings['morning_fee'])) {
278 $fee = WooCommerce_PostNL()->checkout_settings['morning_fee'];
279 $fee_name = __('Morning delivery', 'woocommerce-postnl');
280
281 $this->add_fee_signature($delivery_options, 'Signature on delivery');
282 }
283 break;
284 case 'standard':
285
286 $this->add_fee_signature($delivery_options, 'Signature on delivery');
287 $this->add_fee_only_recipient($delivery_options, 'Home address only');
288
289 break;
290 case 'avond':
291 if ( ! empty(WooCommerce_PostNL()->checkout_settings['evening_fee'])) {
292 $fee = WooCommerce_PostNL()->checkout_settings['evening_fee'];
293 $fee_name = __('Evening delivery', 'woocommerce-postnl');
294
295 $this->add_fee_signature($delivery_options, 'Signature on delivery');
296 }
297 break;
298 }
299
300 if ( ! empty($fee)) {
301 $this->add_fee($fee_name, $fee);
302 }
303 }
304 }
305
306 /* Fees for pickup & pickup express */
307 if (isset($delivery_options['price_comment'])) {
308 switch($delivery_options['price_comment']) {
309 case 'retail':
310 if ( ! empty(WooCommerce_PostNL()->checkout_settings['pickup_fee'])) {
311 $fee = WooCommerce_PostNL()->checkout_settings['pickup_fee'];
312 $fee_name = __('PostNL pickup', 'woocommerce-postnl');
313 }
314 break;
315 case 'retailexpress':
316 if ( ! empty(WooCommerce_PostNL()->checkout_settings['pickup_express_fee'])) {
317 $fee = WooCommerce_PostNL()->checkout_settings['pickup_express_fee'];
318 $fee_name = __('PostNL Pickup Express', 'woocommerce-postnl');
319 }
320 break;
321 }
322
323 if ( ! empty($fee)) {
324 $this->add_fee($fee_name, $fee);
325 }
326 }
327 }
328 }
329
330 /**
331 * Get shipping tax class
332 * adapted from WC_Tax::get_shipping_tax_rates
333 * assumes per order shipping (per item shipping not supported for postnl yet)
334 * @return string tax class
335 */
336 public function get_shipping_tax_class() {
337 $shipping_tax_class = get_option('woocommerce_shipping_tax_class');
338 // WC3.0+ sets 'inherit' for taxes based on items, empty for 'standard'
339 if (version_compare(WOOCOMMERCE_VERSION, '3.0', '>=') && 'inherit' !== $shipping_tax_class) {
340 $shipping_tax_class = '' === $shipping_tax_class ? 'standard' : $shipping_tax_class;
341
342 return $shipping_tax_class;
343 } else if ( ! empty($shipping_tax_class) && 'inherit' !== $shipping_tax_class) {
344 return $shipping_tax_class;
345 }
346
347 if ($shipping_tax_class == 'inherit') {
348 $shipping_tax_class = '';
349 }
350
351 // See if we have an explicitly set shipping tax class
352 if ($shipping_tax_class) {
353 $tax_class = 'standard' === $shipping_tax_class ? '' : $shipping_tax_class;
354 }
355
356 $location = WC_Tax::get_tax_location('');
357
358 if (sizeof($location) === 4) {
359 list($country, $state, $postcode, $city) = $location;
360
361 // This will be per order shipping - loop through the order and find the highest tax class rate
362 $cart_tax_classes = WC()->cart->get_cart_item_tax_classes();
363 // If multiple classes are found, use the first one. Don't bother with standard rate, we can get that later.
364 if (sizeof($cart_tax_classes) > 1 && ! in_array('', $cart_tax_classes)) {
365 $tax_classes = WC_Tax::get_tax_classes();
366
367 foreach ( $tax_classes as $tax_class ) {
368 $tax_class = sanitize_title($tax_class);
369 if (in_array($tax_class, $cart_tax_classes)) {
370 // correct $tax_class is now set
371 break;
372 }
373 }
374 // If a single tax class is found, use it
375 } else {
376 if (sizeof($cart_tax_classes) == 1) {
377 $tax_class = array_pop($cart_tax_classes);
378 }
379 }
380
381 // no rate = standard rate
382 if (empty($tax_class)) {
383 $tax_class = 'standard';
384 }
385 }
386
387 return $tax_class;
388 }
389
390 /**
391 * Get the most expensive shipping class in the cart
392 * Requires WC2.4+
393 * Only supports 1 package, takes the first
394 * @return [type] [description]
395 */
396 public function get_cart_shipping_class() {
397 if (version_compare(WOOCOMMERCE_VERSION, '2.4', '<')) {
398 return false;
399 }
400
401 $chosen_method = isset(WC()->session->chosen_shipping_methods[0]) ? WC()->session->chosen_shipping_methods[0] : '';
402
403 // get package
404 $packages = WC()->shipping->get_packages();
405 $package = current($packages);
406
407 $shipping_method = WooCommerce_PostNL()->export->get_shipping_method($chosen_method);
408 if (empty($shipping_method)) {
409 return false;
410 }
411
412 // get shipping classes from package
413 $found_shipping_classes = $shipping_method->find_shipping_classes($package);
414 // return print_r( $found_shipping_classes, true );
415
416 $highest_class = WooCommerce_PostNL()->export->get_shipping_class(
417 $shipping_method,
418 $found_shipping_classes
419 );
420
421 return $highest_class;
422 }
423
424 public function order_review_fragments($fragments) {
425 $postnl_shipping_data = $this->get_shipping_data();
426 $fragments['.postnl-shipping-data'] = $postnl_shipping_data;
427
428 return $fragments;
429 }
430
431 // converts price string to float value, assuming no thousand-separators used
432 public function normalize_price($price) {
433 $price = str_replace(',', '.', $price);
434 $price = floatval($price);
435
436 return $price;
437 }
438
439 private function get_checkout_config() {
440 $PostNLConfig = [
441
442 "address" => [
443 "cc" => '',
444 "postalCode" => '',
445 "number" => '',
446 "city" => ''
447 ],
448 "txtWeekDays" => [
449 'Zondag',
450 'Maandag',
451 'Dinsdag',
452 'Woensdag',
453 'Donderdag',
454 'Vrijdag',
455 'Zaterdag'
456 ],
457 "config" => [
458 "apiBaseUrl" => WooCommerce_PostNL_Frontend_Settings::BASE_URL,
459 "carrier" => "1",
460
461 "priceMorningDelivery" => $this->frontend_settings->get_price('morning'),
462 "priceNormalDelivery" => "",
463 "priceEveningDelivery" => $this->frontend_settings->get_price('evening'),
464 "priceSignature" => $this->frontend_settings->get_price('signature'),
465 "priceOnlyRecipient" => $this->frontend_settings->get_price('only_recipient'),
466 "pricePickup" => $this->frontend_settings->get_price('pickup'),
467 "pricePickupExpress" => $this->frontend_settings->get_price('pickup_express'),
468
469 "allowMondayDelivery" => $this->frontend_settings->is_enabled('saturday_cutoff'),
470 "allowMorningDelivery" => isset(WooCommerce_PostNL()->export_defaults['age_check']) ? 0 : $this->frontend_settings->is_enabled('morning'),
471 "allowEveningDelivery" => isset(WooCommerce_PostNL()->export_defaults['age_check']) ? 0 : $this->frontend_settings->is_enabled('evening'),
472 "allowSignature" => isset(WooCommerce_PostNL()->export_defaults['age_check']) ? 0 : $this->frontend_settings->is_enabled('signature'),
473 "allowOnlyRecipient" => isset(WooCommerce_PostNL()->export_defaults['age_check']) ? 0 : $this->frontend_settings->is_enabled('only_recipient'),
474 "allowPickupPoints" => $this->frontend_settings->is_enabled('pickup'),
475 "allowPickupExpress" => $this->frontend_settings->is_enabled('pickup_express'),
476
477 "dropOffDays" => $this->frontend_settings->get_dropoff_days(),
478 "saturdayCutoffTime" => $this->frontend_settings->get_saturday_cutoff_time(),
479 "cutoffTime" => $this->frontend_settings->get_cutoff_time(),
480 "deliverydaysWindow" => $this->frontend_settings->get_deliverydays_window(),
481 "dropoffDelay" => $this->frontend_settings->get_dropoff_delay(),
482
483 ],
484 "textToTranslate" =>[
485 "deliveryTitle"=> __($this->frontend_settings->get_title('at_home_delivery'), 'woocommerce-postnl'),
486 "deliveryMorningTitle" => __($this->frontend_settings->get_title('morning'),'woocommerce-postnl'),
487 "deliveryStandardTitle" => __($this->frontend_settings->get_title('standard'),'woocommerce-postnl'),
488 "deliveryEveningTitle" => __($this->frontend_settings->get_title('evening'),'woocommerce-postnl'),
489 "signatureTitle"=> __($this->frontend_settings->get_title('signature'), 'woocommerce-postnl'),
490 "onlyRecipientTitle"=> __($this->frontend_settings->get_title('only_recipient'), 'woocommerce-postnl'),
491 "saturdayDeliveryTitle"=> __('saturday_delivery_title', 'woocommerce-postnl'),
492 "pickupTitle"=> __($this->frontend_settings->get_title('pickup'), 'woocommerce-postnl'),
493 "headerDeliveryOptions" => __($this->frontend_settings->get_title('header_delivery_options'), 'woocommerce-postnl'),
494
495 "BEdeliveryTitle" => __($this->frontend_settings->get_title('belgium_at_home_delivery'), 'woocommerce-postnl'),
496 "BEdeliveryStandardTitle" => __($this->frontend_settings->get_title('belgium_standard'), 'woocommerce-postnl'),
497
498 "addressNotFound" => __('Address details are not entered', 'woocommerce-postnl'),
499 "pickUpFrom" =>__('Pick up from', 'woocommerce-postnl'),
500 "openingHours" =>__('Opening hours', 'woocommerce-postnl'),
501 "closed" =>__('Closed', 'woocommerce-postnl'),
502 "postcode" =>__('Postcode', 'woocommerce-postnl'),
503 "houseNumber" =>__('House number', 'woocommerce-postnl'),
504 "city"=>__('City', 'woocommerce-postnl'),
505 "retry" =>__('Retry', 'woocommerce-postnl'),
506 "wrongHouseNumberPostcode" =>__('House number/Postcode combination unknown', 'woocommerce-postnl'),
507 "quickDelivery"=>__('Deliver as quickly as possible', 'woocommerce-postnl'),
508
509 'sunday'=> __('Sunday', 'woocommerce-postnl'),
510 'monday'=> __('Monday', 'woocommerce-postnl'),
511 'tuesday'=> __('Tuesday', 'woocommerce-postnl'),
512 'wednesday'=> __('Wednesday', 'woocommerce-postnl'),
513 'thursday'=> __('Thursday', 'woocommerce-postnl'),
514 'friday'=> __('Friday', 'woocommerce-postnl'),
515 'saturday'=> __('Saturday', 'woocommerce-postnl')
516 ]
517 ];
518
519 return json_encode($PostNLConfig);
520 // Use cutoff_time and saturday_cutoff_time on saturdays
521 }
522
523 private function add_fee($fee_name, $fee) {
524 $fee = $this->normalize_price($fee);
525 // get shipping tax data
526 $shipping_tax_class = $this->get_shipping_tax_class();
527 if ($shipping_tax_class) {
528 if ($shipping_tax_class == 'standard') {
529 $shipping_tax_class = '';
530 }
531 WC()->cart->add_fee($fee_name, $fee, true, $shipping_tax_class);
532 } else {
533 WC()->cart->add_fee($fee_name, $fee);
534 }
535 }
536
537 /**
538 * Check witch delivery option is selected
539 *
540 * @param $post_data
541 * @param $post_data_value
542 * @param $delivery_type
543 * @param $backend_setting
544 * @param $delivery_title
545 *
546 * @return bool
547 */
548 private function add_fee_from_setting($post_data, $post_data_value, $delivery_type, $backend_setting, $delivery_title) {
549 // Fee for "delivery" option
550 if (isset($post_data[$post_data_value]) && $post_data[$post_data_value] == $delivery_type) {
551 if ( ! empty(WooCommerce_PostNL()->checkout_settings[$backend_setting])) {
552 $fee = WooCommerce_PostNL()->checkout_settings[$backend_setting];
553 $fee_name = __($delivery_title, 'woocommerce-postnl');
554 $this->add_fee($fee_name, $fee);
555
556 return true;
557 }
558 }
559
560 return false;
561 }
562
563 private function add_fee_signature($delivery_options, $delivery_title) {
564 if ($delivery_options['signature'] !== 1) {
565 return;
566 }
567
568 $fee = WooCommerce_PostNL()->checkout_settings['signature_fee'];
569
570 if ( ! empty($fee)) {
571 $fee_name = __($delivery_title, 'woocommerce-postnl');
572 $this->add_fee($fee_name, $fee);
573 }
574 }
575
576 private function add_fee_only_recipient($delivery_options, $delivery_title) {
577 if ($delivery_options['only_recipient'] !== 1) {
578 return;
579 }
580
581 $fee = WooCommerce_PostNL()->checkout_settings['only_recipient_fee'];
582
583 if ( ! empty($fee)) {
584 $fee_name = __($delivery_title, 'woocommerce-postnl');
585 $this->add_fee($fee_name, $fee);
586 }
587 }
588
589 /**
590 * @return string
591 */
592 private function get_delivery_options_shipping_methods() {
593 if (isset(
594 WooCommerce_PostNL()->export_defaults['shipping_methods_package_types']
595 )
596 && isset(WooCommerce_PostNL()->export_defaults['shipping_methods_package_types'][WooCommerce_PostNL_Export::PACKAGE])) {
597 // Shipping methods associated with parcels = enable delivery options
598 $delivery_options_shipping_methods = WooCommerce_PostNL()->export_defaults['shipping_methods_package_types'][WooCommerce_PostNL_Export::PACKAGE];
599 } else {
600 $delivery_options_shipping_methods = array();
601 }
602
603 return json_encode($delivery_options_shipping_methods);
604 }
605
606 private function postnl_delivery_options_always_display() {
607 if (isset(WooCommerce_PostNL()->checkout_settings['checkout_display'])
608 && WooCommerce_PostNL()->checkout_settings['checkout_display'] == 'all_methods') {
609 return true;
610 }
611
612 return false;
613 }
614 }
615
616 endif; // class_exists
617
618 return new WooCommerce_PostNL_Frontend();
619