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 / assets / js / postnl.js

postnl.js in PostNL for WooCommerce 3.1.4, at assets/js/postnl.js

987 lines 52.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 PostNL = {
2 /*
3 * Init
4 *
5 * Initialize the PostNL checkout.
6 *
7 */
8 data: {},
9 currentLocation: {},
10
11 DELIVERY_MORNING: 'morning',
12 DELIVERY_NORMAL: 'standard',
13 DELIVERY_EVENING: 'avond',
14 DELIVERY_PICKUP: 'retail',
15 DELIVERY_PICKUP_EXPRESS: 'retailexpress',
16 DELIVERY_SIGNATURE: 0,
17 DELIVERY_ONLY_RECIPIENT: 0,
18
19 SPLIT_STREET_REGEX: /(.*?)\s?(\d{1,4})[/\s\-]{0,2}([a-zA-Z]{1}\d{1,3}|-\d{1,4}|\d{2}\w{1,2}|[a-zA-Z]{1}[a-zA-Z\s]{0,3})?$/g,
20
21 init: function() {
22 this.data = JSON.parse(wcmp_config);
23 isMobile = jQuery(window).width() < 980;
24
25 /* Titles of the options*/
26 if (PostNL.data.textToTranslate.deliveryTitle) {
27 jQuery('#post-delivery-title').html(PostNL.data.textToTranslate.deliveryTitle);
28 }
29 if (PostNL.data.textToTranslate.headerDeliveryOptions) {
30 jQuery('#post-delivery-options-title').html(PostNL.data.textToTranslate.headerDeliveryOptions);
31 jQuery('#header-delivery-options-title').show();
32 }
33 if (PostNL.data.textToTranslate.onlyRecipientTitle) {
34 jQuery('#post-only-recipient-title').html(PostNL.data.textToTranslate.onlyRecipientTitle);
35 }
36 if (PostNL.data.textToTranslate.signatureTitle) {
37 jQuery('#post-signature-title').html(PostNL.data.textToTranslate.signatureTitle);
38 }
39 if (PostNL.data.textToTranslate.pickupTitle) {
40 jQuery('#post-pickup-title').html(PostNL.data.textToTranslate.pickupTitle);
41 jQuery('.post-pickup-delivery-titel').html(PostNL.data.textToTranslate.pickUpFrom);
42 }
43
44 /* Prices */
45 var prices = {
46 'morning': this.data.config.priceMorningDelivery,
47 'evening': this.data.config.priceEveningDelivery,
48 'normal': this.data.config.priceNormalDelivery,
49 'signature': this.data.config.priceSignature,
50 'only-recipient': this.data.config.priceOnlyRecipient,
51 'pickup': this.data.config.pricePickup
52 };
53
54 PostNL.showPrices(prices);
55 PostNL.callDeliveryOptions();
56
57 /* Engage defaults */
58 PostNL.hideDelivery();
59 jQuery('#method-postnl-normal').click();
60
61 PostNL.bind();
62 },
63
64 showPrices: function(prices) {
65 jQuery.each(prices, function(selectName, price) {
66 jQuery('#post-' + selectName + '-delivery, #post-' + selectName + '-price').html(PostNL.getPriceHtml(price));
67 });
68 },
69
70 getPriceHtml: function(priceOfDeliveryOption) {
71 var price;
72
73 if (!priceOfDeliveryOption) {
74 price = "";
75 }
76
77 if (parseFloat(priceOfDeliveryOption) >= 0) {
78 price = '+ &euro; ' + Number(priceOfDeliveryOption).toFixed(2).replace(".", ",");
79 }
80
81 if (parseFloat(priceOfDeliveryOption) < 0) {
82 price = "<p class='colorGreen'>"+'- &euro; ' + Number(priceOfDeliveryOption).toFixed(2).replace(/-|\./g,function(match) {return (match==".")?",":""})+"</p>";
83 }
84
85 if (priceOfDeliveryOption && isNaN(parseFloat(priceOfDeliveryOption))) {
86 price = priceOfDeliveryOption;
87 }
88
89 return price;
90 },
91
92 setCurrentDeliveryOptions: function() {
93 if (typeof PostNL.storeDeliveryOptions === 'undefined') {
94 console.error('setCurrentDeliveryOptions() PostNL.storeDeliveryOptions === undefined');
95 return;
96 }
97
98 var selectedDate = jQuery('#post-select-date').val();
99 var selectDateKey = PostNL.storeDeliveryOptions.data.delivery[selectedDate]['time'];
100
101 PostNL.hideMorningDelivery();
102 PostNL.hideEveningDelivery();
103
104 jQuery.each(selectDateKey, function(key, value) {
105 if (value['price_comment'] == 'morning' && PostNL.data.config.allowMorningDelivery) {
106 var morningTitle = PostNL.data.textToTranslate.deliveryMorningTitle;
107 PostNL.getDeliveryTime(morningTitle, 'morning', value['start'], value['end']);
108 PostNL.showMorningDelivery();
109 }
110
111 if (value['price_comment'] == 'standard') {
112 var standardTitle = PostNL.data.textToTranslate.deliveryStandardTitle;
113 if (PostNL.data.address.cc === 'BE') {
114 standardTitle = PostNL.data.textToTranslate.BEdeliveryStandardTitle;
115 }
116 PostNL.getDeliveryTime(standardTitle, 'standard', value['start'], value['end']);
117 }
118 if (value['price_comment'] == 'avond' && PostNL.data.config.allowEveningDelivery) {
119 var eveningTitle = PostNL.data.textToTranslate.deliveryEveningTitle;
120 PostNL.getDeliveryTime(eveningTitle, 'evening', value['start'], value['end']);
121 PostNL.showEveningDelivery();
122 }
123 });
124 },
125
126 getDeliveryTime: function(configDeliveryTitle, deliveryMoment, startTime, endTime) {
127 startTime = startTime.replace(/(.*)\D\d+/, '$1');
128 endTime = endTime.replace(/(.*)\D\d+/, '$1');
129
130 jQuery('#post-' + deliveryMoment + '-title').html(configDeliveryTitle);
131
132 if (!configDeliveryTitle) {
133 jQuery('#post-' + deliveryMoment + '-title').html(startTime + ' - ' + endTime);
134 }
135 },
136
137 setCurrentLocation: function() {
138 var locationId = jQuery('#post-pickup-location').val();
139 this.currentLocation = this.getPickupByLocationId(PostNL.storeDeliveryOptions.data.pickup, locationId);
140 },
141
142 /*
143 * Bind
144 *
145 * Bind actions to selectors.
146 *
147 */
148 bind: function() {
149 jQuery('#post-submit').on('click', function(e) {
150 e.preventDefault();
151 PostNL.exportDeliveryOptionToWebshop();
152 });
153
154 /* show default delivery options and hide PostNL options */
155 jQuery('#post-select-delivery').on('click', function() {
156 PostNL.setCurrentDeliveryOptions();
157 PostNL.showDelivery();
158 PostNL.showShippingAddress();
159 PostNL.hidePickUpLocations();
160 });
161
162 /* hide default delivery options and show PostNL options */
163 jQuery('#post-pickup-delivery').on('click', function() {
164 PostNL.hideDelivery();
165 PostNL.hideShippingAddress();
166 PostNL.showPickUpLocations();
167 });
168
169 jQuery('#method-postnl-delivery-morning, #method-postnl-delivery-evening').on('click', function() {
170 PostNL.defaultCheckCheckbox('post-only-recipient');
171 });
172
173 /* Mobile specific triggers */
174 if (isMobile) {
175 jQuery('#post-show-location-details').on('click', function() {
176 PostNL.setCurrentLocation();
177 PostNL.showLocationDetails();
178 PostNL.hideDelivery();
179 });
180 }
181
182 /* Desktop specific triggers */
183 else {
184 jQuery('#post-show-location-details').on('click', function() {
185 PostNL.setCurrentLocation();
186 PostNL.showLocationDetails();
187 });
188 }
189
190 jQuery('#post-location-details').on('click', function() {
191 PostNL.hideLocationDetails();
192 });
193
194 jQuery('#method-postnl-normal').on('click', function() {
195 PostNL.defaultCheckCheckbox('method-postnl-normal');
196 });
197
198 // jQuery('#post-pickup-express').hide(); /* todo: move */
199
200 jQuery('#post-pickup-delivery, #post-pickup-location').on('change', function(e) {
201 PostNL.setCurrentLocation();
202 PostNL.toggleDeliveryOptions();
203 PostNL.mapExternalWebshopTriggers();
204 });
205
206 jQuery('#post-select-date').on('change', function(e) {
207 PostNL.setCurrentDeliveryOptions();
208 PostNL.mapExternalWebshopTriggers();
209 });
210
211 /* External webshop triggers */
212 jQuery('#post-load input, #post-load select').on('click', function() {
213 PostNL.mapExternalWebshopTriggers()
214 });
215
216 fields = window.postnl_is_using_split_address_fields
217 ? '#billing_house_number, #shipping_house_number'
218 : '#billing_address_1, #shipping_address_1';
219
220 jQuery('#billing_country, #shipping_country, #billing_postcode, #shipping_postcode, ' + fields).on('change', function() {
221 PostNL.callDeliveryOptions();
222 });
223 },
224
225 mapExternalWebshopTriggers: function() {
226 PostNL.DELIVERY_SIGNATURE = 0;
227 PostNL.DELIVERY_ONLY_RECIPIENT = 0;
228 PostNL.removeStyleFromPrice();
229
230 /**
231 * Morning delivery
232 *
233 */
234 if (jQuery('#post-pickup-delivery').prop('checked') === false && jQuery('#method-postnl-delivery-morning').prop('checked')) {
235 jQuery('#s_method_postnl_morning').click();
236 PostNL.DELIVERY_ONLY_RECIPIENT = 1;
237 PostNL.addStyleToPrice('#post-morning-delivery, #post-only-recipient-price');
238
239 /**
240 * Signature
241 */
242 if (jQuery('#post-signature-selector').prop('checked')) {
243 jQuery('#s_method_postnl_morning_signature').click();
244 PostNL.DELIVERY_SIGNATURE = 1;
245 PostNL.addStyleToPrice('#post-signature-price');
246 }
247
248 PostNL.addDeliveryToExternalInput(PostNL.DELIVERY_MORNING);
249 return;
250 }
251
252 /**
253 * Normal delivery
254 *
255 */
256 if (jQuery('#post-pickup-delivery').prop('checked') === false && jQuery('#method-postnl-normal').prop('checked')) {
257 PostNL.addStyleToPrice('#post-normal-delivery');
258
259 /**
260 * Signature and only recipient
261 */
262 if (jQuery('#post-signature-selector').prop('checked') && jQuery('#post-only-recipient-selector').prop('checked')) {
263 jQuery('#s_method_postnl_delivery_signature_and_only_recipient_fee').click();
264 PostNL.DELIVERY_SIGNATURE = 1;
265 PostNL.DELIVERY_ONLY_RECIPIENT = 1;
266 PostNL.addStyleToPrice('#post-signature-price, #post-only-recipient-price');
267 } else
268
269 /**
270 * Signature
271 */
272 if (jQuery('#post-signature-selector').prop('checked')) {
273 jQuery('#s_method_postnl_delivery_signature').click();
274 PostNL.DELIVERY_SIGNATURE = 1;
275 PostNL.addStyleToPrice('#post-signature-price');
276
277 } else
278
279 /**
280 * Only recipient
281 */
282 if (jQuery('#post-only-recipient-selector').prop('checked')) {
283 jQuery('#s_method_postnl_delivery_only_recipient').click();
284 PostNL.DELIVERY_ONLY_RECIPIENT = 1;
285 PostNL.addStyleToPrice('#post-only-recipient-price');
286
287 } else {
288 jQuery('#s_method_postnl_flatrate, #s_method_postnl_tablerate').click();
289 }
290
291 PostNL.addDeliveryToExternalInput(PostNL.DELIVERY_NORMAL);
292 return;
293 }
294
295 /**
296 * Evening delivery
297 *
298 */
299 if (jQuery('#post-pickup-delivery').prop('checked') === false && jQuery('#method-postnl-delivery-evening').prop('checked')) {
300 jQuery('#s_method_postnl_evening').click();
301 PostNL.DELIVERY_ONLY_RECIPIENT = 1;
302 PostNL.addStyleToPrice('#post-evening-delivery, #post-only-recipient-price');
303
304 /**
305 * Signature
306 */
307 if (jQuery('#post-signature-selector').prop('checked')) {
308 jQuery('#s_method_postnl_evening_signature').click();
309 PostNL.DELIVERY_SIGNATURE = 1;
310 PostNL.addStyleToPrice('#post-signature-price');
311 }
312
313 PostNL.addDeliveryToExternalInput(PostNL.DELIVERY_EVENING);
314 return;
315 }
316
317 /**
318 * Pickup
319 *
320 */
321 if (jQuery('#post-pickup-delivery').prop('checked') || jQuery('#post-pickup-selector').prop('checked')) {
322 /**
323 * Early morning pickup
324 */
325 if (jQuery('#post-pickup-express-selector').prop('checked')) {
326 jQuery('#s_method_postnl_pickup_express').click();
327 PostNL.addPickupToExternalInput(PostNL.DELIVERY_PICKUP_EXPRESS);
328 PostNL.addStyleToPrice('#post-pickup-express-price');
329 return;
330 } else {
331 PostNL.addStyleToPrice('#post-pickup-price');
332 }
333
334 jQuery('#s_method_postnl_pickup').click();
335 PostNL.addPickupToExternalInput(PostNL.DELIVERY_PICKUP);
336 }
337 },
338
339 addPickupToExternalInput: function(selectedPriceComment) {
340 var locationId = jQuery('#post-pickup-location').val();
341 var currentLocation = PostNL.getPickupByLocationId(PostNL.storeDeliveryOptions.data.pickup, locationId);
342
343 var result = jQuery.extend({}, currentLocation);
344
345 /* If pickup; convert pickup express to pickup */
346 if (selectedPriceComment === PostNL.DELIVERY_PICKUP) {
347 result.price_comment = PostNL.DELIVERY_PICKUP;
348 }
349
350 jQuery('body').trigger('update_checkout');
351 jQuery('#post-input').val(JSON.stringify(result));
352 },
353
354 addDeliveryToExternalInput: function(deliveryMomentOfDay) {
355 var deliveryDateId = jQuery('#post-select-date').val();
356 var currentDeliveryData = PostNL.triggerDefaultOptionDelivery(deliveryDateId, deliveryMomentOfDay);
357
358 if (currentDeliveryData !== null) {
359 currentDeliveryData.signature = PostNL.DELIVERY_SIGNATURE;
360 currentDeliveryData.only_recipient = PostNL.DELIVERY_ONLY_RECIPIENT;
361 jQuery('#post-input').val(JSON.stringify(currentDeliveryData));
362 }
363 jQuery('body').trigger('update_checkout');
364 },
365
366 addStyleToPrice: function(chosenDelivery) {
367 jQuery(chosenDelivery).addClass('post-bold-price');
368 },
369
370 removeStyleFromPrice: function() {
371 jQuery('.post-delivery-option-table').find("span").removeClass('post-bold-price');
372 },
373
374 triggerDefaultOptionDelivery: function(deliveryDateId, deliveryMomentOfDay) {
375 var dateArray = PostNL.data.deliveryOptions.data.delivery[deliveryDateId];
376 var currentDeliveryData = null;
377
378 jQuery.each(dateArray['time'], function(key, value) {
379 if (value.price_comment === deliveryMomentOfDay) {
380 currentDeliveryData = jQuery.extend({}, dateArray);
381 currentDeliveryData['time'] = [value];
382 }
383 });
384
385 if (currentDeliveryData === null) {
386 jQuery('#post-only-recipient-selector').prop('disabled', false).prop('checked', false);
387 jQuery('#method-postnl-normal').prop('checked', true);
388 PostNL.mapExternalWebshopTriggers();
389 }
390
391 return currentDeliveryData;
392 },
393
394 /*
395 * defaultCheckCheckbox
396 *
397 * Check the additional options that are required for certain delivery options
398 *
399 */
400 defaultCheckCheckbox: function(selectedOption) {
401 if (selectedOption === 'post-only-recipient') {
402 jQuery('#post-only-recipient-selector').prop('checked', true).prop({disabled: true});
403 jQuery('#post-only-recipient-price').html('Inclusief');
404 } else {
405 jQuery('#post-only-recipient-selector').prop('checked', false).removeAttr("disabled");
406 jQuery('#post-only-recipient-price').html(PostNL.getPriceHtml(this.data.config.priceOnlyRecipient));
407 }
408 },
409
410 /*
411 * toggleDeliveryOptions
412 *
413 * Shows and hides the display options that are valid for the recipient only and signature required pre-selectors
414 *
415 */
416 toggleDeliveryOptions: function() {
417 var isPickup = jQuery('#post-pickup-delivery').is(':checked');
418 jQuery('#post-pickup-selector').prop('checked', true);
419
420 if (isPickup && this.currentLocation.price_comment === PostNL.DELIVERY_PICKUP_EXPRESS && this.data.config.allowPickupExpress) {
421 jQuery('#post-pickup-express-price').html(PostNL.getPriceHtml(this.data.config.pricePickupExpress));
422 jQuery('#post-pickup-express').show();
423 } else {
424 jQuery('#post-pickup-express-selector').attr("checked", false);
425 jQuery('#post-pickup-express').hide();
426 }
427 },
428
429 /*
430 * exportDeliverOptionToWebshop
431 *
432 * Exports the selected delivery option to the webshop.
433 *
434 */
435 exportDeliveryOptionToWebshop: function() {
436 var deliveryOption = "";
437 var selected = jQuery("#post-delivery-option-form").find("input[type='radio']:checked");
438 if (selected.length > 0) {
439 deliveryOption = selected.val();
440 }
441 },
442
443 /*
444 * hideMessage
445 *
446 * Hides pop-up message.
447 *
448 */
449 hideMessage: function() {
450 jQuery('.post-message-model').hide();
451 jQuery('#post-delivery-option-form').show();
452 },
453
454 /*
455 * hideMessage
456 *
457 * Hides pop-up message.
458 *
459 */
460 showMessage: function(message) {
461 jQuery('.post-message-model').show();
462 jQuery('#post-message').html(message).show();
463 jQuery('#post-delivery-option-form').hide();
464
465 },
466
467 /*
468 * hideDelivery
469 *
470 * Hides interface part for delivery.
471 *
472 */
473 hideDelivery: function() {
474 jQuery('#post-delivery-date-text,.post-extra-delivery-options').hide();
475 jQuery('#post-select-date').parent().parent().hide();
476 jQuery('#post-delivery').parent().parent().hide();
477 PostNL.hideSignature();
478 PostNL.hideOnlyRecipient();
479 PostNL.hideMorningDelivery();
480 PostNL.hideEveningDelivery();
481 },
482
483 /*
484 * showDelivery
485 *
486 * Shows interface part for delivery.
487 *
488 */
489 showDelivery: function() {
490
491 jQuery('#post-delivery').parent().parent().show();
492
493 if (PostNL.data.address.cc === "NL") {
494 jQuery('#post-delivery-selectors-' + this.data.address.cc.toLowerCase()).show();
495 jQuery('.post-extra-delivery-options').show();
496
497 if (this.data.config.deliverydaysWindow >= 2) {
498 jQuery('#post-delivery-date-select').show();
499 }
500
501 PostNL.hideSignature();
502 if (this.data.config.allowSignature) {
503 PostNL.showSignature();
504 }
505
506 PostNL.hideOnlyRecipient();
507 if (this.data.config.allowOnlyRecipient) {
508 PostNL.showOnlyRecipient();
509 }
510 }
511
512 if (PostNL.data.address.cc === 'BE') {
513 jQuery('#post-delivery-title').html(PostNL.data.config.BEdeliveryTitle);
514 jQuery('#post-delivery-date-text').hide();
515 }
516 },
517
518 hideAllDeliveryOptions: function() {
519 jQuery('#post-load').hide();
520 },
521
522 showAllDeliveryOptions: function() {
523 jQuery('#post-load').show();
524 },
525
526 /*
527 * showSpinner
528 *
529 * Shows the PostNL spinner.
530 *
531 */
532 showSpinner: function() {
533 jQuery('#post-delivery-option-form').hide();
534 jQuery('.post-message-model').hide();
535 jQuery('#post-spinner-model').show();
536 },
537
538 /*
539 * hideSpinner
540 *
541 * Hides the PostNL spinner.
542 *
543 */
544 hideSpinner: function() {
545 jQuery('#post-spinner-model').hide();
546 },
547
548 showMorningDelivery: function() {
549 jQuery('#method-postnl-delivery-morning-div').show();
550 },
551
552 hideMorningDelivery: function() {
553 jQuery('#method-postnl-delivery-morning-div').hide();
554 },
555
556 showEveningDelivery: function() {
557 jQuery('#method-postnl-delivery-evening-div').show();
558 },
559
560 hideEveningDelivery: function() {
561 jQuery('#method-postnl-delivery-evening-div').hide();
562 },
563
564 showSignature: function() {
565 jQuery('.post-extra-delivery-option-signature, #post-signature-price').show();
566 },
567
568 hideSignature: function() {
569 jQuery('.post-extra-delivery-option-signature, #post-signature-price').hide();
570 },
571
572 showOnlyRecipient: function() {
573 jQuery('#post-only-recipient, #post-only-recipient-price').parent().show();
574 },
575
576 hideOnlyRecipient: function() {
577 jQuery('#post-only-recipient, #post-only-recipient-price').parent().hide();
578 },
579
580 /*
581 * dateToString
582 *
583 * Convert api date string format to human readable string format
584 *
585 */
586 dateToString: function(apiDate) {
587 var deliveryDate = apiDate;
588 var dateArr = deliveryDate.split('-');
589 var dateObj = new Date(dateArr[0], dateArr[1] - 1, dateArr[2]);
590 var day = ("0" + (dateObj.getDate())).slice(-2);
591 var month = ("0" + (dateObj.getMonth() + 1)).slice(-2);
592
593 return this.data.txtWeekDays[dateObj.getDay()] + " " + day + "-" + month + "-" + dateObj.getFullYear();
594 },
595
596 /*
597 * showDeliveryDates
598 *
599 * Show possible delivery dates.
600 *
601 */
602 showDeliveryDates: function() {
603 var html = "";
604 var deliveryWindow = parseInt(PostNL.data.config.deliverydaysWindow);
605
606 jQuery.each(PostNL.data.deliveryOptions.data.delivery, function(key, value) {
607 html += '<option value="' + key + '">' + PostNL.dateToString(value.date) + ' </option>\n';
608 });
609
610 /* Hide the day selector when the value of the deliverydaysWindow is 0*/
611 if (deliveryWindow === 0) {
612 jQuery('#post-delivery-date-select').hide();
613 }
614
615 /* When deliverydaysWindow is 1, hide the day selector and show a div to show the date */
616 if (deliveryWindow === 1) {
617 jQuery('#post-select-date').hide();
618 jQuery('#post-delivery-date-text').show();
619 }
620
621 /* When deliverydaysWindow > 1, show the day selector */
622 if (deliveryWindow > 1) {
623 jQuery('#post-select-date').show();
624 }
625
626 jQuery('#post-select-date, #post-date').html(html);
627 },
628
629 hideDeliveryDates: function() {
630 jQuery('#post-delivery-date-text').parent().hide();
631 },
632
633 /*
634 * clearPickupLocations
635 *
636 * Clear pickup locations and show a non-value option.
637 *
638 */
639 clearPickUpLocations: function() {
640 var html = '<option value="">---</option>';
641 jQuery('#post-pickup-location').html(html);
642 },
643
644 /*
645 * hidePickupLocations
646 *
647 * Hide the pickup location option.
648 *
649 */
650 hidePickUpLocations: function() {
651 if (!PostNL.data.config.allowPickupPoints) {
652 jQuery('#post-pickup-location-selector').hide();
653 }
654
655 jQuery('#post-pickup-options, #post-pickup, #post-pickup-express').hide();
656 },
657
658 /*
659 * showPickupLocations
660 *
661 * Shows possible pickup locations, from closest to further.
662 *
663 */
664 showPickUpLocations: function() {
665 if (false === PostNL.data.config.allowPickupPoints) {
666 return;
667 }
668
669 var html = "";
670 jQuery.each(PostNL.data.deliveryOptions.data.pickup, function(key, value) {
671 var distance = parseFloat(Math.round(value.distance) / 1000).toFixed(1);
672 html += '<option value="' + value.location_code + '">' + value.location + ', ' + value.street + ' ' + value.number + ", " + value.city + " (" + distance + " km) </option>\n";
673 });
674 jQuery('#post-pickup-location').html(html).prop("checked", true);
675 jQuery('#post-pickup-location-selector, #post-pickup-options, #post-pickup').show();
676 },
677
678 /*
679 * hideLocationDetails
680 *
681 * Hide the detailed information pop-up for selected location.
682 *
683 */
684 hideLocationDetails: function() {
685 jQuery('#post-delivery-option-form').show();
686 jQuery('#post-location-details').hide();
687 },
688
689 /*
690 * showLocationDetails
691 *
692 * Shows the detailed information pop-up for the selected pick-up location.
693 */
694 showLocationDetails: function() {
695 var html = "";
696 var locationId = jQuery('#post-pickup-location').val();
697
698 var currentLocation = PostNL.getPickupByLocationId(PostNL.storeDeliveryOptions.data.pickup, locationId);
699 var startTime = currentLocation.start_time;
700
701 /* Strip seconds if present */
702 if (startTime.length > 5) {
703 startTime = startTime.slice(0, -3);
704 }
705
706 html += '<svg class="svg-inline--fa post-fa-times fa-w-12" aria-hidden="true" data-prefix="fas" data-icon="times" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512" data-fa-i2svg=""><path fill="currentColor" d="M323.1 441l53.9-53.9c9.4-9.4 9.4-24.5 0-33.9L279.8 256l97.2-97.2c9.4-9.4 9.4-24.5 0-33.9L323.1 71c-9.4-9.4-24.5-9.4-33.9 0L192 168.2 94.8 71c-9.4-9.4-24.5-9.4-33.9 0L7 124.9c-9.4 9.4-9.4 24.5 0 33.9l97.2 97.2L7 353.2c-9.4 9.4-9.4 24.5 0 33.9L60.9 441c9.4 9.4 24.5 9.4 33.9 0l97.2-97.2 97.2 97.2c9.3 9.3 24.5 9.3 33.9 0z"></path></svg>'
707 html += '<span class="post-pickup-location-details-location"><h3>' + currentLocation.location + '</h3></span>';
708 html += '<svg class="post-postnl-logo"version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 100 99" enable-background="new 0 0 100 99" xml:space="preserve"><image id="postnl-logo" width="100" height="99" xlink:href="data:image/png;base64,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" /></svg>';
709 html += '<span class="post-pickup-location-details-street">' + currentLocation.street + '&nbsp;' + this.currentLocation.number + '</span>';
710 html += '<span class="post-pickup-location-details-city">' + currentLocation.postal_code + '&nbsp;' + currentLocation.city + '</span>';
711
712 if (currentLocation.phone_number) {
713 html += '<span class="post-pickup-location-details-phone">' + currentLocation.phone_number + '</span>';
714 }
715 html += '<span class="post-pickup-location-details-time">' + PostNL.data.textToTranslate.pickUpFrom + ':&nbsp;' + startTime + '</span>';
716 html += '<h3>' + PostNL.data.textToTranslate.openingHours + '</h3>';
717
718 jQuery.each(
719 currentLocation.opening_hours, function(weekday, value) {
720 html += '<span class="post-pickup-location-details-day">' + PostNL.data.textToTranslate[weekday] + "</span>";
721
722 if (value[0] === undefined) {
723 html += '<span class="post-time">' + PostNL.data.textToTranslate.closed + '</span>';
724 }
725
726 jQuery.each(value, function(key2, times) {
727 html += '<span class="post-time">' + times + "</span>";
728 });
729 html += "<br>";
730 });
731 jQuery('#post-delivery-option-form').hide();
732 jQuery('#post-location-details').html(html).css('display', 'inline-block');
733 },
734
735 /*
736 * hideShippingAddress
737 *
738 * Hide the "ship to different address" section.
739 *
740 */
741 hideShippingAddress: function() {
742 jQuery('.woocommerce-shipping-fields').hide();
743 },
744
745 /*
746 * showShippingAddress
747 *
748 * Show the "ship to different address" section.
749 *
750 */
751 showShippingAddress: function() {
752 jQuery('.woocommerce-shipping-fields').show();
753 },
754
755 /*
756 * getPickupByLocationId
757 *
758 * Find the location by id and return the object.
759 *
760 */
761 getPickupByLocationId: function(obj, locationId) {
762 var object;
763
764 jQuery.each(obj, function(key, info) {
765 if (info.location_code === locationId) {
766 object = info;
767 return false;
768 }
769 });
770
771 return object;
772 },
773
774 /*
775 * retryPostalCodeHouseNumber
776 *
777 * After detecting an unrecognised postal code / house number combination the user can try again.
778 * This function copies the newly entered data back into the webshop forms.
779 *
780 */
781 retryPostalCodeHouseNumber: function() {
782 var retryPostalCode = jQuery('#post-error-postcode').val();
783 var retryNumber = jQuery('#post-error-number').val();
784
785 if (window.postnl_is_using_split_address_fields) {
786 jQuery('#billing_house_number').val(retryNumber);
787 } else {
788 address = PostNL.data.address.street + ' ' + retryNumber;
789 if (typeof PostNL.data.address.numberSuffix !== 'undefined') {
790 address += PostNL.data.address.numberSuffix
791 }
792
793 jQuery('#billing_address_1').val(address);
794 }
795 jQuery('#billing_postcode').val(retryPostalCode);
796
797 PostNL.callDeliveryOptions();
798 jQuery('#post-select-delivery').click();
799 },
800
801 /*
802 * showFallBackDelivery
803 *
804 * If the API call fails and we have no data about delivery or pick up options
805 * show the customer an "As soon as possible" option.
806 */
807 showFallBackDelivery: function() {
808 PostNL.hideSpinner();
809 PostNL.hideDelivery();
810 jQuery('#post-select-date, #method-postnl-normal-div, .post-is-pickup-element').hide();
811 jQuery('#post-select-delivery-title').html('Zo snel mogelijk bezorgen');
812 },
813
814 /*
815 * showRetry
816 *
817 * If a customer enters an unrecognised postal code & house number combination show a
818 * pop-up so they can try again.
819 */
820 showRetry: function() {
821 PostNL.showMessage(
822 '<h3>' + PostNL.data.textToTranslate.wrongHouseNumberPostcode + '</h3>' +
823 '<div class="post-full-width post-error">' +
824 '<label for="post-error-postcode">' + PostNL.data.textToTranslate.postcode + '</label>' +
825 '<input type="text" name="post-error-postcode" id="post-error-postcode" value="' + PostNL.data.address.postalCode + '">' +
826 '</div><div class="post-full-width post-error">' +
827 '<label for="post-error-number">' + PostNL.data.textToTranslate.houseNumber + '</label>' +
828 '<input type="text" name="post-error-number" id="post-error-number" value="' + PostNL.data.address.number + '">' +
829 '<br><div id="post-error-try-again" class="button btn">' + PostNL.data.textToTranslate.again + '</div>' +
830 '</div>'
831 );
832
833 /* remove trigger that closes message */
834 jQuery('#post-message').off('click');
835
836 /* bind trigger to new button */
837 jQuery('#post-error-try-again').on('click', function() {
838 PostNL.retryPostalCodeHouseNumber();
839 });
840 },
841
842 setAddressFromInputFields: function() {
843 addressType = jQuery('#ship-to-different-address-checkbox').prop('checked') ? 'shipping' : 'billing';
844 address = PostNL.getAddressInputValues(addressType);
845
846 if (!PostNL.getAddressInputValues('billing').postalCode) {
847 return;
848 }
849
850 this.data.address.street = address.streetName;
851 this.data.address.number = address.houseNumber;
852 this.data.address.numberSuffix = address.houseNumberSuffix;
853 this.data.address.cc = address.country;
854 this.data.address.postalCode = address.postalCode;
855 this.data.address.city = address.city;
856 },
857
858 getAddressInputValues: function(type) {
859 streetParts = {};
860 input = {
861 'fullStreet': jQuery('#' + type + '_address_1').val(),
862 'postalCode': jQuery('#' + type + '_postcode').val(),
863 'city': jQuery('#' + type + '_city').val(),
864 'country': jQuery('#' + type + '_country').val(),
865 };
866
867 if (window.postnl_is_using_split_address_fields) {
868 input.streetName = jQuery('#' + type + '_street_name').val();
869 input.houseNumber = jQuery('#' + type + '_house_number').val();
870 input.houseNumberSuffix = jQuery('#' + type + '_house_number_suffix').val();
871 } else {
872 streetParts = PostNL.splitFullStreetFromInput(input.fullStreet);
873 input.streetName = streetParts.streetName;
874 input.houseNumber = streetParts.houseNumber;
875 input.houseNumberSuffix = streetParts.houseNumberSuffix;
876 }
877
878 return input;
879 },
880
881 /*
882 * splitFullStreetFromInput
883 *
884 * Split full street into parts and returning empty array if there's no street entered
885 */
886 splitFullStreetFromInput: function(fullStreet) {
887 result = {
888 streetName: '',
889 houseNumber: '',
890 houseNumberSuffix: '',
891 };
892
893 if (fullStreet.length) {
894 streetParts = new RegExp(PostNL.SPLIT_STREET_REGEX).exec(fullStreet);
895 result.streetName = streetParts[1];
896 result.houseNumber = streetParts[2];
897 result.houseNumberSuffix = streetParts[3];
898 }
899
900 return result;
901 },
902
903 /*
904 * callDeliveryOptions
905 *
906 * Calls the PostNL API to retrieve the pickup and delivery options for given house number and
907 * Postal Code.
908 *
909 */
910 callDeliveryOptions: function() {
911 PostNL.showSpinner();
912 PostNL.clearPickUpLocations();
913 PostNL.hideDelivery();
914 PostNL.setAddressFromInputFields();
915
916 // Hide PostNL field if there is no address entered
917 if (PostNL.data.address.postalCode == '' || PostNL.data.address.number == '') {
918 PostNL.hideSpinner();
919 PostNL.showMessage(
920 '<h3>' + PostNL.data.textToTranslate.addressNotFound + '</h3>'
921 );
922 return;
923 }
924
925 /* Check if the deliverydaysWindow == 0 and hide the select input*/
926 this.deliveryDaysWindow = this.data.config.deliverydaysWindow;
927
928 if (this.deliveryDaysWindow === 0) {
929 this.deliveryDaysWindow = 1;
930 }
931
932 /* Make the api request */
933 jQuery.get(this.data.config.apiBaseUrl + "delivery_options",
934 {
935 cc: this.data.address.cc,
936 postal_code: this.data.address.postalCode.trim(),
937 number: this.data.address.number.trim(),
938 city: this.data.address.city,
939 carrier: this.data.config.carrier,
940 dropoff_days: this.data.config.dropOffDays,
941 monday_delivery: this.data.config.allowMondayDelivery,
942 deliverydays_window: this.deliveryDaysWindow,
943 cutoff_time: this.data.config.cutoffTime,
944 dropoff_delay: this.data.config.dropoffDelay
945 })
946 .done(function(response) {
947 PostNL.data.deliveryOptions = response;
948 if (response.errors) {
949 jQuery.each(response.errors, function(key, value) {
950 /* Postal code & house number combination not found or not recognised. */
951 if (value.code == '3212' || value.code == '3505') {
952 PostNL.showRetry();
953 }
954
955 /* Any other error */
956 else {
957 PostNL.showFallBackDelivery();
958 }
959 });
960 }
961
962 /* No errors */
963 else {
964 PostNL.hideMessage();
965 PostNL.showPickUpLocations();
966 PostNL.showDeliveryDates();
967
968 if (PostNL.data.deliveryOptions.data.delivery.length <= 0) {
969 PostNL.hideDeliveryDates();
970 }
971 PostNL.storeDeliveryOptions = response;
972 }
973 PostNL.hideSpinner();
974 })
975 .fail(function() {
976 PostNL.showFallBackDelivery();
977 })
978 .always(function() {
979 jQuery('#post-select-delivery').click();
980 });
981 }
982 };
983 // timeout because postcode api might take too long to respond
984 setTimeout(function() {
985 PostNL.init();
986 }, 2000);
987