| @@ -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.1 | |
| 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'; | |
| 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') . ' ' . (string) $idReference, | |
| 961 | 998 | 'completed' => 'makecommerce_cc_complete', |
| 962 | 999 | 'currency' => 'EUR', |
| 963 | 1000 | ); |
| 964 | 1001 | ?> |
| @@ -1269,19 +1306,62 @@ | ||
| 1269 | 1306 | $this->short_office_names = $this->settings['short_office_names']; |
| 1270 | 1307 | $this->order_country = 'unknown'; |
| 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')); |
| 1310 | + //add_filter('woocommerce_update_order_review_fragments' , array(&$this, 'add_parcelmachine_checkout_fields')); | |
| 1273 | 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')); | |
| 1274 | 1313 | add_action('woocommerce_checkout_update_order_meta', array(&$this, 'add_parcelmachine_order_meta')); |
| 1275 | - add_filter('woocommerce_order_shipping_to_display_shipped_via', array(&$his, 'add_admin_parcelmachine_via_field')); | |
| 1314 | + add_filter('woocommerce_order_shipping_to_display_shipped_via', array(&$this, 'add_admin_parcelmachine_via_field')); | |
| 1276 | 1315 | } |
| 1277 | 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 | + | |
| 1278 | 1348 | function calculate_shipping($package = array()) { |
| 1349 | + $price = $this->settings['price_'.strtolower($package['destination']['country'])]; | |
| 1279 | 1350 | |
| 1280 | - $price = $this->settings['price_'.strtolower($package['destination']['country'])]; | |
| 1281 | - 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) { | |
| 1282 | 1354 | $price = 0; |
| 1283 | 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 | + } | |
| 1284 | 1364 | $rate = array( |
| 1285 | 1365 | 'id' => $this->id, |
| 1286 | 1366 | 'label' => $this->title, |
| 1287 | 1367 | 'cost' => $price, |
| @@ -1355,35 +1435,37 @@ | ||
| 1355 | 1435 | } |
| 1356 | 1436 | return $machines; |
| 1357 | 1437 | } |
| 1358 | 1438 | |
| 1359 | - function add_parcelmachine_checkout_fields($checkout) { | |
| 1439 | + function add_parcelmachine_checkout_fields($fragments) { | |
| 1360 | 1440 | $this->order_country = WC()->customer->get_shipping_country(); |
| 1361 | - echo '<tr style="display: none;" class="parcel_machine_checkout" id="parcel_machine_checkout_parcelmachine_'.mb_strtolower($this->ext).'">'; | |
| 1441 | + $res = ''; | |
| 1442 | + $res .= '<tr style="display: none;" class="parcel_machine_checkout parcel_machine_checkout_parcelmachine_'.mb_strtolower($this->ext).'">'; | |
| 1362 | 1443 | // echo '<th>' . $this->title . '</th>'; |
| 1363 | 1444 | // echo '<td>'; |
| 1364 | - echo '<td colspan="2">'; | |
| 1445 | + $res .= '<td colspan="2">'; | |
| 1365 | 1446 | $options = array(); |
| 1366 | 1447 | $machines = $this->mk_get_machines(); |
| 1367 | - echo '<p class="form-row" id="'.esc_attr($this->id).'_field">'; | |
| 1368 | - echo '<select class="select" name="'.esc_attr($this->id).'" id="'.esc_attr($this->id).'">'; | |
| 1369 | - echo '<option value="">'.__('-- select parcel machine --', 'wc_makecommerce_domain').'</option>'; | |
| 1448 | + $res .= '<p class="form-row" id="'.esc_attr($this->id).'_field">'; | |
| 1449 | + $res .= '<select class="select" name="'.esc_attr($this->id).'" id="'.esc_attr($this->id).'">'; | |
| 1450 | + $res .= '<option value="">'.__('-- select parcel machine --', 'wc_makecommerce_domain').'</option>'; | |
| 1370 | 1451 | $pcity = false; |
| 1371 | 1452 | foreach ($machines as $machine) { |
| 1372 | 1453 | $city = strtolower($machine['city']); |
| 1373 | 1454 | if ($city !== $pcity) { |
| 1374 | - if ($pcity) echo '</optgroup>'; | |
| 1375 | - echo '<optgroup label="'.$machine['city'].'">'; | |
| 1455 | + if ($pcity) $res .= '</optgroup>'; | |
| 1456 | + $res .= '<optgroup label="'.$machine['city'].'">'; | |
| 1376 | 1457 | } |
| 1377 | 1458 | $mname = $machine['name']; |
| 1378 | 1459 | if ($this->short_office_names !== 'yes') $mname .= ' - ' . $machine['city'] . ', ' . $machine['address']; |
| 1379 | - echo '<option value="'.esc_attr($machine['provider'].'||'.$machine['id']).'">'.$mname.'</option>'; | |
| 1460 | + $res .= '<option value="'.esc_attr($machine['carrier'].'||'.$machine['id']).'">'.$mname.'</option>'; | |
| 1380 | 1461 | $pcity = $city; |
| 1381 | 1462 | } |
| 1382 | - if ($pcity) echo '</optgroup>'; | |
| 1383 | - echo '</select>'; | |
| 1384 | - echo '</p>'; | |
| 1385 | - echo '</td></tr>'; | |
| 1463 | + if ($pcity) $res .= '</optgroup>'; | |
| 1464 | + $res .= '</select>'; | |
| 1465 | + $res .= '</p>'; | |
| 1466 | + $res .= '</td></tr>'; | |
| 1467 | + echo $res; | |
| 1386 | 1468 | } |
| 1387 | 1469 | |
| 1388 | 1470 | function check_parcelmachine_checkout_fields() { |
| 1389 | 1471 | $shipping_method = !empty($_POST['shipping_method']) ? $_POST['shipping_method'] : false; |
| @@ -1399,10 +1481,9 @@ | ||
| 1399 | 1481 | update_post_meta($order_id, '_parcel_machine', sanitize_text_field($_POST[$this->id])); |
| 1400 | 1482 | } |
| 1401 | 1483 | } |
| 1402 | 1484 | function add_admin_parcelmachine_via_field($order) { |
| 1403 | - error_log('Via'); | |
| 1404 | - error_log(print_r($order, 1)); | |
| 1485 | + return ' <small>(via '.$this->name_ext.')</small>'; | |
| 1405 | 1486 | } |
| 1406 | 1487 | } |
| 1407 | 1488 | class WC_ParcelMachine_Shipping_Method_Omniva extends WC_ParcelMachine_Shipping_Method { |
| 1408 | 1489 | function __construct($instance_id = 0) { |
| @@ -1413,36 +1494,60 @@ | ||
| 1413 | 1494 | function init_form_fields() { |
| 1414 | 1495 | |
| 1415 | 1496 | $this->form_fields = array(); |
| 1416 | 1497 | $this->form_fields['logo'] = array('type' => 'title', 'title' => __get_logo_html()); |
| 1417 | - $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 | + ); | |
| 1418 | 1503 | $this->form_fields['active'] = array( |
| 1419 | 1504 | 'title' => __('Enable', 'wc_makecommerce_domain'), |
| 1420 | 1505 | 'type' => 'checkbox', |
| 1421 | 1506 | 'label' => __('enabled', 'wc_makecommerce_domain'), |
| 1422 | 1507 | 'default' => 'no', |
| 1423 | - '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'), | |
| 1424 | 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 | + ); | |
| 1425 | 1518 | $this->form_fields['price_ee'] = array( |
| 1426 | - 'title' => __('Price EE', 'wc_makecommerce_domain'), | |
| 1519 | + 'title' => __('Shipping price', 'wc_makecommerce_domain').' EE', | |
| 1427 | 1520 | 'type' => 'text', |
| 1428 | 1521 | 'default' => '2.99' |
| 1429 | 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 | + ); | |
| 1430 | 1529 | $this->form_fields['price_lv'] = array( |
| 1431 | - 'title' => __('Price LV', 'wc_makecommerce_domain'), | |
| 1530 | + 'title' => __('Shipping price', 'wc_makecommerce_domain').' LV', | |
| 1432 | 1531 | 'type' => 'text', |
| 1433 | 1532 | 'default' => '7.99' |
| 1434 | 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 | + ); | |
| 1435 | 1540 | $this->form_fields['price_lt'] = array( |
| 1436 | - 'title' => __('Price LT', 'wc_makecommerce_domain'), | |
| 1541 | + 'title' => __('Shipping price', 'wc_makecommerce_domain').' LT', | |
| 1437 | 1542 | 'type' => 'text', |
| 1438 | 1543 | 'default' => '8.99' |
| 1439 | 1544 | ); |
| 1440 | - $this->form_fields['free_shipping_min_amount'] = array( | |
| 1441 | - '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', | |
| 1442 | 1547 | 'type' => 'number', |
| 1443 | 1548 | 'default' => '0', |
| 1444 | - 'description' => '(0 means no free shipping)' | |
| 1549 | + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'), | |
| 1445 | 1550 | ); |
| 1446 | 1551 | $this->form_fields['maximum_weight'] = array( |
| 1447 | 1552 | 'title' => __('Maximum weight allowed for shipping', 'wc_makecommerce_domain'), |
| 1448 | 1553 | 'type' => 'text', |
| @@ -1447,17 +1552,10 @@ | ||
| 1447 | 1552 | 'title' => __('Maximum weight allowed for shipping', 'wc_makecommerce_domain'), |
| 1448 | 1553 | 'type' => 'text', |
| 1449 | 1554 | 'default' => '15' |
| 1450 | 1555 | ); |
| 1451 | - $this->form_fields['countries'] = array( | |
| 1452 | - 'title' => __('Specific Countries', 'wc_makecommerce_domain'), | |
| 1453 | - 'type' => 'multiselect', | |
| 1454 | - 'class' => 'wp-enhanced-select', | |
| 1455 | - 'css' => 'width: 450px;', | |
| 1456 | - 'default' => array('EE','LV','LT'), | |
| 1457 | - 'options' => array('EE' => __('Estonia'), 'LV' => __('Latvia'), 'LT' => __('Lithuania')), | |
| 1458 | - ); | |
| 1459 | - $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')); | |
| 1460 | 1558 | $languages = apply_filters('wpml_active_languages', NULL, 'skip_missing=0'); |
| 1461 | 1559 | if (empty($languages)) { |
| 1462 | 1560 | $this->form_fields['method_name'] = array( |
| 1463 | 1561 | 'title' => __('Shipping Method Title', 'wc_makecommerce_domain'), |
| @@ -1485,9 +1583,9 @@ | ||
| 1485 | 1583 | 'type' => 'checkbox', |
| 1486 | 1584 | 'label' => __('Display only parcel machine names, without addresses', 'wc_makecommerce_domain'), |
| 1487 | 1585 | 'default' => 'no' |
| 1488 | 1586 | ); |
| 1489 | - $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§ion=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§ion=mk_api'))); | |
| 1490 | 1588 | $this->form_fields['service_user'] = array( |
| 1491 | 1589 | 'title' => __('Omniva web services username', 'wc_makecommerce_domain'), |
| 1492 | 1590 | 'type' => 'text', |
| 1493 | 1591 | 'default' => '' |
| @@ -1512,8 +1610,13 @@ | ||
| 1512 | 1610 | 'type' => 'text', |
| 1513 | 1611 | 'title' => __('Shop email', 'wc_makecommerce_domain'), |
| 1514 | 1612 | 'class' => 'input-text regular-input', |
| 1515 | 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 | + ); | |
| 1516 | 1619 | $this->form_fields['shop_postal_code'] = array( |
| 1517 | 1620 | 'type' => 'text', |
| 1518 | 1621 | 'title' => __('Shop postal code', 'wc_makecommerce_domain'), |
| 1519 | 1622 | 'class' => 'input-text regular-input', |
| @@ -1518,8 +1621,11 @@ | ||
| 1518 | 1621 | 'title' => __('Shop postal code', 'wc_makecommerce_domain'), |
| 1519 | 1622 | 'class' => 'input-text regular-input', |
| 1520 | 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') |
| 1521 | 1624 | ); |
| 1625 | + $this->form_fields['shipping_ui_javascript'] = array( | |
| 1626 | + 'type' => 'shipping_ui_javascript', | |
| 1627 | + ); | |
| 1522 | 1628 | } |
| 1523 | 1629 | |
| 1524 | 1630 | } |
| 1525 | 1631 | class WC_ParcelMachine_Shipping_Method_Smartpost extends WC_ParcelMachine_Shipping_Method { |
| @@ -1540,23 +1646,37 @@ | ||
| 1540 | 1646 | 'label' => __('enabled', 'wc_makecommerce_domain'), |
| 1541 | 1647 | 'default' => 'no', |
| 1542 | 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'), |
| 1543 | 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 | + ); | |
| 1544 | 1658 | $this->form_fields['price_ee'] = array( |
| 1545 | - 'title' => __('Price EE', 'wc_makecommerce_domain'), | |
| 1659 | + 'title' => __('Shipping price', 'wc_makecommerce_domain').' EE', | |
| 1546 | 1660 | 'type' => 'text', |
| 1547 | 1661 | 'default' => '2.99' |
| 1548 | 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 | + ); | |
| 1549 | 1669 | $this->form_fields['price_fi'] = array( |
| 1550 | - 'title' => __('Price FI', 'wc_makecommerce_domain'), | |
| 1670 | + 'title' => __('Shipping price', 'wc_makecommerce_domain').' FI', | |
| 1551 | 1671 | 'type' => 'text', |
| 1552 | 1672 | 'default' => '10.99' |
| 1553 | 1673 | ); |
| 1554 | - $this->form_fields['free_shipping_min_amount'] = array( | |
| 1555 | - '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', | |
| 1556 | 1676 | 'type' => 'number', |
| 1557 | 1677 | 'default' => '0', |
| 1558 | - 'description' => __('(0 means no free shipping)', 'wc_makecommerce_domain'), | |
| 1678 | + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'), | |
| 1559 | 1679 | ); |
| 1560 | 1680 | $this->form_fields['maximum_weight'] = array( |
| 1561 | 1681 | 'title' => __('Maximum weight allowed for shipping', 'wc_makecommerce_domain'), |
| 1562 | 1682 | 'type' => 'text', |
| @@ -1561,17 +1681,10 @@ | ||
| 1561 | 1681 | 'title' => __('Maximum weight allowed for shipping', 'wc_makecommerce_domain'), |
| 1562 | 1682 | 'type' => 'text', |
| 1563 | 1683 | 'default' => '15' |
| 1564 | 1684 | ); |
| 1565 | - $this->form_fields['countries'] = array( | |
| 1566 | - 'title' => __('Specific Countries', 'wc_makecommerce_domain'), | |
| 1567 | - 'type' => 'multiselect', | |
| 1568 | - 'class' => 'wp-enhanced-select', | |
| 1569 | - 'css' => 'width: 450px;', | |
| 1570 | - 'default' => array('EE','FI'), | |
| 1571 | - 'options' => array('EE' => __('Estonia'), 'FI' => __('Finland')), | |
| 1572 | - ); | |
| 1573 | - $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')); | |
| 1574 | 1687 | $languages = apply_filters('wpml_active_languages', NULL, 'skip_missing=0'); |
| 1575 | 1688 | if (empty($languages)) { |
| 1576 | 1689 | $this->form_fields['method_name'] = array( |
| 1577 | 1690 | 'title' => __('Shipping Method Title', 'wc_makecommerce_domain'), |
| @@ -1626,8 +1739,11 @@ | ||
| 1626 | 1739 | 'type' => 'text', |
| 1627 | 1740 | 'title' => __('Shop email', 'wc_makecommerce_domain'), |
| 1628 | 1741 | 'class' => 'input-text regular-input', |
| 1629 | 1742 | ); |
| 1743 | + $this->form_fields['shipping_ui_javascript'] = array( | |
| 1744 | + 'type' => 'shipping_ui_javascript', | |
| 1745 | + ); | |
| 1630 | 1746 | } |
| 1631 | 1747 | |
| 1632 | 1748 | } |
| 1633 | 1749 | } |
| @@ -1728,12 +1844,16 @@ | ||
| 1728 | 1844 | 'type' => 'text', |
| 1729 | 1845 | 'title' => __('Publishable key (test)', 'wc_makecommerce_domain'), |
| 1730 | 1846 | 'class' => 'input-text regular-input', |
| 1731 | 1847 | ), |
| 1848 | + array( | |
| 1849 | + 'id' => 'mk_javascript_ui', | |
| 1850 | + 'type' => 'api_javascript_ui', | |
| 1851 | + ), | |
| 1732 | 1852 | array('type' => 'sectionend', 'id' => 'mk_api_settings') |
| 1733 | 1853 | ); |
| 1734 | 1854 | } |
| 1735 | - | |
| 1855 | + | |
| 1736 | 1856 | function mk_admin_save_settings() { |
| 1737 | 1857 | // reload banklinks |
| 1738 | 1858 | global $current_section; |
| 1739 | 1859 | if ($current_section !== 'mk_api') { |
| @@ -1742,25 +1862,52 @@ | ||
| 1742 | 1862 | $wcmc = New woocommerce_makecommerce(true); |
| 1743 | 1863 | $wcmc->mc_banklinks_reload(true); |
| 1744 | 1864 | } |
| 1745 | 1865 | |
| 1746 | - function __get_logo_html() { | |
| 1747 | - return '<div class="makecommerce-info">'. | |
| 1748 | - '<div class="makecommerce-logo">'. | |
| 1749 | - '<a target="_blank" href="http://maksekeskus.ee"><img src="'. plugins_url('/images/makecommerce_logo_en.svg', __FILE__) .'" class="makecommerce-logo"></a>'. | |
| 1750 | - '</div>'. | |
| 1751 | - '<div class="makecommerce-links">'. | |
| 1752 | - '<div class="makecommerce-link"><a target="_blank" href="https://merchant.maksekeskus.ee">Merchant Portal</a></div>'. | |
| 1753 | - '<div class="makecommerce-link"><a target="_blank" href="https://makecommerce.net/">makecommerce.net</a></div>'. | |
| 1754 | - '<div class="makecommerce-link"><a target="_blank" href="http://maksekeskus.ee">maksekeskus.ee</a></div>'. | |
| 1755 | - '</div>'. | |
| 1756 | - '</div>'; | |
| 1757 | - } | |
| 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 | + } | |
| 1758 | 1878 | |
| 1759 | 1879 | add_action('woocommerce_get_sections_api', 'mk_admin_add_settings'); |
| 1760 | 1880 | add_filter('woocommerce_get_settings_api', 'mk_admin_all_settings', 10, 2); |
| 1761 | 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']; | |
| 1762 | 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 | + | |
| 1763 | 1910 | function mk_admin_restrict_manage_posts() { |
| 1764 | 1911 | global $typenow; |
| 1765 | 1912 | if ( in_array( $typenow, wc_get_order_types( 'order-meta-boxes' ) ) ) { |
| 1766 | 1913 | $selected_method = !empty($_REQUEST['_shipping_method']) ? $_REQUEST['_shipping_method'] : false; |
| @@ -1792,10 +1939,9 @@ | ||
| 1792 | 1939 | add_filter('posts_where', 'mk_admin_shipping_filter', 10, 2); |
| 1793 | 1940 | |
| 1794 | 1941 | function mk_admin_bulk_actions() { |
| 1795 | 1942 | global $post_type; |
| 1796 | - if ('shop_order' === $post_type) { | |
| 1797 | -?> | |
| 1943 | + if ('shop_order' === $post_type) { ?> | |
| 1798 | 1944 | <script type="text/javascript"> |
| 1799 | 1945 | jQuery(function() { |
| 1800 | 1946 | jQuery('<option>').val('parcel_machine_labels').text('<?php _e( 'Register parcel machine shipments', 'wc_makecommerce_domain' )?>').appendTo('select[name="action"]'); |
| 1801 | 1947 | jQuery('<option>').val('parcel_machine_labels').text('<?php _e( 'Register parcel machine shipments', 'wc_makecommerce_domain' )?>').appendTo('select[name="action2"]'); |
| @@ -1802,18 +1948,15 @@ | ||
| 1802 | 1948 | jQuery('<option>').val('parcel_machine_print_labels').text('<?php _e( 'Print parcel machine labels', 'wc_makecommerce_domain' )?>').appendTo('select[name="action"]'); |
| 1803 | 1949 | jQuery('<option>').val('parcel_machine_print_labels').text('<?php _e( 'Print parcel machine labels', 'wc_makecommerce_domain' )?>').appendTo('select[name="action2"]'); |
| 1804 | 1950 | }); |
| 1805 | 1951 | </script> |
| 1806 | -<?php | |
| 1807 | - if (!empty($_REQUEST['mk_pdf'])) { | |
| 1808 | -?> | |
| 1809 | - <script type="text/javascript"> | |
| 1810 | - jQuery(function(){ | |
| 1811 | - window.open('<?php echo $_REQUEST['mk_pdf'] ?>', 'pdf'); | |
| 1812 | - }); | |
| 1813 | - </script> | |
| 1814 | -<?php | |
| 1815 | - } | |
| 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 } | |
| 1816 | 1959 | } |
| 1817 | 1960 | } |
| 1818 | 1961 | function mk_admin_bulk_action_labels() { |
| 1819 | 1962 | $wp_list_table = _get_list_table('WP_Posts_List_Table'); |
| @@ -1898,13 +2041,23 @@ | ||
| 1898 | 2041 | 'label' => __('Does not fit parcel machine', 'wc_makecommerce_domain'), |
| 1899 | 2042 | 'description' => __('When this is checked, parcel machine shipping option is not available for a cart with this product', 'wc_makecommerce_domain') |
| 1900 | 2043 | ) |
| 1901 | 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 | + ); | |
| 1902 | 2053 | echo '</div>'; |
| 1903 | 2054 | } |
| 1904 | 2055 | function mk_admin_product_fields_save($post_id) { |
| 1905 | 2056 | $no_parcel_machine = isset($_POST['_no_parcel_machine']) ? 'yes' : 'no'; |
| 1906 | 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); | |
| 1907 | 2060 | } |
| 1908 | 2061 | |
| 1909 | 2062 | add_action('woocommerce_product_options_shipping', 'mk_admin_product_option_fields'); |
| 1910 | 2063 | add_action('woocommerce_process_product_meta', 'mk_admin_product_fields_save'); |
| @@ -1986,18 +2139,12 @@ | ||
| 1986 | 2139 | } |
| 1987 | 2140 | } |
| 1988 | 2141 | } |
| 1989 | 2142 | |
| 1990 | - function mk_get_labels($post_ids) { | |
| 2143 | + function mk_get_labels($post_ids, $ajax = false) { | |
| 1991 | 2144 | if (!is_array($post_ids)) { |
| 1992 | 2145 | $post_ids = array($post_ids); |
| 1993 | 2146 | } |
| 1994 | - $sender = array( | |
| 1995 | - 'name' => get_option('mk_shop_name', ''), | |
| 1996 | - 'phone' => get_option('mk_shop_phone', ''), | |
| 1997 | - 'email' => get_option('mk_shop_email', ''), | |
| 1998 | - 'postalCode' => get_option('mk_shop_postal_code', '') | |
| 1999 | - ); | |
| 2000 | 2147 | parcelmachine_add_method(); |
| 2001 | 2148 | $shipping_request = array('credentials' => array(), 'orders' => array(), 'printFormat' => 'A4'); |
| 2002 | 2149 | foreach ($post_ids as $post_id) { |
| 2003 | 2150 | $parcel_machine = get_post_meta($post_id, '_parcel_machine', true); |
| @@ -2026,8 +2173,14 @@ | ||
| 2026 | 2173 | } |
| 2027 | 2174 | $order = wc_get_order($post_id); |
| 2028 | 2175 | $shipment_id = get_post_meta($post_id, '_parcel_machine_shipment_id', true); |
| 2029 | 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 | + ); | |
| 2030 | 2183 | $shipping_request['orders'][] = array( |
| 2031 | 2184 | 'carrier' => $provider_uc, |
| 2032 | 2185 | 'orderId' => $order->id, |
| 2033 | 2186 | 'destination' => array('destinationId' => $machine_id), |
| @@ -2052,8 +2205,11 @@ | ||
| 2052 | 2205 | } |
| 2053 | 2206 | if (empty($response->labelUrl)) { |
| 2054 | 2207 | return; |
| 2055 | 2208 | } |
| 2209 | + if($ajax) { | |
| 2210 | + return $response->labelUrl; | |
| 2211 | + } | |
| 2056 | 2212 | $sendback = add_query_arg(array('post_type' => 'shop_order', 'mk_pdf' => urlencode($response->labelUrl)), ''); |
| 2057 | 2213 | wp_redirect(esc_url_raw($sendback)); |
| 2058 | 2214 | exit(); |
| 2059 | 2215 | } |
| @@ -2100,9 +2256,9 @@ | ||
| 2100 | 2256 | } |
| 2101 | 2257 | foreach ($data as $machine) { |
| 2102 | 2258 | if ($machine->country === $country && $machine->type === 'APT' && ($provider === '*' || strtolower($provider) === strtolower($machine->provider))) { |
| 2103 | 2259 | $machines[] = array( |
| 2104 | - 'provider' => strtolower($machine->provider), | |
| 2260 | + 'carrier' => strtolower($machine->provider), | |
| 2105 | 2261 | 'id' => $machine->id, |
| 2106 | 2262 | 'name' => $machine->name, |
| 2107 | 2263 | 'city' => $machine->city, |
| 2108 | 2264 | 'address' => !empty($machine->address) ? $machine->address : '', |
| @@ -2120,9 +2276,9 @@ | ||
| 2120 | 2276 | |
| 2121 | 2277 | function mk_get_machine($provider, $id) { |
| 2122 | 2278 | $machines = mk_get_machines($provider); |
| 2123 | 2279 | foreach ($machines as $machine) { |
| 2124 | - if ($machine['provider'] === $provider && $machine['id'] === $id) { | |
| 2280 | + if ($machine['carrier'] === $provider && $machine['id'] === $id) { | |
| 2125 | 2281 | return $machine; |
| 2126 | 2282 | } |
| 2127 | 2283 | } |
| 2128 | 2284 | return false; |
| @@ -2129,5 +2285,61 @@ | ||
| 2129 | 2285 | } |
| 2130 | 2286 | function mk_admin_error() { |
| 2131 | 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')); |
| 2132 | 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' ); | |
| 2133 | 2345 | } |