Plugin Directory

Changeset 3460036


Ignore:
Timestamp:
02/12/2026 02:27:14 PM (7 weeks ago)
Author:
bitsstech
Message:

bug fizes

Location:
shipment-tracker-for-woocommerce/trunk
Files:
1 added
22 edited

Legend:

Unmodified
Added
Removed
  • shipment-tracker-for-woocommerce/trunk/admin/class-bt-sync-shipment-tracking-admin.php

    r3449395 r3460036  
    5555    private $ekart;
    5656    private $courierkaro;
     57    private $proship;
    5758
    5859    /**
     
    6364     * @param      string    $version    The version of this plugin.
    6465     */
    65     public function __construct($plugin_name, $version, $shiprocket, $shyplite, $nimbuspost, $manual, $licenser, $shipmozo, $nimbuspost_new, $delhivery, $ship24, $fship, $ekart, $courierkaro)
     66    public function __construct($plugin_name, $version, $shiprocket, $shyplite, $nimbuspost, $manual, $licenser, $shipmozo, $nimbuspost_new, $delhivery, $ship24, $fship, $ekart, $courierkaro, $proship)
    6667    {
    6768
     
    8081        $this->ekart = $ekart;
    8182        $this->courierkaro = $courierkaro;
     83        $this->proship = $proship;
    8284    }
    8385
     
    173175                "test_conn_ship24_nonce" => wp_create_nonce('api_call_for_ship24_test_connection'),
    174176                "test_conn_nimbuspost_nonce" => wp_create_nonce('api_check_for_nimbuspost_test_connection'),
     177                "test_conn_proship_nonce" => wp_create_nonce('api_call_for_proship_test_connection'),
    175178                "buy_credit_balance_nonce" => wp_create_nonce('buy_credit_balance'),
    176179                "credit_balance_details_nonce" => wp_create_nonce('credit_balance_details'),
     
    320323                    $order->add_order_note('Added schedule to push this order to Courier Karo.' . "\n\n- Shipment tracker for woocommerce", false);
    321324                    wp_schedule_single_event(time() + 1, 'bt_push_order_to_courierkaro', array($order_id));
     325
     326                }
     327            }else if ($bt_shipping_provider == "proship") {
     328                $bt_sst_proship_push_order_method_is_automatic = carbon_get_theme_option('bt_sst_proship_push_orders');
     329                $is_premium = $this->licenser->is_license_active();
     330                if ($bt_sst_proship_push_order_method_is_automatic == 1 && $is_premium) {
     331                    $order = wc_get_order($order_id);
     332                    $order->add_order_note('Added schedule to push this order to delhivery.' . "\n\n- Shipment tracker for woocommerce", false);
     333                    wp_schedule_single_event(time() + 1, 'bt_push_order_to_proship', array($order_id));
    322334
    323335                }
     
    653665                return;
    654666            }
    655            
     667       
    656668            if ($push_resp) {
    657669                $ekart_tracking_id = $push_resp['tracking_id'] ?? '';
    658670                Bt_Sync_Shipment_Tracking::bt_sst_update_order_meta($order_id, '_bt_ekart_tracking_id', $ekart_tracking_id);
    659                 Bt_Sync_Shipment_Tracking::bt_sst_update_order_meta($order_id, '_bt_shipping_awb', $push_resp['barcodes']['wbn']);
     671                Bt_Sync_Shipment_Tracking::bt_sst_update_order_meta($order_id, '_bt_shipping_awb', $ekart_tracking_id);
    660672                $order->add_order_note("Order pushed to Ekart. Tracking No: " . $ekart_tracking_id . "\n\n- Shipment tracker for woocommerce", false);
    661                 // bt_force_sync_order_tracking($order_id);
     673                bt_force_sync_order_tracking($order_id);
    662674            } else {
    663675                $remarks = $push_resp['remark'] ?? ($push_resp['packages'][0]['remarks'] ?? 'Unknown error');
     
    717729        }
    718730    }
     731
     732    public function push_order_to_proship($order_id)
     733    {
     734        try {
     735            $order = wc_get_order($order_id);
     736
     737            $existing_awb = Bt_Sync_Shipment_Tracking::bt_sst_get_order_meta(
     738                $order_id,
     739                '_bt_proship_waybill_no',
     740                true
     741            );
     742
     743            if (!empty($existing_awb)) {
     744                $order->add_order_note(
     745                    'Delivery already assigned. Waybill No: ' . $existing_awb . "\n\n- Shipment tracker for WooCommerce",
     746                    false
     747                );
     748                return;
     749            }
     750
     751            $order->add_order_note(
     752                'Pushing order to Proship: ' . $order_id . "\n\n- Shipment tracker for WooCommerce",
     753                false
     754            );
     755
     756            $push_resp = $this->proship->create_order($order_id);
     757
     758            if (empty($push_resp) || !isset($push_resp['meta'])) {
     759                $order->add_order_note(
     760                    'Failed to push order to Proship. Empty or invalid response.' . "\n\n- Shipment tracker for WooCommerce",
     761                    false
     762                );
     763                return;
     764            }
     765
     766            if (empty($push_resp['meta']['success'])) {
     767                $error_msg = $push_resp['meta']['message'] ?? 'Unknown error from Proship';
     768
     769                $order->add_order_note(
     770                    "Failed to push order to Proship: {$error_msg}\n\n- Shipment tracker for WooCommerce",
     771                    false
     772                );
     773                return;
     774            }
     775
     776            if (!empty($push_resp['result']['awb_number'])) {
     777                $awb = $push_resp['result']['awb_number'];
     778                Bt_Sync_Shipment_Tracking::bt_sst_update_order_meta($order_id, '_proship_new_label_url', $push_resp['result']['label_url']);
     779
     780                Bt_Sync_Shipment_Tracking::bt_sst_update_order_meta(
     781                    $order_id,
     782                    '_bt_proship_waybill_no',
     783                    $awb
     784                );
     785                Bt_Sync_Shipment_Tracking::bt_sst_update_order_meta($order_id, '_bt_shipping_awb', $awb);
     786
     787                $order->add_order_note(
     788                    "Order pushed to Proship successfully. Waybill No: {$awb}\n\n- Shipment tracker for WooCommerce",
     789                    false
     790                );
     791
     792                bt_force_sync_order_tracking($order_id);
     793            } else {
     794                $order->add_order_note(
     795                    'Order created but AWB number not received from Proship.' . "\n\n- Shipment tracker for WooCommerce",
     796                    false
     797                );
     798            }
     799
     800        } catch (Exception $e) {
     801            error_log(
     802                'Proship push error for order ' . $order_id . ': ' . $e->getMessage()
     803            );
     804        }
     805    }
     806
    719807    public function push_order_to_nimbuspost($order_id)
    720808    {
     
    892980
    893981    }
     982
    894983    function findKeysByValue(string $value, array $array = null): array
    895984    {
     
    10321121        if (!$bt_shipping_provider || ($bt_shipping_provider == 'manual' && $shipping_mode_is_manual_or_ship24 == "manual")) {
    10331122            include plugin_dir_path(dirname(__FILE__)) . 'admin/partials/bt-shipment-tracking-manual-metabox.php';
    1034         } else if ($bt_shipping_provider == 'shiprocket' || $bt_shipping_provider == 'shyplite' || $bt_shipping_provider == 'nimbuspost' || $bt_shipping_provider == 'xpressbees' || $bt_shipping_provider == 'shipmozo' || $bt_shipping_provider == 'nimbuspost_new' || $bt_shipping_provider == 'delhivery' || $shipping_mode_is_manual_or_ship24 == "ship24" || $bt_shipping_provider == "fship" || $bt_shipping_provider == "ekart" || $bt_shipping_provider == "courierkaro") {
     1123        } else if ($bt_shipping_provider == 'shiprocket' || $bt_shipping_provider == 'shyplite' || $bt_shipping_provider == 'nimbuspost' || $bt_shipping_provider == 'xpressbees' || $bt_shipping_provider == 'shipmozo' || $bt_shipping_provider == 'nimbuspost_new' || $bt_shipping_provider == 'delhivery' || $shipping_mode_is_manual_or_ship24 == "ship24" || $bt_shipping_provider == "fship" || $bt_shipping_provider == "ekart" || $bt_shipping_provider == "courierkaro" || $bt_shipping_provider == "proship") {
    10351124            $order_id = isset($_GET['post']) ? $_GET['post'] : sanitize_text_field($_GET['id']);
    10361125            include plugin_dir_path(dirname(__FILE__)) . 'admin/partials/bt-shipment-tracking-metabox.php';
     
    12761365        }
    12771366        // $response = "idfugdf";
     1367        wp_send_json($response);
     1368        die();
     1369    }
     1370
     1371    public function api_call_for_proship_test_connection()
     1372    {
     1373        $nonce = sanitize_text_field($_GET["value"]);
     1374        if (!wp_verify_nonce($nonce, 'api_call_for_proship_test_connection')) {
     1375            return;
     1376        }
     1377        $response = array(
     1378            "status" => false,
     1379            "data" => null,
     1380            "message" => "Test Connection Failed. Please verify API URL and token and try again."
     1381        );
     1382        $api_call = $this->proship->test_proship();
     1383        if ($api_call) {
     1384            $response = array(
     1385                "status" => true,
     1386                "data" => null,
     1387                "message" => "Test Connection Successful. Great work!!"
     1388            );
     1389        }
    12781390        wp_send_json($response);
    12791391        die();
     
    23792491            $current_page = admin_url(sprintf($pagenow . '?%s', http_build_query($_GET)));
    23802492            wp_safe_redirect($current_page);
     2493        } else if (isset($_GET['bt_push_to_proship']) && $_GET['bt_push_to_proship'] == 1 && (isset($_GET['post']) || isset($_GET['id']))) {
     2494            $order_id = isset($_GET['post']) ? $_GET['post'] : $_GET['id'];
     2495            $getresponce = $this->push_order_to_proship($order_id);
     2496            unset($_GET['bt_push_to_proship']);
     2497            global $pagenow;
     2498            $current_page = admin_url(sprintf($pagenow . '?%s', http_build_query($_GET)));
     2499            wp_safe_redirect($current_page);
    23812500        } else if (is_admin() && isset($_GET['page']) && $_GET['page'] === 'crb_carbon_fields_container_shipment_tracker.php') {
    23822501            wp_safe_redirect(admin_url('admin.php?page=bt-shipment-tracking'));
     
    32463365                $resp = false;
    32473366            }
     3367        } else if ($shipping_provider == 'proship') {
     3368            $proship_new_label_url = Bt_Sync_Shipment_Tracking::bt_sst_get_order_meta($order_id, '_proship_new_label_url', true);
     3369            if ($proship_new_label_url) {
     3370                $resp = array($proship_new_label_url);
     3371            } else {
     3372                $resp = false;
     3373            }
    32483374        }
    32493375        // else if($shipping_provider == 'nimbuspost'){
     
    35983724    {
    35993725        require_once plugin_dir_path(dirname(__FILE__)) . 'includes/class-bt-sync-shipment-setting-update-core.php';
     3726
    36003727        $shipment_setting_obj = new Class_bt_sync_shipment_setting_update_core();
    36013728        $bt_sst_timer_settings = get_option('bt_sst_timer_settings', []);
    3602         $product_url_etd = get_option('_bt_sst_shiprocket_pincode_checker') ? $shipment_setting_obj->get_first_published_product_url() : false;
    3603         $product_url_timer = (isset($bt_sst_timer_settings['bt_sst_timer_enable']) && $bt_sst_timer_settings['bt_sst_timer_enable'] === true) ? $shipment_setting_obj->get_first_published_product_url() : false;
    3604         $bt_sst_timer_settings = get_option('bt_sst_timer_settings', []);
     3729        $timer_enabled = !empty($bt_sst_timer_settings['bt_sst_timer_enable']);
     3730        $etd_enabled = !empty(get_option('_bt_sst_shiprocket_pincode_checker'));
     3731        $product_url_etd = $etd_enabled
     3732            ? $shipment_setting_obj->get_first_published_product_url()
     3733            : false;
     3734
     3735        $product_url_timer = $timer_enabled
     3736            ? $shipment_setting_obj->get_first_published_product_url()
     3737            : false;
    36053738        $page_id = get_option('_bt_sst_tracking_page');
    3606         $page_status = get_post_status($page_id);
    3607         $tracking_url = get_permalink($page_id) && $page_status === 'publish' ? get_permalink($page_id) : '';
     3739        $page_status = $page_id ? get_post_status($page_id) : false;
     3740        $tracking_url = ($page_status === 'publish')
     3741            ? get_permalink($page_id)
     3742            : '';
    36083743        $shipment_setting_url = admin_url('admin.php?page=crb_carbon_fields_container_shipment_tracking.php');
    3609         $default_rpvider = get_option('_bt_sst_default_shipping_provider');
    3610         if ($default_rpvider) {
    3611             $primary_shipping_provider_url = $shipment_setting_url . '&t=' . $default_rpvider;
    3612         } else {
    3613             $primary_shipping_provider_url = $shipment_setting_url . '&t=manual';
    3614         }
    3615 
     3744        $default_provider = get_option('_bt_sst_default_shipping_provider');
     3745        $primary_shipping_provider_url = $shipment_setting_url . '&t=' . ($default_provider ?: 'manual');
    36163746        $resp = [
    3617             'tracking_page_status' => $page_status === 'publish' ? true : false,
    3618             'estimate_delivery_checker' => get_option('_bt_sst_shiprocket_pincode_checker') ? true : false,
    3619             'timer_setting_update' => $bt_sst_timer_settings['bt_sst_timer_enable'] === true ? true : false,
    3620             'fetch_auto_pincode' => get_option('_bt_sst_enable_auto_postcode_fill') ? true : false,
    3621             'fetch_weight' => get_option('_bt_sst_show_shipment_weight') ? true : false,
    3622             'fetch_dynamic_ship_method' => get_option('_bt_sst_select_courier_company') ? true : false,
    3623             'google_api_key' => get_option('_bt_sst_generic_google_key') ? get_option('_bt_sst_generic_google_key') : "",
    3624             'primary_shipping_method_setting_update' => get_option('_bt_sst_default_shipping_provider'),
    3625             'tracking_page_url' => $tracking_url,
    3626             'primary_shipping_provider_url' => $primary_shipping_provider_url,
    3627             'product_url_etd' => $product_url_etd,
    3628             'product_url_timer' => $product_url_timer,
     3747            'tracking_page_status'                 => $page_status === 'publish',
     3748            'estimate_delivery_checker'            => (bool) get_option('_bt_sst_shiprocket_pincode_checker'),
     3749            'timer_setting_update'                 => $timer_enabled,
     3750            'fetch_auto_pincode'                   => (bool) get_option('_bt_sst_enable_auto_postcode_fill'),
     3751            'fetch_weight'                         => (bool) get_option('_bt_sst_show_shipment_weight'),
     3752            'fetch_dynamic_ship_method'            => (bool) get_option('_bt_sst_select_courier_company'),
     3753            'google_api_key'                       => (string) get_option('_bt_sst_generic_google_key', ''),
     3754            'primary_shipping_method_setting_update'=> $default_provider ?: 'none',
     3755            'tracking_page_url'                    => $tracking_url,
     3756            'primary_shipping_provider_url'        => $primary_shipping_provider_url,
     3757            'product_url_etd'                      => $product_url_etd,
     3758            'product_url_timer'                    => $product_url_timer,
    36293759        ];
    36303760        wp_send_json_success($resp);
    3631 
    3632     }
     3761    }
     3762
    36333763    public function bt_sst_update_tracking_settings()
    36343764    {
     
    37733903        $obj = new Bt_Sync_Shipment_Tracking_CourierKaro();
    37743904        $response = $obj->update_order_shipment_status($order_id);
     3905    }else if ($bt_shipping_provider == 'proship') {
     3906        $obj = new Bt_Sync_Shipment_Tracking_Proship();
     3907        $response = $obj->update_order_shipment_status($order_id);
    37753908    }
    37763909
  • shipment-tracker-for-woocommerce/trunk/admin/js/bt-sync-shipment-tracking-admin.js

    r3388085 r3460036  
    235235            api_test_connection_fship();
    236236        });
     237        $(document).on('click', '#api_test_connection_btn_proship', function (e) {
     238            e.preventDefault();
     239            $(this).addClass('is-loading');
     240            api_test_connection_proship();
     241        });
    237242        $(document).on('click', '#api_test_connection_btn_ekart', function (e) {
    238243            e.preventDefault();
     
    292297
    293298        const type = getUrlVars()["t"];
    294         console.log(type);
     299        if(type){
    295300        const typeToButtonMap = {
    296301          tracking: "Tracking Widget",
     
    315320         
    316321        }
     322    }
    317323
    318324
     
    348354            $('#api_test_connection_modal_ship24').css('display', 'none');
    349355
     356        });
     357        $(document).on('click', '#api_tc_m_close_btn_proship', function (e) {
     358            $('#api_test_connection_modal_proship').removeClass('is-active');
    350359        });
    351360        $(document).on('click', '#api_shipmozo_tc_m_close_btn', function (e) {
     
    967976        )
    968977    }
     978    function api_test_connection_proship() {
     979        var nonce = bt_sync_shipment_track_data.test_conn_proship_nonce;
     980        $.get(
     981            bt_sync_shipment_track_data.ajax_url,
     982            { action: 'api_call_for_proship_test_connection', value: nonce },
     983            function (res) {
     984                $('#api_tc-m-content_proship').html(res.message);
     985                $('#api_test_connection_modal_proship').addClass('is-active');
     986                $('#api_test_connection_btn_proship').removeClass('is-loading');
     987            }
     988        );
     989    }
    969990    function api_test_connection_ekart() {
    970991        // console.log(bt_sync_shipment_track_data.test_conn_nonce);       
  • shipment-tracker-for-woocommerce/trunk/admin/partials/bt-shipment-tracking-metabox.php

    r3338305 r3460036  
    116116        <?php } else { ?>
    117117            <button type="button" id="sync_manual" class="button save_order" href='#'>Sync Tracking Now</button>
    118             <?php if ($get_awb_no && $bt_shipping_provider == 'shiprocket' || $bt_shipping_provider == 'delhivery' || $bt_shipping_provider == 'shipmozo' || $bt_shipping_provider == 'nimbuspost_new' || $bt_shipping_provider == 'nimbuspost') { ?>
     118            <?php if ($get_awb_no && $bt_shipping_provider == 'shiprocket' || $bt_shipping_provider == 'delhivery' || $bt_shipping_provider == 'shipmozo' || $bt_shipping_provider == 'nimbuspost_new' || $bt_shipping_provider == 'nimbuspost'|| $bt_shipping_provider == 'proship') { ?>
    119119                <button type="button" style="margin:5px 0" ; id="dawnload_able_pdf" class="button dawnload_able_document"
    120120                    href='#'>Download Label</button>
  • shipment-tracker-for-woocommerce/trunk/admin/partials/order_admin_after_shipping.php

    r3431532 r3460036  
    5353?>
    5454    <a href="<?php echo esc_url($current_page) ?>">Push Now</a>
     55
     56     <?php elseif($bt_shipping_provider == "proship" && wc_get_order($order_id)->has_status('processing')):
     57    global $pagenow;
     58    $current_page = admin_url(sprintf($pagenow . '?%s', http_build_query(array_merge($_GET, array("bt_push_to_proship" => true)))));   
     59?>
     60    <a href="<?php echo esc_url($current_page) ?>">Push Now</a>
    5561     <?php endif ?>
    5662
  • shipment-tracker-for-woocommerce/trunk/admin/partials/order_shipment_details.php

    r3431532 r3460036  
    4545            $edit =  "<br><a class='bt_sync_order_tracking' data-order-id='$order_id' href='#'>Sync Now</a>";
    4646        }
     47        else if ($bt_shipping_provider == "proship"){
     48            $edit =  "<br><a class='bt_sync_order_tracking' data-order-id='$order_id' href='#'>Sync Now</a>";
     49        }
    4750   // }
    4851}
  • shipment-tracker-for-woocommerce/trunk/bt-sync-shipment-tracking.php

    r3449395 r3460036  
    1717 * Plugin URI:        https://shipment-tracker-for-woocommerce.bitss.tech/
    1818 * Description:       Most comprehensive shipment tracking plugin that extends your woocommerce store with shipment related features. Keeps you & your customers informed about shipment movement.
    19  * Version:           1.5.2.6.1
     19 * Version:           1.5.3.2
    2020 * Author:            Bitss Techniques
    2121 * Author URI:        https://shipment-tracker-for-woocommerce.bitss.tech
     
    5959
    6060define( 'Carbon_Fields\URL', trailingslashit( plugin_dir_url( __FILE__ ) ) . 'vendor/htmlburger/carbon-fields/' );//fix for Bitnami installations.
    61 define( 'BT_SYNC_SHIPMENT_TRACKING_VERSION', '1.5.2.6.1' );
    62 define( 'BT_SHIPPING_PROVIDERS', array('delhivery' =>'Delhivery','nimbuspost' => 'Nimbuspost (Deprecated)','nimbuspost_new' => 'Nimbuspost','shipmozo'=>'Shipmozo','shiprocket' => 'Shiprocket', 'xpressbees' => 'Xpressbees', 'manual' =>'Custom Shipping', 'fship' => 'Fship','ekart' => 'Ekart','courierkaro' => 'Courier Karo') );
    63 define( 'BT_SHIPPING_PROVIDERS_WITH_NONE', array('none' =>'none','delhivery' =>'Delhivery', 'nimbuspost' => 'Nimbuspost (OLD)','nimbuspost_new' => 'Nimbuspost(NEW)','shipmozo'=>'Shipmozo','shiprocket' => 'Shiprocket', 'xpressbees' => 'Xpressbees','manual' =>'Custom Shipping' , 'fship' => 'Fship','ekart' => 'Ekart','courierkaro' => 'Courier Karo') );
     61define( 'BT_SYNC_SHIPMENT_TRACKING_VERSION', '1.5.3.2' );
     62define( 'BT_SHIPPING_PROVIDERS', array('delhivery' =>'Delhivery','nimbuspost' => 'Nimbuspost (Deprecated)','nimbuspost_new' => 'Nimbuspost','shipmozo'=>'Shipmozo','shiprocket' => 'Shiprocket', 'xpressbees' => 'Xpressbees', 'manual' =>'Custom Shipping', 'fship' => 'Fship','ekart' => 'Ekart','courierkaro' => 'Courier Karo','proship' => 'Proship') );
     63define( 'BT_SHIPPING_PROVIDERS_WITH_NONE', array('none' =>'none','delhivery' =>'Delhivery', 'nimbuspost' => 'Nimbuspost (OLD)','nimbuspost_new' => 'Nimbuspost(NEW)','shipmozo'=>'Shipmozo','shiprocket' => 'Shiprocket', 'xpressbees' => 'Xpressbees','manual' =>'Custom Shipping' , 'fship' => 'Fship','ekart' => 'Ekart','courierkaro' => 'Courier Karo','proship' => 'Proship') );
    6464define( 'BT_SST_MANUAL_DEFAULT_COURIER_NAME', $default_manual_coriure_name);
    6565define( 'BT_SHIPPING_STATUS', array('pending-pickup' => 'Pending pickup', 'out-for-pickup' => 'Out for pickup', 'in-transit' =>'In Transit', 'out-for-delivery' => 'Out for delivery', 'delivered' => 'Delivered', 'canceled' =>'Canceled', 'rto-in-transit' =>'RTO in Transit', 'rto-delivered' =>'RTO Delivered') );
  • shipment-tracker-for-woocommerce/trunk/composer.lock

    r3446887 r3460036  
    204204        {
    205205            "name": "doctrine/deprecations",
    206             "version": "1.1.5",
     206            "version": "1.1.6",
    207207            "source": {
    208208                "type": "git",
    209209                "url": "https://github.com/doctrine/deprecations.git",
    210                 "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38"
    211             },
    212             "dist": {
    213                 "type": "zip",
    214                 "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
    215                 "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
     210                "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca"
     211            },
     212            "dist": {
     213                "type": "zip",
     214                "url": "https://api.github.com/repos/doctrine/deprecations/zipball/d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca",
     215                "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca",
    216216                "shasum": ""
    217217            },
     
    220220            },
    221221            "conflict": {
    222                 "phpunit/phpunit": "<=7.5 || >=13"
     222                "phpunit/phpunit": "<=7.5 || >=14"
    223223            },
    224224            "require-dev": {
    225                 "doctrine/coding-standard": "^9 || ^12 || ^13",
    226                 "phpstan/phpstan": "1.4.10 || 2.1.11",
     225                "doctrine/coding-standard": "^9 || ^12 || ^14",
     226                "phpstan/phpstan": "1.4.10 || 2.1.30",
    227227                "phpstan/phpstan-phpunit": "^1.0 || ^2",
    228                 "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12",
     228                "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12.4 || ^13.0",
    229229                "psr/log": "^1 || ^2 || ^3"
    230230            },
     
    246246            "support": {
    247247                "issues": "https://github.com/doctrine/deprecations/issues",
    248                 "source": "https://github.com/doctrine/deprecations/tree/1.1.5"
    249             },
    250             "time": "2025-04-07T20:06:18+00:00"
     248                "source": "https://github.com/doctrine/deprecations/tree/1.1.6"
     249            },
     250            "time": "2026-02-07T07:09:04+00:00"
    251251        },
    252252        {
     
    993993        {
    994994            "name": "symfony/finder",
    995             "version": "v6.4.32",
     995            "version": "v6.4.33",
    996996            "source": {
    997997                "type": "git",
    998998                "url": "https://github.com/symfony/finder.git",
    999                 "reference": "3ec24885c1d9ababbb9c8f63bb42fea3c8c9b6de"
    1000             },
    1001             "dist": {
    1002                 "type": "zip",
    1003                 "url": "https://api.github.com/repos/symfony/finder/zipball/3ec24885c1d9ababbb9c8f63bb42fea3c8c9b6de",
    1004                 "reference": "3ec24885c1d9ababbb9c8f63bb42fea3c8c9b6de",
     999                "reference": "24965ca011dac87431729640feef8bcf7b5523e0"
     1000            },
     1001            "dist": {
     1002                "type": "zip",
     1003                "url": "https://api.github.com/repos/symfony/finder/zipball/24965ca011dac87431729640feef8bcf7b5523e0",
     1004                "reference": "24965ca011dac87431729640feef8bcf7b5523e0",
    10051005                "shasum": ""
    10061006            },
     
    10371037            "homepage": "https://symfony.com",
    10381038            "support": {
    1039                 "source": "https://github.com/symfony/finder/tree/v6.4.32"
     1039                "source": "https://github.com/symfony/finder/tree/v6.4.33"
    10401040            },
    10411041            "funding": [
     
    10571057                }
    10581058            ],
    1059             "time": "2026-01-10T14:09:00+00:00"
     1059            "time": "2026-01-26T13:03:48+00:00"
    10601060        },
    10611061        {
  • shipment-tracker-for-woocommerce/trunk/includes/class-bt-sync-shipment-tracking-crons.php

    r3446887 r3460036  
    1818    private $fship;
    1919    private $courierkaro;
    20    
    21     public function __construct($shiprocket,$shyplite,$nimbuspost_new,$shipmozo,$licenser,$delhivery, $fship, $courierkaro) {
     20    private $proship;
     21
     22    public function __construct($shiprocket,$shyplite,$nimbuspost_new,$shipmozo,$licenser,$delhivery, $fship, $courierkaro, $proship) {
    2223        $this->shiprocket = $shiprocket;
    2324        $this->shipmozo = $shipmozo;
     
    2829        $this->fship = $fship;
    2930        $this->courierkaro = $courierkaro;
     31        $this->proship = $proship;
    3032    }
    3133   
     
    108110                $objs = $this->courierkaro->update_order_shipment_status($o);
    109111               // error_log(json_encode($objs));
     112            }
     113        }
     114    }
     115
     116    private function sync_proship(){
     117        $orderids = $this->get_orders('proship');
     118        foreach($orderids as $o){
     119            $bt_shipment_tracking = Bt_Sync_Shipment_Tracking_Shipment_Model::get_tracking_by_order_id($o);
     120            if(empty($bt_shipment_tracking) || empty($bt_shipment_tracking->current_status) || stripos($bt_shipment_tracking->current_status, "delivered") === false){
     121                $objs = $this->proship->update_order_shipment_status($o);
    110122            }
    111123        }
     
    242254            $this->sync_courierkaro();
    243255        }
     256        if(is_array($enabled_shipping_providers) && in_array('proship',$enabled_shipping_providers)){
     257            $bt_sst_proship_cron_schedule = carbon_get_theme_option( 'bt_sst_proship_cron_schedule' );
     258            if( $bt_sst_proship_cron_schedule == $cron_freq ){
     259                $this->sync_proship();
     260            }
     261        }
    244262        $bt_sst_shyplite_cron_schedule=carbon_get_theme_option( 'bt_sst_shyplite_cron_schedule' );
    245263        if( $bt_sst_shyplite_cron_schedule==1){
  • shipment-tracker-for-woocommerce/trunk/includes/class-bt-sync-shipment-tracking-rest-functions.php

    r3449395 r3460036  
    1515    private $courierkaro;
    1616    private $delhivery;
    17 
    18     public function __construct($shiprocket,$shyplite, $nimbuspost, $manual, $xpressbees, $shipmozo, $nimbuspost_new, $ship24,$ekart, $courierkaro, $delhivery)  {
     17    private $proship;
     18
     19    public function __construct($shiprocket,$shyplite, $nimbuspost, $manual, $xpressbees, $shipmozo, $nimbuspost_new, $ship24,$ekart, $courierkaro, $delhivery, $proship)  {
    1920
    2021        $this->shiprocket = $shiprocket;
     
    2930        $this->delhivery = $delhivery;
    3031        $this->courierkaro = $courierkaro;
     32        $this->proship = $proship;
    3133    }
    3234
     
    141143        return $this->delhivery->delhivery_webhook_receiver($request);
    142144    }
     145    public function proship_webhook_receiver($request){
     146        return $this->proship->proship_webhook_receiver($request);
     147    }
    143148
    144149    public function shipmozo_webhook_receiver($request){
  • shipment-tracker-for-woocommerce/trunk/includes/class-bt-sync-shipment-tracking-rest.php

    r3446887 r3460036  
    3939    private $rest_route_courierkaro;
    4040    private $rest_route_delhivery;
     41    private $rest_route_proship;
    4142
    4243    /**
     
    4748     * @param      string    $version    The version of this plugin.
    4849     */
    49     public function __construct( $plugin_name, $version, $shiprocket, $shyplite, $nimbuspost, $manual, $xpressbees, $shipmozo, $nimbuspost_new, $ship24, $ekart, $courierkaro, $delhivery ) {
     50    public function __construct( $plugin_name, $version, $shiprocket, $shyplite, $nimbuspost, $manual, $xpressbees, $shipmozo, $nimbuspost_new, $ship24, $ekart, $courierkaro, $delhivery, $proship = null ) {
    5051
    5152        require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-bt-sync-shipment-tracking-rest-functions.php';
     
    6465        $this->rest_route_delhivery = "bt-sync-shipment-tracking-delhivery";
    6566        $this->rest_route_courierkaro = "bt-sync-shipment-tracking-courierkaro";
    66 
    67         $this->rest_functions = new Bt_Sync_Shipment_Tracking_Rest_Functions($shiprocket,$shyplite,$nimbuspost, $manual, $xpressbees,$shipmozo,$nimbuspost_new, $ship24, $ekart, $courierkaro, $delhivery);
     67        $this->rest_route_proship = "bt-sync-shipment-tracking-proship";
     68
     69        $this->rest_functions = new Bt_Sync_Shipment_Tracking_Rest_Functions($shiprocket,$shyplite,$nimbuspost, $manual, $xpressbees,$shipmozo,$nimbuspost_new, $ship24, $ekart, $courierkaro, $delhivery, $proship);
    6870    }
    6971
     
    200202        ));
    201203    }
     204    public function rest_proship_webhook(){
     205        register_rest_route( $this->rest_route_proship . '/' . $this->version , 'webhook_receiver', array(
     206            'methods' => 'POST',
     207            'callback' => array($this->rest_functions,"proship_webhook_receiver"),
     208            'permission_callback' => '__return_true',
     209        ));
     210    }
    202211
    203212    public function rest_manual_webhook(){
  • shipment-tracker-for-woocommerce/trunk/includes/class-bt-sync-shipment-tracking.php

    r3449401 r3460036  
    33use Carbon_Fields\Container;
    44use Carbon_Fields\Field;
     5use PhpUnitsOfMeasure\PhysicalQuantity\Mass;
     6use PhpUnitsOfMeasure\PhysicalQuantity\Length;
    57
    68/**
     
    7577    private $fship;
    7678    private $ekart;
     79    private $proship;
    7780
    7881    /**
     
    160163            return null;
    161164        }
     165    }
     166
     167    public static function bt_sst_compute_package_dimensions($order_id) {
     168        if (false == $order = wc_get_order($order_id)) {
     169            return [
     170                'length' => 0,
     171                'width' => 0,
     172                'height' => 0,
     173                'weight' => 0,
     174            ];
     175        }
     176
     177        $total_weight = 0;
     178        $total_width = 0;
     179        $total_length = 0;
     180        $total_height = 0;
     181
     182        foreach ($order->get_items() as $item_id => $a) {
     183            if (is_a($a, 'WC_Order_Item_Product')) {
     184                $product = $a->get_product();
     185                if (!$product) continue;
     186                $qty = $a->get_quantity();
     187
     188                if (!empty($product->get_weight()) && $product->get_weight() > 0) {
     189                    $total_weight += ($product->get_weight() * $qty);
     190                }
     191                if (!empty($product->get_width()) && $product->get_width() > 0) {
     192                    $total_width += ($product->get_width() * $qty);
     193                    if ($product->get_length() > $total_length) {
     194                        $total_length = $product->get_length();
     195                    }
     196                    if ($product->get_height() > $total_height) {
     197                        $total_height = $product->get_height();
     198                    }
     199                }
     200            }
     201        }
     202
     203        return [
     204            'length' => (float) $total_length,
     205            'width' => (float) $total_width,
     206            'height' => (float) $total_height,
     207            'weight' => (float) $total_weight,
     208        ];
     209    }
     210
     211    public static function bt_sst_get_package_dimensions($order_id) {
     212        $dimension_unit = get_option('woocommerce_dimension_unit');
     213        $weight_unit = get_option('woocommerce_weight_unit');
     214
     215        // Check order meta overrides (stored in store units)
     216        $meta_length = Bt_Sync_Shipment_Tracking::bt_sst_get_order_meta($order_id, '_bt_package_length');
     217        $meta_width = Bt_Sync_Shipment_Tracking::bt_sst_get_order_meta($order_id, '_bt_package_width');
     218        $meta_height = Bt_Sync_Shipment_Tracking::bt_sst_get_order_meta($order_id, '_bt_package_height');
     219        $meta_weight = Bt_Sync_Shipment_Tracking::bt_sst_get_order_meta($order_id, '_bt_package_weight');
     220
     221        if (!empty($meta_length) || !empty($meta_width) || !empty($meta_height) || !empty($meta_weight)) {
     222            $length_val = !empty($meta_length) ? (float) $meta_length : 0;
     223            $width_val = !empty($meta_width) ? (float) $meta_width : 0;
     224            $height_val = !empty($meta_height) ? (float) $meta_height : 0;
     225            $weight_val = !empty($meta_weight) ? (float) $meta_weight : 0;
     226        } else {
     227            $computed = Bt_Sync_Shipment_Tracking::bt_sst_compute_package_dimensions($order_id);
     228            $length_val = $computed['length'];
     229            $width_val = $computed['width'];
     230            $height_val = $computed['height'];
     231            $weight_val = $computed['weight'];
     232        }
     233
     234        // Convert to standard units: cm for dimensions, g for weight
     235        try {
     236            $length = new Length($length_val, $dimension_unit);
     237            $length_cm = (float) $length->toUnit('cm');
     238        } catch (Exception $e) {
     239            $length_cm = (float) $length_val;
     240        }
     241        try {
     242            $width = new Length($width_val, $dimension_unit);
     243            $width_cm = (float) $width->toUnit('cm');
     244        } catch (Exception $e) {
     245            $width_cm = (float) $width_val;
     246        }
     247        try {
     248            $height = new Length($height_val, $dimension_unit);
     249            $height_cm = (float) $height->toUnit('cm');
     250        } catch (Exception $e) {
     251            $height_cm = (float) $height_val;
     252        }
     253        try {
     254            $mass = new Mass($weight_val, $weight_unit);
     255            $weight_g = (float) $mass->toUnit('g');
     256        } catch (Exception $e) {
     257            $weight_g = (float) $weight_val;
     258        }
     259
     260        if ($weight_g < 100) $weight_g = 100; // minimum 100g
     261        if ($length_cm <= 0) $length_cm = 0.5;
     262        if ($width_cm <= 0) $width_cm = 0.5;
     263        if ($height_cm <= 0) $height_cm = 0.5;
     264
     265        return [
     266            'length_cm' => $length_cm,
     267            'width_cm' => $width_cm,
     268            'height_cm' => $height_cm,
     269            'weight_g' => $weight_g,
     270        ];
    162271    }
    163272
     
    233342        require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/shipping_providers/ekart.php';
    234343        require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/shipping_providers/courier_karo.php';
     344        require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/shipping_providers/proship.php';
    235345
    236346        require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-bt-sync-shipment-tracking-rest.php';
     
    255365        $this->ekart = new Bt_Sync_Shipment_Tracking_Ekart();
    256366        $this->courierkaro = new Bt_Sync_Shipment_Tracking_CourierKaro();
     367        $this->proship = new Bt_Sync_Shipment_Tracking_Proship();
    257368        ( new Bt_Sync_Shipment_Tracking_Review() )->hooks();
    258369    }
     
    266377    private function define_cron_events() {
    267378
    268         $this->crons = new Bt_Sync_Shipment_Tracking_Crons($this->shiprocket,$this->shyplite,$this->nimbuspost_new,$this->shipmozo, $this->licenser, $this->delhivery, $this->ship24, $this->fship, $this->ekart);
     379        $this->crons = new Bt_Sync_Shipment_Tracking_Crons($this->shiprocket,$this->shyplite,$this->nimbuspost_new,$this->shipmozo, $this->licenser, $this->delhivery, $this->fship, $this->courierkaro, $this->proship);
    269380
    270381        $this->loader->add_action( Bt_Sync_Shipment_Tracking_Crons::BT_MINUTELY_JOB, $this->crons, 'minutely_job');
     
    285396    private function define_rest_apis() {
    286397
    287         $rest = new Bt_Sync_Shipment_Tracking_Rest( $this->get_plugin_name(), $this->get_version(), $this->shiprocket, $this->shyplite, $this->nimbuspost, $this->manual, $this->xpressbees, $this->shipmozo, $this->nimbuspost_new, $this->ship24, $this->ekart, $this->courierkaro, $this->delhivery);
     398        $rest = new Bt_Sync_Shipment_Tracking_Rest( $this->get_plugin_name(), $this->get_version(), $this->shiprocket, $this->shyplite, $this->nimbuspost, $this->manual, $this->xpressbees, $this->shipmozo, $this->nimbuspost_new, $this->ship24, $this->ekart, $this->courierkaro, $this->delhivery, $this->proship);
    288399
    289400        //shiprocket webhook & apis
     
    314425        $this->loader->add_action( 'rest_api_init', $rest, 'rest_ekart_webhook');
    315426        $this->loader->add_action( 'rest_api_init', $rest, 'rest_delhivery_webhook');
     427        $this->loader->add_action( 'rest_api_init', $rest, 'rest_proship_webhook');
    316428        // $this->loader->add_action( 'init', $rest, 'generate_random_webhook_secret_key');
    317429
     
    351463    private function define_admin_hooks() {
    352464
    353         $plugin_admin = new Bt_Sync_Shipment_Tracking_Admin( $this->get_plugin_name(), $this->get_version(),$this->shiprocket,$this->shyplite, $this->nimbuspost, $this->manual, $this->licenser, $this->shipmozo, $this->nimbuspost_new, $this->delhivery, $this->ship24, $this->fship, $this->ekart, $this->courierkaro);
     465        $plugin_admin = new Bt_Sync_Shipment_Tracking_Admin( $this->get_plugin_name(), $this->get_version(),$this->shiprocket,$this->shyplite, $this->nimbuspost, $this->manual, $this->licenser, $this->shipmozo, $this->nimbuspost_new, $this->delhivery, $this->ship24, $this->fship, $this->ekart, $this->courierkaro, $this->proship);
    354466        $this->loader->add_action( 'dokan_order_detail_after_order_general_details',$plugin_admin, 'custom_dokan_order_details', 10, 1 );
    355467        $this->loader->add_action('carbon_fields_save_post',$plugin_admin, 'update_woocommerce_data_on_carbon_fields_save', 10, 3);
     
    379491        $this->loader-> add_filter('wc_order_statuses',$plugin_admin, 'add_custom_status_to_wc_order_statuses');
    380492        $this->loader->add_action( 'admin_init', $plugin_admin, 'handle_admin_init');
    381         $this->loader->add_action('admin_menu', $plugin_admin, 'bt_add_admin_menu',0);
     493        $this->loader->add_action('admin_menu', $plugin_admin, 'bt_add_admin_menu',10);
    382494
    383495        //$this->loader->add_action( 'init', $plugin_admin, 'register_shipment_arrival_order_status');
     
    390502        $this->loader->add_action( 'bt_push_order_to_ekart', $plugin_admin, 'push_order_to_ekart',10,3);
    391503        $this->loader->add_action( 'bt_push_order_to_courierkaro', $plugin_admin, 'push_order_to_courierkaro',10,3);
     504        $this->loader->add_action( 'bt_push_order_to_proship', $plugin_admin, 'push_order_to_proship',10,3);
    392505        $this->loader->add_action( 'bt_push_order_to_nimbuspost', $plugin_admin, 'push_order_to_nimbuspost',10,3);
    393506
    394         $ajax_functions = new Bt_Sync_Shipment_Tracking_Admin_Ajax_Functions($this->crons, $this->shiprocket, $this->shyplite, $this->nimbuspost, $this->manual, $this->licenser, $this->delhivery, $this->ship24, $this->fship, $this->ekart);
     507        $ajax_functions = new Bt_Sync_Shipment_Tracking_Admin_Ajax_Functions($this->crons, $this->shiprocket, $this->shyplite, $this->nimbuspost, $this->manual, $this->licenser, $this->delhivery, $this->ship24, $this->fship, $this->ekart, $this->proship);
    395508        $this->loader->add_action( 'wp_ajax_sync_now_shyplite', $ajax_functions, 'bt_sync_now_shyplite',10,2);
    396509
     
    400513        $this->loader->add_action('wp_ajax_bt_tracking_manual',$ajax_functions, 'bt_tracking_manual');
    401514        $this->loader->add_action('wp_ajax_save_order_awb_number',$ajax_functions, 'save_order_awb_number');
     515        $this->loader->add_action('wp_ajax_save_package_dimensions',$ajax_functions, 'save_package_dimensions');
    402516        $this->loader->add_action('wp_ajax_post_customer_feedback_to_sever',$ajax_functions, 'post_customer_feedback_to_sever');
    403517
     
    414528        $this->loader->add_action( 'wp_ajax_api_call_for_delhivery_test_connection', $plugin_admin, 'api_call_for_delhivery_test_connection' );
    415529        $this->loader->add_action( 'wp_ajax_api_call_for_fship_test_connection', $plugin_admin, 'api_call_for_fship_test_connection' );
     530        $this->loader->add_action( 'wp_ajax_api_call_for_proship_test_connection', $plugin_admin, 'api_call_for_proship_test_connection' );
    416531        $this->loader->add_action( 'wp_ajax_api_call_for_ekart_test_connection', $plugin_admin, 'api_call_for_ekart_test_connection' );
    417532        $this->loader->add_action( 'wp_ajax_api_call_for_ship24_test_connection', $plugin_admin, 'api_call_for_ship24_test_connection' );
     
    20092124        }
    20102125
     2126        if(is_array($enabled_shipping_providers) && in_array('proship', $enabled_shipping_providers)){
     2127            $proship_webhook_time = get_option('proship_webhook_called', 'never');
     2128            if($proship_webhook_time!="never"){
     2129                $proship_webhook_time = date('Y-m-d H:i:s', $proship_webhook_time);
     2130            }   
     2131            $container->add_tab( __( 'Proship' ), array(
     2132               
     2133                Field::make( 'html', 'bt_sst_proship_webhook_html', __( 'Proship Webhook URL' ) )
     2134                    ->set_html(
     2135                        sprintf( '
     2136                                <b>Proship Webhook URL: [<a target="_blank" href="https://www.proship.in/view-webhook">Configure Webhook Here</a>] </b>
     2137                                <p>'.get_site_url(null, '/wp-json/bt-sync-shipment-tracking-proship/v1.0.0/webhook_receiver').'<a href="#" class="bt_sst_copy_link" > Copy Link</a> </p>
     2138                                <p>Last Webhook Called On: '.$proship_webhook_time.'</p>
     2139                            ')
     2140                    ),
     2141                Field::make( 'text', 'bt_sst_proship_user_email', __( 'E-mail' ) )
     2142                    ->set_width( 50 ),
     2143                Field::make( 'text', 'bt_sst_proship_user_password', __( 'Password' ) )
     2144                    ->set_width( 50 ),
     2145               
     2146                Field::make( 'html', 'bt_sst_test_connection_proship' )
     2147                    ->set_html('
     2148                        <div style="margin-bottom: 20px;">
     2149                            <button type="button" class="button button-secondary" id="api_test_connection_btn_proship">Test Connection</button>
     2150                            <p class="description">Save changes before testing connection.</p>
     2151                        </div>
     2152                    '),
     2153               
     2154                Field::make( 'text', 'bt_sst_proship_from_name', __( 'Sender/Address Name' ) )
     2155                    ->set_width( 50 ),
     2156                Field::make( 'text', 'bt_sst_proship_from_phone', __( 'Phone Number' ) )
     2157                    ->set_width( 50 ),
     2158                   
     2159                Field::make( 'textarea', 'bt_sst_proship_from_address', __( 'Address' ) )
     2160                    ->set_rows(2),
     2161                   
     2162                Field::make( 'text', 'bt_sst_proship_from_addressline', __( 'Address Line 2' ) )
     2163                    ->set_width( 33 ),
     2164                Field::make( 'text', 'bt_sst_proship_from_email', __( 'Contact Email' ) )
     2165                    ->set_width( 33 ),
     2166
     2167                Field::make( 'text', 'bt_sst_proship_from_city', __( 'City' ) )->set_width( 33 ),
     2168                Field::make( 'text', 'bt_sst_proship_from_state', __( 'State' ) )->set_width( 33 ),
     2169                Field::make( 'text', 'bt_sst_proship_from_pincode', __( 'Pincode' ) )->set_width( 33 ),
     2170
     2171                Field::make( 'text', 'bt_sst_proship_from_gstin', __( 'GSTIN' ) )
     2172                    ->set_width( 33 ),
     2173                Field::make( 'select', 'bt_sst_proship_cron_schedule', __( 'Sync Tracking Interval' ) )
     2174                    ->add_options( array(
     2175                        'never'   => 'Never',
     2176                        '15mins'  => '15 Minutes',
     2177                        '1hour'   => '1 Hour',
     2178                        '4hours'  => '4 Hours',
     2179                        '24hours' => '24 Hours',
     2180                    ) ),
     2181                Field::make( 'checkbox', 'bt_sst_proship_push_orders', __( 'Push orders to Proship') )
     2182                        ->set_classes( 'title is-6' )
     2183                        ->set_help_text( 'Plugin will push "processing" orders to Proship. Use this if Proship\'s Order Pull is not working correctly.
     2184                        <br>This feature also pushes correct order weight and dimensions of package to Proship, it helps in reducing weight discrepancy issues.
     2185                        <br>For this option to work, make sure that the weight and dimensions are correctly set for every product. Keep some packaging buffer for better accuracy in calculation.
     2186                        ' ),
     2187            ));
     2188        }
     2189
    20112190        if(is_array($enabled_shipping_providers) && in_array('fship',$enabled_shipping_providers)){
    20122191           
     
    21782357                    'fship' => 'Fship',
    21792358                    'ekart' => 'Ekart',
     2359                    'proship' => 'Proship',
    21802360                ) )
    21812361                ->set_help_text('
     
    24312611                    'fship' => 'Fship',
    24322612                    'ekart' => 'Ekart',
     2613                    'proship' => 'Proship',
    24332614                   
    24342615                   
     
    25232704                    )
    25242705                ) ),
     2706                Field::make( 'text', 'bt_sst_proship_fall_back_rate', __( 'Fall Back Rate (Per 500gm)' ) )
     2707                ->set_attribute( 'type', 'number' )
     2708                ->set_help_text( 'Fallback rate is used when no courier is available between any pickup/delivery combination. Leave it empty if you do not want to use any fallback rate.' )
     2709                ->set_conditional_logic( array(
     2710                    array(
     2711                        'field' => 'bt_sst_select_courier_company',
     2712                        'value' => true,
     2713                    ),
     2714                    array(
     2715                        'field' => 'bt_sst_courier_rate_provider',
     2716                        'value' => 'proship',
     2717                    )
     2718                ) ),
    25252719                Field::make( 'text', 'bt_sst_ekart_fall_back_rate', __( 'Fall Back Rate (Per 500gm)' ) )
    25262720                ->set_attribute( 'type', 'number' )
     
    25982792                        'field' => 'bt_sst_courier_rate_provider',
    25992793                        'compare' => 'IN',
    2600                         'value' => array('shiprocket','shipmozo','delhivery'),
     2794                        'value' => array('shiprocket','shipmozo','delhivery','proship'),
    26012795                    )
    26022796                ) ),
     
    27852979    private function define_public_hooks() {
    27862980
    2787         $plugin_public = new Bt_Sync_Shipment_Tracking_Public( $this->get_plugin_name(), $this->get_version() ,$this->shiprocket, $this->shipmozo, $this->nimbuspost_new, $this->licenser, $this->delhivery, $this->fship, $this->ekart);
     2981        $plugin_public = new Bt_Sync_Shipment_Tracking_Public( $this->get_plugin_name(), $this->get_version() ,$this->shiprocket, $this->shipmozo, $this->nimbuspost_new, $this->licenser, $this->delhivery, $this->fship, $this->ekart, $this->proship);
    27882982
    27892983        // $pincode_checker_location_hook = carbon_get_theme_option( 'bt_sst_pincode_checker_location' );
  • shipment-tracker-for-woocommerce/trunk/includes/models/class-bt-sync-shipment-tracking-shipment-model.php

    r3256359 r3460036  
    144144            }else if($this->shipping_provider=="delhivery"){
    145145                return "https://www.delhivery.com/track/package/" . $this->awb;
     146            }else if($this->shipping_provider=="proship"){
     147                return "https://tracking.proship.in/?searchBy=waybill&ref_awb_number=" . $this->awb;
     148            }else if($this->shipping_provider=="ekart"){
     149                return "https://www.ekartlogistics.com/ekartlogistics-web/shipmenttrack/" . $this->awb;
    146150            }
    147151
  • shipment-tracker-for-woocommerce/trunk/includes/shipping_providers/ekart.php

    r3388085 r3460036  
    8686    public function push_order_to_ekart($order_id)
    8787    {
     88        $order = wc_get_order($order_id);
    8889        $token = $this->get_access_token();
    8990        if (! $token) {
     91            $order->add_order_note('❌ Ekart: Failed to get access token.');
    9092            return null;
    9193        }
     
    9395        $order_payload = $this->get_ekart_order_object($order_id);
    9496        if (! $order_payload) {
     97            $order->add_order_note('❌ Ekart: order payload error.');
    9598            return null;
    9699        }
     
    112115        if (is_wp_error($response)) {
    113116            error_log("Ekart push_order WP error: " . $response->get_error_message());
     117            $order->add_order_note('❌ Ekart API request failed: ' . $error_msg);
    114118            return null;
    115119        }
     
    118122
    119123        $resp = json_decode($body_raw, true);
    120         if (! is_array($resp)) {
     124
     125        if($resp['description']){
     126            $order->add_order_note('❌ Ekart response JSON parse error.'. $resp['description']);
    121127            error_log("Ekart push_order JSON parse error: " . json_last_error_msg());
    122128            return null;
     
    269275            "consignee_name" => $consignee_name,
    270276            "products_desc" => implode(', ', $products_desc),
    271             "payment_mode" => $order->get_payment_method()=="cod"?"COD":"PREPAID",
     277            "payment_mode" => $order->get_payment_method()=="cod"?"COD":"Prepaid",
    272278            "total_amount" => (int)$order->get_total(),
    273279            "tax_value" => floatval($order->get_total_tax()),
     
    371377        $resp=null;
    372378        if(!empty($tracking_id = Bt_Sync_Shipment_Tracking::bt_sst_get_order_meta($order_id, "_bt_ekart_tracking_id"))){
     379            $resp= $this->get_order_tracking_by_tracking_id($tracking_id);
     380        }
     381        if($resp == null){
     382            $tracking_id = Bt_Sync_Shipment_Tracking::bt_sst_get_order_meta($order_id, "_bt_shipping_awb");
    373383            $resp= $this->get_order_tracking_by_tracking_id($tracking_id);
    374384        }
  • shipment-tracker-for-woocommerce/trunk/public/class-bt-sync-shipment-tracking-public.php

    r3371805 r3460036  
    5050    private $fship;
    5151    private $ekart;
     52    private $proship;
    5253
    5354    /**
     
    5859     * @param      string    $version    The version of this plugin.
    5960     */
    60     public function __construct($plugin_name, $version, $shiprocket, $shipmozo, $nimbuspost_new, $licenser, $delhivery, $fship, $ekart)
     61    public function __construct($plugin_name, $version, $shiprocket, $shipmozo, $nimbuspost_new, $licenser, $delhivery, $fship, $ekart, $proship)
    6162    {
    6263
     
    7071        $this->fship = $fship;
    7172        $this->ekart = $ekart;
     73        $this->proship = $proship;
    7274    }
    7375
     
    12031205                    $city = $city_data['city'];
    12041206                }
     1207            }else if ($pickup_data_provider == 'proship') {
     1208                $express_tat = null;
     1209                if (false === ($bt_sst_cached_delivery_estimates_proship = get_transient('bt_sst_cached_delivery_estimates_proship'))) {
     1210                    $bt_sst_cached_delivery_estimates_proship = array();
     1211                }
     1212
     1213                if ($delivery_country == "IN") {
     1214                    $pickup_pin = carbon_get_theme_option(
     1215                        "bt_sst_proship_from_pincode"
     1216                    );
     1217                    $default_mode = carbon_get_theme_option('bt_sst_proship_default_mode');
     1218                    $payment_type = 'PREPAID';
     1219                    $length = 10;
     1220                    $breadth = 10;
     1221                    $height = 10;
     1222                    $weight = '1';
     1223                    $dispatch_mode = "SURFACE";
     1224                    $cod_amount = 100;
     1225                    $order_type = 'FORWARD';
     1226                    if (!empty($pickup_pin)) {
     1227                        $cached_pincode_key = $pickup_pin . "_" . $delivery_pincode . "_3";
     1228                        if (isset($bt_sst_cached_delivery_estimates_proship[$cached_pincode_key])) {
     1229                            $push_resp = $bt_sst_cached_delivery_estimates_proship[$cached_pincode_key][0];
     1230                            $express_tat = $bt_sst_cached_delivery_estimates_proship[$cached_pincode_key][1];
     1231                            $response["message"] = "Data fetched from cache.";
     1232                        } else {
     1233                            $push_resp = $this->proship->get_proship_pricing(
     1234                                            $pickup_pin,
     1235                                            $delivery_pincode,
     1236                                            $payment_type,
     1237                                            $length,
     1238                                            $breadth,
     1239                                            $height,
     1240                                            $weight,
     1241                                            "SURFACE",
     1242                                            $cod_amount,
     1243                                            $order_type
     1244                                        );
     1245
     1246                            if (!isset($push_resp["error"]) && $push_resp != null && !empty($push_resp) && sizeof($push_resp) > 0) {
     1247                                $bt_sst_cached_delivery_estimates_proship[$cached_pincode_key] = [$push_resp, $express_tat];
     1248                                set_transient('bt_sst_cached_delivery_estimates_proship', $bt_sst_cached_delivery_estimates_proship, 1 * HOUR_IN_SECONDS);
     1249                                $response["message"] = "Data fetched from Delhivery.";
     1250                            } else {
     1251                                $push_resp = [];
     1252                            }
     1253                        }
     1254                    }
     1255
     1256                }
     1257
     1258                $filtered_arr = $push_resp;
     1259                $minMinTat = min(array_column($filtered_arr, 'providerMinTatDays'));
     1260                $fastest = array_filter($filtered_arr, function ($item) use ($minMinTat) {
     1261                    return $item['providerMinTatDays'] == $minMinTat;
     1262                });
     1263                $minMaxTat = min(array_column($fastest, 'providerMaxTatDays'));
     1264                $fastest = array_filter($fastest, function ($item) use ($minMaxTat) {
     1265                    return $item['providerMaxTatDays'] == $minMaxTat;
     1266                });
     1267
     1268                usort($fastest, function ($a, $b) {
     1269                    return $a['priceAfterTax'] <=> $b['priceAfterTax'];
     1270                });
     1271
     1272                $filtered_arr = $fastest[0];
     1273
     1274                if (is_array($filtered_arr) && sizeof($filtered_arr) > 0) {
     1275                    $check_error_for_hide_show_ponbox["data"] = true;
     1276                    $max_date_charges = $filtered_arr['priceAfterTax'];
     1277                    $min_date_charges = $filtered_arr['priceAfterTax'];
     1278
     1279                    $max_courier_name = 'proship';
     1280                    $min_courier_name = 'proship';
     1281
     1282                    $min_days = 2;
     1283                    $max_days = 5;
     1284                    $express_tat = $filtered_arr['providerMaxTatDays'];
     1285                    if ($express_tat != null) {
     1286                        $min_days = $express_tat;
     1287                        $max_days = $express_tat;
     1288                    }
     1289
     1290                    if (!$min_days) {
     1291                        $min_days = 1;
     1292                    }
     1293                    if (!$max_days) {
     1294                        $max_days = 1;
     1295                    }
     1296                    $current_date = new DateTime();
     1297                    $min_date = $current_date->add(new DateInterval("P{$min_days}D"))->format("l, d M, Y");
     1298                    $max_date = $current_date->add(new DateInterval("P{$max_days}D"))->format("l, d M, Y");
     1299
     1300                    $processing_days = $this->bt_get_processing_days($product_id, $variation_id);
     1301                    if (!$processing_days) {
     1302                        $processing_days = carbon_get_theme_option("bt_sst_shiprocket_processing_days");
     1303                    }
     1304
     1305                    if (!$is_premium) {
     1306                        $processing_days = 0; //if not premium, then no processing days.
     1307                    }
     1308                    if ($processing_days && $processing_days > 0) {
     1309                        $min_date = $this->addDayswithdate($min_date, $processing_days);
     1310                        $max_date = $this->addDayswithdate($max_date, $processing_days);
     1311                    } else {
     1312                        $min_date = $this->addDayswithdate($min_date, 0);
     1313                        $max_date = $this->addDayswithdate($max_date, 0);
     1314                    }
     1315                    $check_error_for_hide_show_ponbox["data"] = true;
     1316                } else {
     1317                    $bt_sst_message_text_template = "Delivery not available. Try a different pincode or contact support.";
     1318                }
     1319                $city = $delivery_pincode;
     1320                // $city_data = $this->delhivery->get_locality($delivery_pincode);
     1321                // if (isset($city_data['city'])) {
     1322                //  $city = $city_data['city'];
     1323                // }
    12051324            }
    12061325
     
    25842703            }
    25852704
    2586         }else if ($bt_sst_courier_rate_provider == 'ekart') {
     2705        } else if ($bt_sst_courier_rate_provider == 'ekart') {
    25872706            $cart_totals = $this->get_cart_weight_and_dimentions();
    25882707            $weight_in_kg = $cart_totals['total_weight_kg'];
     
    27452864
    27462865
     2866                }
     2867            }
     2868
     2869        } else if ($bt_sst_courier_rate_provider == 'proship') {
     2870
     2871            $cart_totals = $this->get_cart_weight_and_dimentions();
     2872
     2873            $weight_in_kg = $cart_totals['total_weight_kg'];
     2874            $length_in_cms = $cart_totals['total_length_cm'];
     2875            $breadth_in_cms = $cart_totals['total_width_cm'];
     2876            $height_in_cms = $cart_totals['total_height_cm'];
     2877            $declared_value = $cart_totals['declared_value'];
     2878
     2879            if ($weight_in_kg < 0.1) {
     2880                $weight_in_kg = 0.1;
     2881            }
     2882            if ($length_in_cms < 1) {
     2883                $length_in_cms = 10;
     2884            }
     2885            if ($breadth_in_cms < 1) {
     2886                $breadth_in_cms = 10;
     2887            }
     2888            if ($height_in_cms < 1) {
     2889                $height_in_cms = 10;
     2890            }
     2891
     2892            if ($weight_in_kg > 0) {
     2893
     2894                if (false === ($bt_sst_cached_delivery_estimates_proship = get_transient('bt_sst_cached_delivery_estimates_proship'))) {
     2895                    $bt_sst_cached_delivery_estimates_proship = array();
     2896                }
     2897                if ($delivery_country == "IN") {
     2898                    $pickup_pincode = carbon_get_theme_option('bt_sst_proship_from_pincode');
     2899
     2900                    if (!empty($pickup_pincode)) {
     2901                        $pm = $cod == 1 ? "COD" : "PREPAID";
     2902                        $cached_pincode_key = $pickup_pincode . "_" . $delivery_pincode . "_" . $weight_in_kg . '_' . $pm;
     2903                        if (isset($bt_sst_cached_delivery_estimates_proship[$cached_pincode_key])) {
     2904                            $push_resp = $bt_sst_cached_delivery_estimates_proship[$cached_pincode_key];
     2905                        } else {
     2906                            $cod_amount = $cod == 1 ? $declared_value : 0;
     2907                            $push_resp = $this->proship->get_proship_pricing(
     2908                                            $pickup_pincode,
     2909                                            $delivery_pincode,
     2910                                            $pm,
     2911                                            $length_in_cms,
     2912                                            $breadth_in_cms,
     2913                                            $height_in_cms,
     2914                                            $weight_in_kg,
     2915                                            "SURFACE",
     2916                                            $cod_amount,
     2917                                            "FORWARD",
     2918                                        );
     2919                            if ($push_resp != null && !empty($push_resp)) {
     2920                                $bt_sst_cached_delivery_estimates_proship[$cached_pincode_key] = $push_resp;
     2921                                set_transient('bt_sst_cached_delivery_estimates_proship', $bt_sst_cached_delivery_estimates_proship, 1 * HOUR_IN_SECONDS);
     2922                            } else {
     2923                                $push_resp = [];
     2924                            }
     2925                        }
     2926                        $filtered_arr = $push_resp;
     2927                    }
     2928
     2929
     2930                }
     2931            }
     2932
     2933            $free_shipping_rates = [];
     2934            foreach ($rates as $key => $r) {
     2935                if (strpos($key, 'free_shipping') !== false) {
     2936                    $free_shipping_rates[$key] = $r;
     2937                }
     2938            }
     2939            $rates = $free_shipping_rates;
     2940
     2941            if ($filtered_arr == null || sizeof($filtered_arr) == 0) {
     2942
     2943                if ($delivery_country == "IN") {
     2944                    $cost = carbon_get_theme_option("bt_sst_proship_fall_back_rate");
     2945                    if ($cost && $cost > 0) {
     2946                        $WC_Shipping_Rate = new WC_Shipping_Rate();
     2947                        $id = 'flat_rate:proship:fallback';
     2948                        $WC_Shipping_Rate->set_id($id);
     2949                        $WC_Shipping_Rate->set_label('Flat rate');
     2950                        $WC_Shipping_Rate->set_method_id($id);
     2951
     2952                        if ($weight_in_kg > 0.5) {
     2953                            $t_weight = $weight_in_kg / 0.5;
     2954                            $t_weight = ceil($t_weight);
     2955                            $cost = round($t_weight * $cost);
     2956                        }
     2957
     2958                        $WC_Shipping_Rate->set_cost($cost);
     2959                        $WC_Shipping_Rate->set_instance_id($id);
     2960                        $bt_sst_shipping_duration_days = 4;
     2961                        $WC_Shipping_Rate->add_meta_data('bt_sst_shipping_duration_days', $bt_sst_shipping_duration_days);
     2962
     2963                        $rates[$id] = $WC_Shipping_Rate;
     2964                    }
     2965                } else {
     2966                    //to handle international fallback rate
     2967                }
     2968            } else {
     2969
     2970                if ($delivery_country == "IN") {
     2971                    usort($filtered_arr, function ($a, $b) {
     2972                        return ($a['priceAfterTax'] - ($b['priceAfterTax']));
     2973                    });
     2974                    $i = 0;
     2975                    foreach ($filtered_arr as $rb) {
     2976                        $lable = "Proship " . ucfirst($rb['provider']['parent']);
     2977                        $bt_sst_shipping_duration_days = null;
     2978                        $bt_sst_shipping_edd = null;
     2979                        if (isset($rb['providerMaxTatDays']) && $rb['providerMaxTatDays'] != null) {
     2980                            $bt_sst_shipping_duration_days = $rb['providerMaxTatDays'];
     2981                            $bt_sst_shipping_edd = new DateTime("+" . $bt_sst_shipping_duration_days . " days");
     2982                        }
     2983                        $id = 'flat_rate:delhivery:' . $rb['provider']['parent'];
     2984                        $method_id = 'flat_rate';
     2985                        $markup_cost = carbon_get_theme_option(
     2986                            "bt_sst_markup_charges"
     2987                        );
     2988                        if (!$markup_cost) {
     2989                            $markup_cost = 0;
     2990                        }
     2991                        if (($rb['priceAfterTax'] + $markup_cost) < 0) {
     2992                            $markup_cost = 0;
     2993                        }
     2994
     2995                        $delivery_charge = 0;
     2996                        if ($cod == 1) {
     2997                            $two_percent = $rb['total_amopriceAfterTaxunt'] * (2 / 100);
     2998                            if ($two_percent > 40) {
     2999                                $delivery_charge = $two_percent;
     3000                            } else {
     3001                                $delivery_charge = 40;
     3002                            }
     3003                        }
     3004                        $cost = round($rb['priceAfterTax'] + $markup_cost + $delivery_charge, 2);
     3005
     3006
     3007                        $texes = [];
     3008                        $delivery_date = '';
     3009                        $processing_days = $this->bt_get_processing_days();
     3010                        if (!$processing_days) {
     3011                            $processing_days = carbon_get_theme_option("bt_sst_shipment_processing_days");
     3012                        }
     3013                        if (!$processing_days || $processing_days < 0) {
     3014                            $processing_days = 0;
     3015                        }
     3016                        $delivery_date = $this->addDayswithdate($bt_sst_shipping_edd->format('Y-m-d H:i:s'), $processing_days);
     3017                       
     3018                        $show_delivery_date = carbon_get_theme_option("bt_sst_show_delivery_date");
     3019                        if ($show_delivery_date == 1) {
     3020                            $lable .= " (Edd: " . $delivery_date . ")";
     3021                        }
     3022
     3023                        $WC_Shipping_Rate = new WC_Shipping_Rate();
     3024
     3025                        $WC_Shipping_Rate->add_meta_data("edd", $delivery_date);
     3026                        $WC_Shipping_Rate->set_id($id);
     3027                        $WC_Shipping_Rate->set_label($lable);
     3028                        $WC_Shipping_Rate->set_method_id($method_id);
     3029                        $WC_Shipping_Rate->set_cost($cost);
     3030                        $WC_Shipping_Rate->set_instance_id($id);
     3031                        $WC_Shipping_Rate->set_taxes($texes);
     3032                        $WC_Shipping_Rate->add_meta_data('bt_sst_courier_company_name', $lable);
     3033                        $WC_Shipping_Rate->add_meta_data('bt_sst_shipment_provider', 'delhivery');
     3034                        $WC_Shipping_Rate->add_meta_data('bt_sst_shipping_duration_days', $bt_sst_shipping_duration_days);
     3035                        $WC_Shipping_Rate->add_meta_data('bt_sst_processing_days', $processing_days);
     3036                        $rates[$id] = $WC_Shipping_Rate;
     3037                    }
    27473038                }
    27483039            }
  • shipment-tracker-for-woocommerce/trunk/public/partials/bt_shipping_tracking_form_2.php

    r3338305 r3460036  
    7676            $currentPin = "";
    7777            $currentCountry = "";
     78            $delivery_date_sms = "";
     79            $delivery_date_sms_date = $the_order->get_meta('_bt_shipment_tracking')->delivery_date;
     80            if($delivery_date_sms_date){
     81                $delivery_date_sms = DateTime::createFromFormat('Y-m-d H:i:s', $delivery_date_sms_date) ?: DateTime::createFromFormat('Y-m-d', $delivery_date_sms_date);
     82            }
     83
    7884
    7985            $delivery_status = "";
     
    143149
    144150               
    145 
    146                 if(stripos($shipment_status,'delivered')!==false && stripos($shipment_status,'rto')===false){
     151                if(strtolower($shipment_status) == 'delivered' && stripos($shipment_status,'rto')===false){
    147152                    $current_step = 4;
    148153                } else if(stripos($shipment_status,'out')!==false && stripos($shipment_status,'rto')===false && stripos($shipment_status,'pick')===false){
     
    162167                } else{
    163168                    $shipped_string = bt_format_shipment_status($shipment_status);
    164                     $shipped_message = apply_filters( 'bt_sst_shipping_status_message', "Your order has been " . $shipped_string, $shipment_status );
     169                    if(strtolower($shipment_status) == 'undelivered'){
     170                        $shipped_message = apply_filters( 'bt_sst_shipping_status_message', "", $shipment_status );
     171                    }else{
     172                        $shipped_message = apply_filters( 'bt_sst_shipping_status_message', "Your order has been " . $shipped_string, $shipment_status );
     173                    }
    165174                }
    166175               
     
    272281                                                                        <span class="snipcss0-17-50-51 obscure-Wb9zbk739">
    273282                                                                        <?php
    274                                                                                 if ($order_status == "cancelled" || $shipped_string == "canceled" ||  $order_status == "refunded" || $order_status == "failed") {
     283                                                                                if (strtolower($shipment_status) == "undelivered" || $order_status == "cancelled" || $shipped_string == "canceled" ||  $order_status == "refunded" || $order_status == "failed") {
    275284                                                                                    echo '<span class="bt_st_order_canceled_icone">⚠</span>';
    276285                                                                                } else {
     
    330339                                                                    <p class="snipcss0-16-79-80 bt_sst">
    331340                                                                        <?php if($current_step>=4){
     341                                                                            if($delivery_date_sms){
     342                                                                                echo 'Yay! Your package was delivered on. ';
     343                                                                                echo $delivery_date_sms->format('j M Y');
     344                                                                            }else{
    332345                                                                                echo 'Yay! You should have already received your package.';
     346                                                                            }
    333347                                                                            }   
    334                                                                             echo esc_html($estimated_delivery_date);
    335348                                                                        ?>
    336349                                                                    </p>
  • shipment-tracker-for-woocommerce/trunk/public/partials/bt_shipping_tracking_page_template_second.php

    r3431532 r3460036  
    164164                } else{
    165165                    $shipped_string = bt_format_shipment_status($shipment_status);
    166                     $shipped_message = apply_filters( 'bt_sst_shipping_status_message', "Your order has been " . $shipped_string, $shipment_status );
    167 
     166                    if(strtolower($shipment_status) == 'undelivered'){
     167                        $shipped_message = apply_filters( 'bt_sst_shipping_status_message', "", $shipment_status );
     168                    }else{
     169                        $shipped_message = apply_filters( 'bt_sst_shipping_status_message', "Your order has been " . $shipped_string, $shipment_status );
     170                    }
    168171                    if(empty($shipped_string)){
    169172                        $shipped_string = "Shipping Soon";
     
    376379                                                            </div>
    377380                                                            <div class="uabb-timeline-marker">
    378                                                             <?php if ($order_status == "cancelled" || $order_status == "canceled" ||  $order_status == "refunded" || $order_status == "failed") {
     381                                                            <?php if (strtolower($shipment_status) == "undelivered" || $order_status == "cancelled" || $order_status == "canceled" ||  $order_status == "refunded" || $order_status == "failed") {
    379382                                                                    ?><i class="<?php if($current_step >1) { echo "bt_sst_selected_cancelled"; } ?>" aria-hidden="true"><img  style="display:inline" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAADDUlEQVR4nO1Zy2oUQRRtfC1c+lj5+ABXQs+9TlYDVW1w4XZQdOnadWICBg1ksjdhIn6CqAsTQQX/QdEPMLoyiWiqZuhxHiW3cGZ0ppOu6q7uHmEuFAx00XNO1X2ce9vzpja1qaU2Va0ebXKYkQwXJMNnksMnyeG74PiLFv2WHD/qZwwXGgGW1ZJ3xCvamrOlC4LjquDwVXJUNktw+CIY1hoVPJ878P1rl88KBo8Fw5Yt8DEiDFuCY32/4p/JBbwI4JZksJcW+NhiuCvYlZuZAVe+f1xwfOIcOB9zrQ36L7fgr/snBcdXWYOXQxJb9J8uTz438HLoUm9V9dKJ1ATycBt54E1gPSV4uF0UeDkgUbqRCPxPDqclx52iCUgGe4lSLOX5wsHzQTysW4Gn6mhVpIKyat69YwxI7w3K5m7EsNUM/Ivmp89x1QZ8+/WmUt2uCmtLsfvDh/eU6nRU+90bJWdnbEjUjMCTyCKdYgW+bzEk+uD71rYgQXqLRGMsAa0qLVzhb0DaOh0VLi+Og19ejNzbtHC9BvMxloCWxBYBFj6YHwc2chOjJz/Ys3LfLpgDmDfx/+dWL40h4Qw8pwVP42+AGg/rFx9AotfVYN2AR6oJHwxcKLlUjiThCjzXayfehVI2KZrE6Knr2+ilBa8EwzB7AuTzkQTM6oRMSyCVC0UFbERgZ+pCMmkQR4Hv9aKDOCkJZhDEidLoIanSpE5Ip2nUtpAZ5HlnJBjMxRKgodPESgleAjMxx3A7sZg7JFWO3kSbxNxVM1ktGH42nuaRdE0kpw3yfJ+EDXipCcCKEfgJbWjCBiufMyagb4Fj3SrAMl3wyLO1H7PlU5PR1ONu4rkpzSqLJiAYVhOBH5DgsFGg66x5aY36UMHhRf4nD5uqUjmWmsBwuAtbObrNS2fD3ZEhbw6ZCdacnXyU0awyk+zE8FvqgLWamzJcpwLjwF1CyvOUtr28jaojyQ5j7fQv8G2SB9YVNgsjkUVDJ5rbkGanxoM6O/0BjySJ7vLg/Z9nc6QqJ+Iz69Sm5v3/9htwCyTCs1agAgAAAABJRU5ErkJggg=="></i>
    380383                                                                <?php } else {?>
  • shipment-tracker-for-woocommerce/trunk/vendor/composer/installed.json

    r3446887 r3460036  
    33        {
    44            "name": "doctrine/deprecations",
    5             "version": "1.1.5",
    6             "version_normalized": "1.1.5.0",
     5            "version": "1.1.6",
     6            "version_normalized": "1.1.6.0",
    77            "source": {
    88                "type": "git",
    99                "url": "https://github.com/doctrine/deprecations.git",
    10                 "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38"
    11             },
    12             "dist": {
    13                 "type": "zip",
    14                 "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
    15                 "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
     10                "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca"
     11            },
     12            "dist": {
     13                "type": "zip",
     14                "url": "https://api.github.com/repos/doctrine/deprecations/zipball/d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca",
     15                "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca",
    1616                "shasum": ""
    1717            },
     
    2020            },
    2121            "conflict": {
    22                 "phpunit/phpunit": "<=7.5 || >=13"
     22                "phpunit/phpunit": "<=7.5 || >=14"
    2323            },
    2424            "require-dev": {
    25                 "doctrine/coding-standard": "^9 || ^12 || ^13",
    26                 "phpstan/phpstan": "1.4.10 || 2.1.11",
     25                "doctrine/coding-standard": "^9 || ^12 || ^14",
     26                "phpstan/phpstan": "1.4.10 || 2.1.30",
    2727                "phpstan/phpstan-phpunit": "^1.0 || ^2",
    28                 "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12",
     28                "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12.4 || ^13.0",
    2929                "psr/log": "^1 || ^2 || ^3"
    3030            },
     
    3232                "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
    3333            },
    34             "time": "2025-04-07T20:06:18+00:00",
     34            "time": "2026-02-07T07:09:04+00:00",
    3535            "type": "library",
    3636            "installation-source": "dist",
     
    4848            "support": {
    4949                "issues": "https://github.com/doctrine/deprecations/issues",
    50                 "source": "https://github.com/doctrine/deprecations/tree/1.1.5"
     50                "source": "https://github.com/doctrine/deprecations/tree/1.1.6"
    5151            },
    5252            "install-path": "../doctrine/deprecations"
     
    10301030        {
    10311031            "name": "symfony/finder",
    1032             "version": "v6.4.32",
    1033             "version_normalized": "6.4.32.0",
     1032            "version": "v6.4.33",
     1033            "version_normalized": "6.4.33.0",
    10341034            "source": {
    10351035                "type": "git",
    10361036                "url": "https://github.com/symfony/finder.git",
    1037                 "reference": "3ec24885c1d9ababbb9c8f63bb42fea3c8c9b6de"
    1038             },
    1039             "dist": {
    1040                 "type": "zip",
    1041                 "url": "https://api.github.com/repos/symfony/finder/zipball/3ec24885c1d9ababbb9c8f63bb42fea3c8c9b6de",
    1042                 "reference": "3ec24885c1d9ababbb9c8f63bb42fea3c8c9b6de",
     1037                "reference": "24965ca011dac87431729640feef8bcf7b5523e0"
     1038            },
     1039            "dist": {
     1040                "type": "zip",
     1041                "url": "https://api.github.com/repos/symfony/finder/zipball/24965ca011dac87431729640feef8bcf7b5523e0",
     1042                "reference": "24965ca011dac87431729640feef8bcf7b5523e0",
    10431043                "shasum": ""
    10441044            },
     
    10491049                "symfony/filesystem": "^6.0|^7.0"
    10501050            },
    1051             "time": "2026-01-10T14:09:00+00:00",
     1051            "time": "2026-01-26T13:03:48+00:00",
    10521052            "type": "library",
    10531053            "installation-source": "dist",
     
    10771077            "homepage": "https://symfony.com",
    10781078            "support": {
    1079                 "source": "https://github.com/symfony/finder/tree/v6.4.32"
     1079                "source": "https://github.com/symfony/finder/tree/v6.4.33"
    10801080            },
    10811081            "funding": [
  • shipment-tracker-for-woocommerce/trunk/vendor/composer/installed.php

    r3446887 r3460036  
    44        'pretty_version' => 'dev-1.5.1.1',
    55        'version' => '1.5.1.1-dev',
    6         'reference' => '470374fa160dc655abfe5711bd19227d2f5fcb02',
     6        'reference' => '9aa388de288d231781b688da9f05c29e517c5d3b',
    77        'type' => 'library',
    88        'install_path' => __DIR__ . '/../../',
     
    1414            'pretty_version' => 'dev-1.5.1.1',
    1515            'version' => '1.5.1.1-dev',
    16             'reference' => '470374fa160dc655abfe5711bd19227d2f5fcb02',
     16            'reference' => '9aa388de288d231781b688da9f05c29e517c5d3b',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../../',
     
    2121        ),
    2222        'doctrine/deprecations' => array(
    23             'pretty_version' => '1.1.5',
    24             'version' => '1.1.5.0',
    25             'reference' => '459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38',
     23            'pretty_version' => '1.1.6',
     24            'version' => '1.1.6.0',
     25            'reference' => 'd4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca',
    2626            'type' => 'library',
    2727            'install_path' => __DIR__ . '/../doctrine/deprecations',
     
    162162        ),
    163163        'symfony/finder' => array(
    164             'pretty_version' => 'v6.4.32',
    165             'version' => '6.4.32.0',
    166             'reference' => '3ec24885c1d9ababbb9c8f63bb42fea3c8c9b6de',
     164            'pretty_version' => 'v6.4.33',
     165            'version' => '6.4.33.0',
     166            'reference' => '24965ca011dac87431729640feef8bcf7b5523e0',
    167167            'type' => 'library',
    168168            'install_path' => __DIR__ . '/../symfony/finder',
  • shipment-tracker-for-woocommerce/trunk/vendor/doctrine/deprecations/README.md

    r3344861 r3460036  
    181181
    182182Note that you can still trigger Deprecations in your code, provided you use the
    183 `#[WithoutErrorHandler]` attribute to disable PHPUnit's error handler for tests
    184 that call it. Be wary that this will disable all error handling, meaning it
    185 will mask any warnings or errors that would otherwise be caught by PHPUnit.
     183`#[IgnoreDeprecations]` to ignore them for tests that call it.
    186184
    187185At the moment, it is not possible to disable deduplication with an environment
  • shipment-tracker-for-woocommerce/trunk/vendor/doctrine/deprecations/composer.json

    r3344861 r3460036  
    99    },
    1010    "require-dev": {
    11         "doctrine/coding-standard": "^9 || ^12 || ^13",
    12         "phpstan/phpstan": "1.4.10 || 2.1.11",
     11        "doctrine/coding-standard": "^9 || ^12 || ^14",
     12        "phpstan/phpstan": "1.4.10 || 2.1.30",
    1313        "phpstan/phpstan-phpunit": "^1.0 || ^2",
    14         "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12",
     14        "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12.4 || ^13.0",
    1515        "psr/log": "^1 || ^2 || ^3"
    1616    },
    1717    "conflict": {
    18         "phpunit/phpunit": "<=7.5 || >=13"
     18        "phpunit/phpunit": "<=7.5 || >=14"
    1919    },
    2020    "suggest": {
  • shipment-tracker-for-woocommerce/trunk/vendor/doctrine/deprecations/src/PHPUnit/VerifyDeprecations.php

    r3344861 r3460036  
    5858                $actualCount === $expectation,
    5959                sprintf(
    60                     "Expected deprecation with identifier '%s' was triggered by code executed in test, but expected not to.",
     60                    "Deprecation with identifier '%s' was triggered by code executed in test, but expected not to.",
    6161                    $identifier
    6262                )
  • shipment-tracker-for-woocommerce/trunk/vendor/symfony/finder/Finder.php

    r3446887 r3460036  
    682682
    683683            foreach ($this->iterators as $it) {
    684                 $iterator->append((static function () use ($it) {
     684                $iterator->append(new \IteratorIterator(new LazyIterator(static function () use ($it) {
    685685                    foreach ($it as $file) {
    686686                        if (!$file instanceof \SplFileInfo) {
     
    694694                        yield $key => $file;
    695695                    }
    696                 })());
     696                })));
    697697            }
    698698        }
Note: See TracChangeset for help on using the changeset viewer.