PluginProbe
MakeCommerce for WooCommerce / 1.1.7
MakeCommerce for WooCommerce v1.1.7
4.1.0 4.0.8 trunk 1.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 2.0.0 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2.0 2.2.1 2.2.2 All 96 releases
← All changes | makecommerce.php +297 -89 1.1.31.1.7 View file →
@@ -1,9 +1,9 @@
1 1 <?php
2 2 /*
3 3 Plugin Name: MakeCommerce for WooCommerce
4 4 Description: Adds MakeCommerce payment gateway and Itella/Omniva parcel machine shipping methods to Woocommerce checkout
5 - Version: 1.1.3
5 + Version: 1.1.7
6 6 Author: Maksekeskus AS
7 7 Author URI: https://MakeCommerce.net/
8 8 Text Domain: wc_makecommerce_domain
9 9 */
@@ -71,9 +71,9 @@
71 71 const module_homepage_url = 'https://maksekeskus.ee/en/integration-modules/makecommerce-woocommerce-payment-plugin/';
72 72 const testenv_homepage_url = 'http://maksekeskus.ee/en/for-developers/test-environment/';
73 73
74 74 public $id = 'makecommerce';
75 - public $version = '1.1.2';
75 + public $version = '1.1.7';
76 76
77 77 public $return_url;
78 78 public $return_url_cancel;
79 79
@@ -316,21 +316,10 @@
316 316 'type' => 'checkbox',
317 317 'default' => 'yes',
318 318 'desc_tip' => __('It will pass user Name and e-mail address to the Credit Card dialog to make the form filling easier', 'wc_makecommerce_domain'),
319 319 );
320 - $this->form_fields['cc_shop_name'] = array(
321 - 'title' => __('Shop name on credit card payment', 'wc_makecommerce_domain'),
322 - 'type' => 'text',
323 - 'desc_tip' => __('This will appear on buyer\'s credit card transaction', 'wc_makecommerce_domain'),
324 - );
325 - $this->form_fields['cc_cart_reference_string'] = array(
326 - 'title' => __('Order reference on credit card payment', 'wc_makecommerce_domain'),
327 - 'type' => 'text',
328 - 'default' => 'Order %s',
329 - 'desc_tip' => __('This will appear on buyer\'s credit card transaction where "%s" is the order number', 'wc_makecommerce_domain'),
330 - );
331 320 $this->form_fields['adv_title'] = array(
332 - 'title' => '<br>'.__('Advanced Settings', 'wc_makecommerce_domain'),
321 + 'title' => '<hr><br>'.__('Advanced Settings', 'wc_makecommerce_domain'),
333 322 'type' => 'title',
334 323 );
335 324 $this->form_fields['reload_links'] = array(
336 325 'type' => 'mc_banklinks_reload',
@@ -337,8 +326,13 @@
337 326 'title' => __('Update payment methods', 'wc_makecommerce_domain'),
338 327 'description' => __('Update', 'wc_makecommerce_domain'),
339 328 'desc_tip' => __('This will update shop configuration from MakeCommerce servers.', 'wc_makecommerce_domain'),
340 329 );
330 + $this->form_fields['cron_info'] = array(
331 + 'type' => 'cron_link',
332 + 'title' => __('Update url', 'wc_makecommerce_domain'),
333 + 'desc_tip' => __('Update url for cron job.', 'wc_makecommerce_domain'),
334 + );
341 335 }
342 336
343 337 public function generate_mc_hidden_html( $key, $data ) {
344 338 $field_key = $this->get_field_key($key);
@@ -351,9 +345,43 @@
351 345 </tr>
352 346 <?php
353 347 return ob_get_clean();
354 348 }
349 +
350 + public function generate_cron_link_html( $key, $data ) {
351 + $field = $this->get_field_key( $key );
352 + $defaults = array(
353 + 'title' => '',
354 + 'disabled' => false,
355 + 'class' => '',
356 + 'css' => '',
357 + 'placeholder' => '',
358 + 'type' => 'text',
359 + 'desc_tip' => false,
360 + 'description' => '',
361 + 'custom_attributes' => array()
362 + );
355 363
364 + $data = wp_parse_args( $data, $defaults );
365 + $shop_id_text = get_option('mc_banklinks_api_type', false) == 'live' ? 'mk-shop-id': 'mk-test-shop-id';
366 + ob_start();
367 + ?>
368 + <tr valign="top">
369 + <th scope="row" class="titledesc">
370 + <label for="<?php echo esc_attr( $field ); ?>"><?php echo wp_kses_post( $data['title'] ); ?></label>
371 + <?php echo $this->get_tooltip_html( $data ); ?>
372 + </th>
373 + <td class="forminp">
374 + <fieldset>
375 + <legend class="screen-reader-text"><span><?php echo wp_kses_post( $data['title'] ); ?></span></legend>
376 + <p><?php echo get_site_url(null, '?mk-action=mk-update&'.$shop_id_text.'=') . get_option('mk_test_shop_id', false);?></p>
377 + </fieldset>
378 + </td>
379 + </tr>
380 + <?php
381 + return ob_get_clean();
382 + }
383 +
356 384 public function generate_mc_banklinks_reload_html( $key, $data ) {
357 385
358 386 $field = $this->get_field_key( $key );
359 387 $defaults = array(
@@ -491,9 +519,9 @@
491 519 }
492 520
493 521 public function mc_banklinks_reload($force = false) {
494 522 if ($force || (defined('DOING_AJAX') && DOING_AJAX)) {
495 -
523 +
496 524 global $wpdb;
497 525 global $mkDbTable;
498 526 global $wp_version;
499 527
@@ -511,13 +539,15 @@
511 539 return false;
512 540 }
513 541
514 542 try {
515 - $methods = $this->_api->getShopConfig($request_params)->payment_methods;
543 + $shopConfig = $this->_api->getShopConfig($request_params);
544 + $methods = $shopConfig->payment_methods;
516 545 } catch (Exception $e) {
517 546 error_log(print_r($e, 1));
518 547 return false;
519 548 }
549 +
520 550 if(isset($methods->banklinks)) {
521 551 foreach($methods->banklinks as $method) {
522 552 $wpdb->insert($tableName, array('type' => 'banklink', 'country' => $method->country, 'name' => $method->name, 'url' => $method->url));
523 553 }
@@ -529,11 +559,17 @@
529 559 $wpdb->insert($tableName, array('type' => 'card', 'name' => $method->name));
530 560 }
531 561 $updated = true;
532 562 }
563 +
564 + if(isset($shopConfig) && strlen($shopConfig->name)) {
565 + update_option( 'mc_shop_name', $shopConfig->name );
566 + }
567 +
533 568 if ($updated) {
534 569 update_option( 'mc_banklinks_api_type', get_option('mk_api_type', false) );
535 570 }
571 +
536 572 if ($force) {
537 573 $this->initBankLinks();
538 574 return $updated;
539 575 }
@@ -664,8 +700,9 @@
664 700 <?php
665 701 }
666 702 ?>
667 703 </ul>
704 + <div class="mc-clear-both"></div>
668 705 <script type="text/javascript">
669 706 var makecommerceId = '<?php echo $this->id; ?>';
670 707 var selectedCountry = jQuery('input[name=makecommerce_country_picker]:checked').val();
671 708
@@ -955,10 +992,10 @@
955 992 'locale' => !empty($_GET['lang']) ? $_GET['lang'] : (defined('ICL_LANGUAGE_CODE') ? ICL_LANGUAGE_CODE : strtolower(substr(get_locale(), 0, 2))),
956 993 'open-on-load' => 'true',
957 994 'client-name' => ($this->settings['cc_pass_cust_data'] == 'yes' ? (string) ($order->billing_first_name . ' ' . $order->billing_last_name) : ''),
958 995 'email' => ($this->settings['cc_pass_cust_data'] == 'yes' ? (string) $order->billing_email : ''),
959 - 'name' => $this->settings['cc_shop_name'],
960 - 'description' => (string)sprintf($this->settings['cc_cart_reference_string'], (string) $idReference),
996 + 'name' => get_option('mc_shop_name', ''),
997 + 'description' => __('Order', 'woocommerce') . '&nbsp;' . (string) $idReference,
961 998 'completed' => 'makecommerce_cc_complete',
962 999 'currency' => 'EUR',
963 1000 );
964 1001 ?>
@@ -1271,18 +1308,60 @@
1271 1308 add_action('woocommerce_update_options_shipping_' . $this->id, array(&$this, 'process_admin_options'));
1272 1309 add_filter('woocommerce_review_order_after_shipping' , array(&$this, 'add_parcelmachine_checkout_fields'));
1273 1310 //add_filter('woocommerce_update_order_review_fragments' , array(&$this, 'add_parcelmachine_checkout_fields'));
1274 1311 add_action('woocommerce_checkout_process', array(&$this, 'check_parcelmachine_checkout_fields'));
1312 + add_action('woocommerce_after_checkout_validation', array(&$this, 'check_parcelmachine_checkout_fields'));
1275 1313 add_action('woocommerce_checkout_update_order_meta', array(&$this, 'add_parcelmachine_order_meta'));
1276 1314 add_filter('woocommerce_order_shipping_to_display_shipped_via', array(&$this, 'add_admin_parcelmachine_via_field'));
1277 1315 }
1278 1316
1317 + public function generate_shipping_ui_javascript_html( $key, $data ) { ?>
1318 + <script type="text/javascript">
1319 + jQuery(document).ready(function($) {
1320 + var country_select = $('#woocommerce_parcelmachine_<?php echo strtolower($this->ext); ?>_countries');
1321 + var prices = [], free_shippings = [];
1322 + $.each(country_select.find('option'), function(i, option) {
1323 + prices[$(option).val()] = $('#woocommerce_parcelmachine_<?php echo strtolower($this->ext); ?>_price_' + $(option).val().toLowerCase()).closest('tr');
1324 + free_shippings[$(option).val()] = $('#woocommerce_parcelmachine_<?php echo strtolower($this->ext); ?>_free_shipping_min_amount_' + $(option).val().toLowerCase()).closest('tr');
1325 + });
1326 + country_select.on('change', function(){
1327 + var countries = $(this).val();
1328 + if(countries) {
1329 + hidePrices(countries);
1330 + }
1331 + });
1332 + hidePrices(country_select.val());
1333 + function hidePrices(countries) {
1334 + for (var key in prices) {
1335 + if(countries.indexOf(key) == -1){
1336 + prices[key].hide();
1337 + free_shippings[key].hide();
1338 + } else {
1339 + prices[key].show();
1340 + free_shippings[key].show();
1341 + }
1342 + }
1343 + }
1344 + });
1345 + </script>
1346 + <?php }
1347 +
1279 1348 function calculate_shipping($package = array()) {
1349 + $price = $this->settings['price_'.strtolower($package['destination']['country'])];
1280 1350
1281 - $price = $this->settings['price_'.strtolower($package['destination']['country'])];
1282 - if ($this->free_shipping_min_amount && $package['contents_cost'] >= $this->free_shipping_min_amount) {
1351 + $free_shipping_min_amount = $this->settings['free_shipping_min_amount_'.strtolower($package['destination']['country'])];
1352 +
1353 + if ($free_shipping_min_amount && $package['contents_cost'] >= $free_shipping_min_amount) {
1283 1354 $price = 0;
1284 1355 }
1356 +
1357 + $free_shipping = true;
1358 + foreach ($package['contents'] as $line) {
1359 + $free_shipping = get_post_meta($line['product_id'], '_no_shipping_cost', true) === 'yes' ? $free_shipping : false;
1360 + }
1361 + if($free_shipping) {
1362 + $price = 0;
1363 + }
1285 1364 $rate = array(
1286 1365 'id' => $this->id,
1287 1366 'label' => $this->title,
1288 1367 'cost' => $price,
@@ -1377,9 +1456,9 @@
1377 1456 $res .= '<optgroup label="'.$machine['city'].'">';
1378 1457 }
1379 1458 $mname = $machine['name'];
1380 1459 if ($this->short_office_names !== 'yes') $mname .= ' - ' . $machine['city'] . ', ' . $machine['address'];
1381 - $res .= '<option value="'.esc_attr($machine['provider'].'||'.$machine['id']).'">'.$mname.'</option>';
1460 + $res .= '<option value="'.esc_attr($machine['carrier'].'||'.$machine['id']).'">'.$mname.'</option>';
1382 1461 $pcity = $city;
1383 1462 }
1384 1463 if ($pcity) $res .= '</optgroup>';
1385 1464 $res .= '</select>';
@@ -1390,10 +1469,8 @@
1390 1469
1391 1470 function check_parcelmachine_checkout_fields() {
1392 1471 $shipping_method = !empty($_POST['shipping_method']) ? $_POST['shipping_method'] : false;
1393 1472 if (!empty($shipping_method[0])) { $shipping_method = $shipping_method[0]; }
1394 - error_log($shipping_method);
1395 - error_log(print_r($_POST, 1));
1396 1473 if ($shipping_method === $this->id && empty($_POST[$shipping_method])) {
1397 1474 wc_add_notice(__('<strong>Parcel machine</strong> is a required field.'), 'error');
1398 1475 }
1399 1476 }
@@ -1417,36 +1494,60 @@
1417 1494 function init_form_fields() {
1418 1495
1419 1496 $this->form_fields = array();
1420 1497 $this->form_fields['logo'] = array('type' => 'title', 'title' => __get_logo_html());
1421 - $this->form_fields['generic'] = array('type' => 'title', 'title' => __('Generic and pricing options', 'wc_makecommerce_domain'));
1498 + $this->form_fields['generic'] = array(
1499 + 'type' => 'title',
1500 + 'title' => __('Generic and pricing options', 'wc_makecommerce_domain'),
1501 + 'description' => __('You can always exclude a product from being available for the Parcel Machine delivery by clicking "Does not fit parcel machine" in the product\'s shipping options.', 'wc_makecommerce_domain').'<br>'.__('You can mark there also a product as "Free shipping in parcel machine."', 'wc_makecommerce_domain'),
1502 + );
1422 1503 $this->form_fields['active'] = array(
1423 1504 'title' => __('Enable', 'wc_makecommerce_domain'),
1424 1505 'type' => 'checkbox',
1425 1506 'label' => __('enabled', 'wc_makecommerce_domain'),
1426 1507 'default' => 'no',
1427 - 'description' => __('You can always exclude a product from being available for the Parcel Machine delivery by clicking "Does not fit parcel machine" in the product\'s shipping options', 'wc_makecommerce_domain'),
1428 1508 );
1509 + $this->form_fields['countries'] = array(
1510 + 'title' => __('Enable Shipping to', 'wc_makecommerce_domain'),
1511 + 'type' => 'multiselect',
1512 + 'class' => 'wp-enhanced-select',
1513 + 'css' => 'width: 450px;',
1514 + 'default' => array('EE','LV','LT'),
1515 + 'options' => array('EE' => __('Estonia - EE'), 'LV' => __('Latvia - LV'), 'LT' => __('Lithuania - LT')),
1516 + 'description' => __('use Shift key to select multiple lines', 'wc_makecommerce_domain'),
1517 + );
1429 1518 $this->form_fields['price_ee'] = array(
1430 - 'title' => __('Price EE', 'wc_makecommerce_domain'),
1519 + 'title' => __('Shipping price', 'wc_makecommerce_domain').' EE',
1431 1520 'type' => 'text',
1432 1521 'default' => '2.99'
1433 1522 );
1523 + $this->form_fields['free_shipping_min_amount_ee'] = array(
1524 + 'title' => __('Free shipping amount', 'wc_makecommerce_domain').' EE',
1525 + 'type' => 'number',
1526 + 'default' => '0',
1527 + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1528 + );
1434 1529 $this->form_fields['price_lv'] = array(
1435 - 'title' => __('Price LV', 'wc_makecommerce_domain'),
1530 + 'title' => __('Shipping price', 'wc_makecommerce_domain').' LV',
1436 1531 'type' => 'text',
1437 1532 'default' => '7.99'
1438 1533 );
1534 + $this->form_fields['free_shipping_min_amount_lv'] = array(
1535 + 'title' => __('Free shipping amount', 'wc_makecommerce_domain').' LV',
1536 + 'type' => 'number',
1537 + 'default' => '0',
1538 + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1539 + );
1439 1540 $this->form_fields['price_lt'] = array(
1440 - 'title' => __('Price LT', 'wc_makecommerce_domain'),
1541 + 'title' => __('Shipping price', 'wc_makecommerce_domain').' LT',
1441 1542 'type' => 'text',
1442 1543 'default' => '8.99'
1443 1544 );
1444 - $this->form_fields['free_shipping_min_amount'] = array(
1445 - 'title' => __('Minimum amount for free shipping', 'wc_makecommerce_domain'),
1545 + $this->form_fields['free_shipping_min_amount_lt'] = array(
1546 + 'title' => __('Free shipping amount', 'wc_makecommerce_domain').' LT',
1446 1547 'type' => 'number',
1447 1548 'default' => '0',
1448 - 'description' => '(0 means no free shipping)'
1549 + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1449 1550 );
1450 1551 $this->form_fields['maximum_weight'] = array(
1451 1552 'title' => __('Maximum weight allowed for shipping', 'wc_makecommerce_domain'),
1452 1553 'type' => 'text',
@@ -1451,17 +1552,10 @@
1451 1552 'title' => __('Maximum weight allowed for shipping', 'wc_makecommerce_domain'),
1452 1553 'type' => 'text',
1453 1554 'default' => '15'
1454 1555 );
1455 - $this->form_fields['countries'] = array(
1456 - 'title' => __('Specific Countries', 'wc_makecommerce_domain'),
1457 - 'type' => 'multiselect',
1458 - 'class' => 'wp-enhanced-select',
1459 - 'css' => 'width: 450px;',
1460 - 'default' => array('EE','LV','LT'),
1461 - 'options' => array('EE' => __('Estonia'), 'LV' => __('Latvia'), 'LT' => __('Lithuania')),
1462 - );
1463 - $this->form_fields['look_and_feel'] = array( 'type' => 'title', 'title' => __('Look and feel options', 'wc_makecommerce_domain'), 'description' => __('Options for presentation on check-out page', 'wc_makecommerce_domain'));
1556 +
1557 + $this->form_fields['look_and_feel'] = array( 'type' => 'title', 'title' => '<hr><br>'.__('Look and feel options', 'wc_makecommerce_domain'), 'description' => __('Options for presentation on check-out page', 'wc_makecommerce_domain'));
1464 1558 $languages = apply_filters('wpml_active_languages', NULL, 'skip_missing=0');
1465 1559 if (empty($languages)) {
1466 1560 $this->form_fields['method_name'] = array(
1467 1561 'title' => __('Shipping Method Title', 'wc_makecommerce_domain'),
@@ -1489,9 +1583,9 @@
1489 1583 'type' => 'checkbox',
1490 1584 'label' => __('Display only parcel machine names, without addresses', 'wc_makecommerce_domain'),
1491 1585 'default' => 'no'
1492 1586 );
1493 - $this->form_fields['api_access'] = array( 'type' => 'title', 'title' => '<br>'.__('API access for', 'wc_makecommerce_domain').' '.$this->ext, 'description' => sprintf(__('You can automatically create shipments into Omniva system and print the out the package labels right here, at the shop orders view. <br> Please set your Omniva web servises account credentials below here. <br>(see more on <a href="https://makecommerce.net/en/integration-modules/makecommerce-woocommerce-payment-plugin/#carriers-integration">MakeCommerce plugin page</a>. Don\'t forget to enable also <a href="%s">MC API keys</a>!)', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=api&section=mk_api')));
1587 + $this->form_fields['api_access'] = array( 'type' => 'title', 'title' => '<hr><br>'.__('API access for', 'wc_makecommerce_domain').' '.$this->ext, 'description' => sprintf(__('You can automatically create shipments into Omniva system and print the out the package labels right here, at the shop orders view. <br> Please set your Omniva web servises account credentials below here. <br>(see more on <a href="https://makecommerce.net/en/integration-modules/makecommerce-woocommerce-payment-plugin/#carriers-integration">MakeCommerce plugin page</a>. Don\'t forget to enable also <a href="%s">MC API keys</a>!)', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=api&section=mk_api')));
1494 1588 $this->form_fields['service_user'] = array(
1495 1589 'title' => __('Omniva web services username', 'wc_makecommerce_domain'),
1496 1590 'type' => 'text',
1497 1591 'default' => ''
@@ -1516,8 +1610,13 @@
1516 1610 'type' => 'text',
1517 1611 'title' => __('Shop email', 'wc_makecommerce_domain'),
1518 1612 'class' => 'input-text regular-input',
1519 1613 );
1614 + $this->form_fields['shop_address_city'] = array(
1615 + 'type' => 'text',
1616 + 'title' => __('Shop address city', 'wc_makecommerce_domain'),
1617 + 'class' => 'input-text regular-input',
1618 + );
1520 1619 $this->form_fields['shop_postal_code'] = array(
1521 1620 'type' => 'text',
1522 1621 'title' => __('Shop postal code', 'wc_makecommerce_domain'),
1523 1622 'class' => 'input-text regular-input',
@@ -1522,8 +1621,11 @@
1522 1621 'title' => __('Shop postal code', 'wc_makecommerce_domain'),
1523 1622 'class' => 'input-text regular-input',
1524 1623 'description' => __('Put here zip-code of the Parcel Terminal you use for returns, see: <a href="https://www.omniva.ee/era/kaart/asukohad">List of Omniva Terminals</a>', 'wc_makecommerce_domain')
1525 1624 );
1625 + $this->form_fields['shipping_ui_javascript'] = array(
1626 + 'type' => 'shipping_ui_javascript',
1627 + );
1526 1628 }
1527 1629
1528 1630 }
1529 1631 class WC_ParcelMachine_Shipping_Method_Smartpost extends WC_ParcelMachine_Shipping_Method {
@@ -1544,23 +1646,37 @@
1544 1646 'label' => __('enabled', 'wc_makecommerce_domain'),
1545 1647 'default' => 'no',
1546 1648 'description' => __('You can always exclude a product from being available for the Parcel Machine delivery by clicking "Does not fit parcel machine" in the product\'s shipping options', 'wc_makecommerce_domain'),
1547 1649 );
1650 + $this->form_fields['countries'] = array(
1651 + 'title' => __('Specific Countries', 'wc_makecommerce_domain'),
1652 + 'type' => 'multiselect',
1653 + 'class' => 'wp-enhanced-select',
1654 + 'css' => 'width: 450px;',
1655 + 'default' => array('EE','FI'),
1656 + 'options' => array('EE' => __('Estonia - EE'), 'FI' => __('Finland - FI')),
1657 + );
1548 1658 $this->form_fields['price_ee'] = array(
1549 - 'title' => __('Price EE', 'wc_makecommerce_domain'),
1659 + 'title' => __('Shipping price', 'wc_makecommerce_domain').' EE',
1550 1660 'type' => 'text',
1551 1661 'default' => '2.99'
1552 1662 );
1663 + $this->form_fields['free_shipping_min_amount_ee'] = array(
1664 + 'title' => __('Free shipping amount', 'wc_makecommerce_domain').' EE',
1665 + 'type' => 'number',
1666 + 'default' => '0',
1667 + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1668 + );
1553 1669 $this->form_fields['price_fi'] = array(
1554 - 'title' => __('Price FI', 'wc_makecommerce_domain'),
1670 + 'title' => __('Shipping price', 'wc_makecommerce_domain').' FI',
1555 1671 'type' => 'text',
1556 1672 'default' => '10.99'
1557 1673 );
1558 - $this->form_fields['free_shipping_min_amount'] = array(
1559 - 'title' => __('Minimum amount for free shipping', 'wc_makecommerce_domain'),
1674 + $this->form_fields['free_shipping_min_amount_fi'] = array(
1675 + 'title' => __('Free shipping amount', 'wc_makecommerce_domain'). ' FI',
1560 1676 'type' => 'number',
1561 1677 'default' => '0',
1562 - 'description' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1678 + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1563 1679 );
1564 1680 $this->form_fields['maximum_weight'] = array(
1565 1681 'title' => __('Maximum weight allowed for shipping', 'wc_makecommerce_domain'),
1566 1682 'type' => 'text',
@@ -1565,17 +1681,10 @@
1565 1681 'title' => __('Maximum weight allowed for shipping', 'wc_makecommerce_domain'),
1566 1682 'type' => 'text',
1567 1683 'default' => '15'
1568 1684 );
1569 - $this->form_fields['countries'] = array(
1570 - 'title' => __('Specific Countries', 'wc_makecommerce_domain'),
1571 - 'type' => 'multiselect',
1572 - 'class' => 'wp-enhanced-select',
1573 - 'css' => 'width: 450px;',
1574 - 'default' => array('EE','FI'),
1575 - 'options' => array('EE' => __('Estonia'), 'FI' => __('Finland')),
1576 - );
1577 - $this->form_fields['look_and_feel'] = array( 'type' => 'title', 'title' => __('Look and feel options', 'wc_makecommerce_domain'), 'description' => __('Options for presentation on checkout page', 'wc_makecommerce_domain'));
1685 +
1686 + $this->form_fields['look_and_feel'] = array( 'type' => 'title', 'title' => '<br>'.__('Look and feel options', 'wc_makecommerce_domain'), 'description' => __('Options for presentation on checkout page', 'wc_makecommerce_domain'));
1578 1687 $languages = apply_filters('wpml_active_languages', NULL, 'skip_missing=0');
1579 1688 if (empty($languages)) {
1580 1689 $this->form_fields['method_name'] = array(
1581 1690 'title' => __('Shipping Method Title', 'wc_makecommerce_domain'),
@@ -1630,8 +1739,11 @@
1630 1739 'type' => 'text',
1631 1740 'title' => __('Shop email', 'wc_makecommerce_domain'),
1632 1741 'class' => 'input-text regular-input',
1633 1742 );
1743 + $this->form_fields['shipping_ui_javascript'] = array(
1744 + 'type' => 'shipping_ui_javascript',
1745 + );
1634 1746 }
1635 1747
1636 1748 }
1637 1749 }
@@ -1732,12 +1844,16 @@
1732 1844 'type' => 'text',
1733 1845 'title' => __('Publishable key (test)', 'wc_makecommerce_domain'),
1734 1846 'class' => 'input-text regular-input',
1735 1847 ),
1848 + array(
1849 + 'id' => 'mk_javascript_ui',
1850 + 'type' => 'api_javascript_ui',
1851 + ),
1736 1852 array('type' => 'sectionend', 'id' => 'mk_api_settings')
1737 1853 );
1738 1854 }
1739 -
1855 +
1740 1856 function mk_admin_save_settings() {
1741 1857 // reload banklinks
1742 1858 global $current_section;
1743 1859 if ($current_section !== 'mk_api') {
@@ -1746,25 +1862,52 @@
1746 1862 $wcmc = New woocommerce_makecommerce(true);
1747 1863 $wcmc->mc_banklinks_reload(true);
1748 1864 }
1749 1865
1750 - function __get_logo_html() {
1751 - return '<div class="makecommerce-info">'.
1752 - '<div class="makecommerce-logo">'.
1753 - '<a target="_blank" href="http://maksekeskus.ee"><img src="'. plugins_url('/images/makecommerce_logo_en.svg', __FILE__) .'" class="makecommerce-logo"></a>'.
1754 - '</div>'.
1755 - '<div class="makecommerce-links">'.
1756 - '<div class="makecommerce-link"><a target="_blank" href="https://merchant.maksekeskus.ee">Merchant Portal</a></div>'.
1757 - '<div class="makecommerce-link"><a target="_blank" href="https://makecommerce.net/">makecommerce.net</a></div>'.
1758 - '<div class="makecommerce-link"><a target="_blank" href="http://maksekeskus.ee">maksekeskus.ee</a></div>'.
1759 - '</div>'.
1760 - '</div>';
1761 - }
1866 + function __get_logo_html() {
1867 + return '<div class="makecommerce-info">'.
1868 + '<div class="makecommerce-logo">'.
1869 + '<a target="_blank" href="http://maksekeskus.ee"><img src="'. plugins_url('/images/makecommerce_logo_en.svg', __FILE__) .'" class="makecommerce-logo"></a>'.
1870 + '</div>'.
1871 + '<div class="makecommerce-links">'.
1872 + '<div class="makecommerce-link"><a target="_blank" href="https://merchant.maksekeskus.ee">Merchant Portal</a></div>'.
1873 + '<div class="makecommerce-link"><a target="_blank" href="https://makecommerce.net/">makecommerce.net</a></div>'.
1874 + '<div class="makecommerce-link"><a target="_blank" href="http://maksekeskus.ee">maksekeskus.ee</a></div>'.
1875 + '</div>'.
1876 + '</div>';
1877 + }
1762 1878
1763 1879 add_action('woocommerce_get_sections_api', 'mk_admin_add_settings');
1764 1880 add_filter('woocommerce_get_settings_api', 'mk_admin_all_settings', 10, 2);
1765 1881 add_action('woocommerce_settings_saved', 'mk_admin_save_settings', 30, 0);
1882 + add_action('woocommerce_admin_field_api_javascript_ui', 'api_javascript_ui');
1883 + function api_javascript_ui( $data ) {
1884 + ?>
1885 + <script type="text/javascript">
1886 + jQuery(document).ready(function($) {
1887 + var env_select = $('#mk_api_type');
1888 + var test_fields = ['mk_test_shop_id', 'mk_test_private_key', 'mk_test_public_key'];
1889 + var live_fields = ['mk_shop_id', 'mk_private_key', 'mk_public_key'];
1766 1890
1891 + env_select.on('change', function(){
1892 + hideFileds($(this).val());
1893 + });
1894 + hideFileds(env_select.val());
1895 + function hideFileds(type) {
1896 + var hide = type == 'live' ? test_fields : live_fields;
1897 + var show = type == 'live' ? live_fields : test_fields;
1898 + $.each(hide, function(i, elem) {
1899 + $('#'+elem).closest('tr').hide();
1900 + });
1901 + $.each(show, function(i, elem) {
1902 + $('#'+elem).closest('tr').show();
1903 + });
1904 + }
1905 + });
1906 + </script>
1907 + <?php
1908 + }
1909 +
1767 1910 function mk_admin_restrict_manage_posts() {
1768 1911 global $typenow;
1769 1912 if ( in_array( $typenow, wc_get_order_types( 'order-meta-boxes' ) ) ) {
1770 1913 $selected_method = !empty($_REQUEST['_shipping_method']) ? $_REQUEST['_shipping_method'] : false;
@@ -1796,10 +1939,9 @@
1796 1939 add_filter('posts_where', 'mk_admin_shipping_filter', 10, 2);
1797 1940
1798 1941 function mk_admin_bulk_actions() {
1799 1942 global $post_type;
1800 - if ('shop_order' === $post_type) {
1801 -?>
1943 + if ('shop_order' === $post_type) { ?>
1802 1944 <script type="text/javascript">
1803 1945 jQuery(function() {
1804 1946 jQuery('<option>').val('parcel_machine_labels').text('<?php _e( 'Register parcel machine shipments', 'wc_makecommerce_domain' )?>').appendTo('select[name="action"]');
1805 1947 jQuery('<option>').val('parcel_machine_labels').text('<?php _e( 'Register parcel machine shipments', 'wc_makecommerce_domain' )?>').appendTo('select[name="action2"]');
@@ -1806,18 +1948,15 @@
1806 1948 jQuery('<option>').val('parcel_machine_print_labels').text('<?php _e( 'Print parcel machine labels', 'wc_makecommerce_domain' )?>').appendTo('select[name="action"]');
1807 1949 jQuery('<option>').val('parcel_machine_print_labels').text('<?php _e( 'Print parcel machine labels', 'wc_makecommerce_domain' )?>').appendTo('select[name="action2"]');
1808 1950 });
1809 1951 </script>
1810 -<?php
1811 - if (!empty($_REQUEST['mk_pdf'])) {
1812 -?>
1813 - <script type="text/javascript">
1814 - jQuery(function(){
1815 - window.open('<?php echo $_REQUEST['mk_pdf'] ?>', 'pdf');
1816 - });
1817 - </script>
1818 -<?php
1819 - }
1952 + <?php if (!empty($_REQUEST['mk_pdf'])) { ?>
1953 + <script type="text/javascript">
1954 + jQuery(function(){
1955 + window.open('<?php echo $_REQUEST['mk_pdf'] ?>', 'pdf');
1956 + });
1957 + </script>
1958 + <?php }
1820 1959 }
1821 1960 }
1822 1961 function mk_admin_bulk_action_labels() {
1823 1962 $wp_list_table = _get_list_table('WP_Posts_List_Table');
@@ -1902,13 +2041,23 @@
1902 2041 'label' => __('Does not fit parcel machine', 'wc_makecommerce_domain'),
1903 2042 'description' => __('When this is checked, parcel machine shipping option is not available for a cart with this product', 'wc_makecommerce_domain')
1904 2043 )
1905 2044 );
2045 + woocommerce_wp_checkbox(
2046 + array(
2047 + 'id' => '_no_shipping_cost',
2048 + 'wrapper_class' => 'show_if_simple',
2049 + 'label' => __('Free parcel machine', 'wc_makecommerce_domain'),
2050 + 'description' => __('When this is checked, parcel machine if free for this product', 'wc_makecommerce_domain')
2051 + )
2052 + );
1906 2053 echo '</div>';
1907 2054 }
1908 2055 function mk_admin_product_fields_save($post_id) {
1909 2056 $no_parcel_machine = isset($_POST['_no_parcel_machine']) ? 'yes' : 'no';
1910 2057 update_post_meta($post_id, '_no_parcel_machine', $no_parcel_machine);
2058 + $no_shipping_cost = isset($_POST['_no_shipping_cost']) ? 'yes' : 'no';
2059 + update_post_meta($post_id, '_no_shipping_cost', $no_shipping_cost);
1911 2060 }
1912 2061
1913 2062 add_action('woocommerce_product_options_shipping', 'mk_admin_product_option_fields');
1914 2063 add_action('woocommerce_process_product_meta', 'mk_admin_product_fields_save');
@@ -1990,18 +2139,12 @@
1990 2139 }
1991 2140 }
1992 2141 }
1993 2142
1994 - function mk_get_labels($post_ids) {
2143 + function mk_get_labels($post_ids, $ajax = false) {
1995 2144 if (!is_array($post_ids)) {
1996 2145 $post_ids = array($post_ids);
1997 2146 }
1998 - $sender = array(
1999 - 'name' => get_option('mk_shop_name', ''),
2000 - 'phone' => get_option('mk_shop_phone', ''),
2001 - 'email' => get_option('mk_shop_email', ''),
2002 - 'postalCode' => get_option('mk_shop_postal_code', '')
2003 - );
2004 2147 parcelmachine_add_method();
2005 2148 $shipping_request = array('credentials' => array(), 'orders' => array(), 'printFormat' => 'A4');
2006 2149 foreach ($post_ids as $post_id) {
2007 2150 $parcel_machine = get_post_meta($post_id, '_parcel_machine', true);
@@ -2030,8 +2173,14 @@
2030 2173 }
2031 2174 $order = wc_get_order($post_id);
2032 2175 $shipment_id = get_post_meta($post_id, '_parcel_machine_shipment_id', true);
2033 2176 if (!$shipment_id) { continue; }
2177 + $sender = array(
2178 + 'name' => $transport_class->settings['shop_name'],
2179 + 'phone' => $transport_class->settings['shop_phone'],
2180 + 'email' => $transport_class->settings['shop_email'],
2181 + 'postalCode' => $transport_class->settings['shop_postal_code']
2182 + );
2034 2183 $shipping_request['orders'][] = array(
2035 2184 'carrier' => $provider_uc,
2036 2185 'orderId' => $order->id,
2037 2186 'destination' => array('destinationId' => $machine_id),
@@ -2056,8 +2205,11 @@
2056 2205 }
2057 2206 if (empty($response->labelUrl)) {
2058 2207 return;
2059 2208 }
2209 + if($ajax) {
2210 + return $response->labelUrl;
2211 + }
2060 2212 $sendback = add_query_arg(array('post_type' => 'shop_order', 'mk_pdf' => urlencode($response->labelUrl)), '');
2061 2213 wp_redirect(esc_url_raw($sendback));
2062 2214 exit();
2063 2215 }
@@ -2104,9 +2256,9 @@
2104 2256 }
2105 2257 foreach ($data as $machine) {
2106 2258 if ($machine->country === $country && $machine->type === 'APT' && ($provider === '*' || strtolower($provider) === strtolower($machine->provider))) {
2107 2259 $machines[] = array(
2108 - 'provider' => strtolower($machine->provider),
2260 + 'carrier' => strtolower($machine->provider),
2109 2261 'id' => $machine->id,
2110 2262 'name' => $machine->name,
2111 2263 'city' => $machine->city,
2112 2264 'address' => !empty($machine->address) ? $machine->address : '',
@@ -2124,9 +2276,9 @@
2124 2276
2125 2277 function mk_get_machine($provider, $id) {
2126 2278 $machines = mk_get_machines($provider);
2127 2279 foreach ($machines as $machine) {
2128 - if ($machine['provider'] === $provider && $machine['id'] === $id) {
2280 + if ($machine['carrier'] === $provider && $machine['id'] === $id) {
2129 2281 return $machine;
2130 2282 }
2131 2283 }
2132 2284 return false;
@@ -2133,5 +2285,61 @@
2133 2285 }
2134 2286 function mk_admin_error() {
2135 2287 printf( '<div class="%1$s"><p>%2$s</p></div>', 'notice notice-error', __('Please check that you have configured correctly MakeCommerce API accesses', 'wc_makecommerce_domain'));
2136 2288 }
2289 +
2290 + add_filter('query_vars', 'mk_cron_query_vars');
2291 + add_action('parse_request', 'mk_parse_cron_update_vars');
2292 + function mk_cron_query_vars($vars) {
2293 + $vars[] = 'mk-action';
2294 + $vars[] = 'mk-shop-id';
2295 + $vars[] = 'mk-test-shop-id';
2296 + return $vars;
2297 + }
2298 + function mk_parse_cron_update_vars($wp) {
2299 + if (array_key_exists('mk-action', $wp->query_vars) && $wp->query_vars['mk-action'] == 'mk-update'
2300 + && (array_key_exists('mk-shop-id', $wp->query_vars) || array_key_exists('mk-test-shop-id', $wp->query_vars) ) ) {
2301 + if( (strlen($wp->query_vars['mk-shop-id']) && $wp->query_vars['mk-shop-id'] == get_option('mk_shop_id', false) )
2302 + || (strlen($wp->query_vars['mk-test-shop-id']) && $wp->query_vars['mk-test-shop-id'] == get_option('mk_test_shop_id', false) ) ) {
2303 + $obj = new woocommerce_makecommerce();
2304 + $obj->mc_banklinks_reload(true);
2305 + exit();
2306 + }
2307 + }
2308 + }
2309 + function print_parcel_machine_label_action( $post_id ) {
2310 + ?>
2311 + <li class="wide">
2312 + <a id="print_parcel_machine_label" href="#" class="button"><?php _e('Print parcel label', 'wc_makecommerce_domain');?></a>
2313 + <img class="mc_loading" src="<?php echo site_url('/wp-admin/images/loading.gif');?>">
2314 + <script type="text/javascript">
2315 + jQuery(function($){
2316 + var data = {
2317 + 'action': 'print_pml',
2318 + 'id': '<?php echo $post_id; ?>'
2319 + };
2320 + var loading = $('.mc_loading');
2321 + $('#print_parcel_machine_label').click(function(e){
2322 + e.preventDefault();
2323 + var button = $(this);
2324 + button.addClass('disabled');
2325 + loading.show();
2326 + $.post(ajaxurl, data, function(response) {
2327 + button.removeClass('disabled');
2328 + loading.hide();
2329 + window.open(response, 'pdf');
2330 + });
2331 + });
2332 + });
2333 + </script>
2334 + </li>
2335 + <?php
2336 + }
2337 + add_action('woocommerce_order_actions_end', 'print_parcel_machine_label_action');
2338 + function ajax_print_pml() {
2339 + if(!current_user_can('manage_woocommerce') ) {
2340 + die();
2341 + }
2342 + die(mk_get_labels(intval($_POST['id']), true));
2343 + }
2344 + add_action( 'wp_ajax_print_pml', 'ajax_print_pml' );
2137 2345 }