Plugin Directory

Changeset 3009769


Ignore:
Timestamp:
12/14/2023 02:50:47 AM (2 years ago)
Author:
shipdepot
Message:

Update version 1.2.6

Location:
ship-depot/trunk
Files:
5 added
14 edited

Legend:

Unmodified
Added
Removed
  • ship-depot/trunk/Ship_Depot_init.php

    r2999839 r3009769  
    55 * Plugin URI:        https://shipdepot.vn/
    66 * Description:       Ship Depot support shipping couriers in Vietnam like GHN, GHTK, AhaMove.
    7  * Version:           1.2.4
     7 * Version:           1.2.6
    88 * Author:            ShipDepot.vn
    99 * Text Domain:       ship-depot-translate
     
    3535
    3636if (!defined('SHIP_DEPOT_VERSION')) {
    37     define('SHIP_DEPOT_VERSION', '1.2.4');
     37    define('SHIP_DEPOT_VERSION', '1.2.6');
    3838}
    3939
  • ship-depot/trunk/assets/css/fe-checkout.css

    r2997508 r3009769  
    1010.hidden-field {
    1111  display: none;
    12 }
    13 
    14 #shipping_fee_content {
    15   text-align: left;
    16 }
    17 
    18 #shipping_fee_content p,
    19 span {
    20   font-family: Arial, Helvetica, sans-serif;
    21   margin: 0px;
    22   font-weight: normal;
    23 }
    24 
    25 #shipping_fee_content .fee {
    26   font-weight: bold;
    27 }
    28 
    29 #shipping_fee_content .text-description {
    30   color: var(--text-desc-color);
    31 }
    32 
    33 #shipping_fee_content .cod-failed-description {
    34   font-style: italic;
    35   font-weight: bold;
    36   color: var(--text-desc-color);
    3712}
    3813
     
    5429  align-items: flex-start;
    5530  width: 100%;
    56   flex-wrap: wrap;
    57 }
    58 
    59 #shipping_fee_content div.courier-fee img {
    60   width: var(--img-service-width);
    61   margin: 5px 0 10px 0;
     31  flex-direction: column;
    6232}
    6333
     
    6737}
    6838
    69 #shipping_fee_content .service-fee input[type="radio"] {
    70   margin: 5px 8px 0 16px;
    71 }
     39@media screen and (max-width: 599px) {
     40  /* .courier-fee {
     41    flex-direction: column;
     42  } */
    7243
    73 #shipping_fee_content #sd_note {
    74   margin: 15px 0px;
    75 }
    76 
    77 #shipping_fee_content #sd_note textarea {
    78   width: 100%;
    79   resize: none;
    80   height: 100px;
    81 }
    82 
    83 @media screen and (max-width: 599px) {
    84   .courier-fee {
    85     flex-direction: column;
    86   }
    87 
    88   .courier-fee img {
     44  /* .courier-fee img {
    8945    margin: 0 auto 16px auto;
    90   }
     46  } */
    9147
    9248  .service-fee {
     
    9450    padding-left: 0;
    9551  }
    96 
    97   .service-fee-description {
    98     width: 100%;
    99   }
    100 
    101   .service-fee-info .service-name {
    102     font-size: 16px;
    103     line-height: 25px;
    104   }
    105 
    10652}
  • ship-depot/trunk/helper/class-shipping-helper.php

    r2992887 r3009769  
    55    class Ship_Depot_Shipping_Helper
    66    {
    7         public static function cancel_shipping(WC_Order $order, $tracking_number, $cancel_reason)
     7        public static function update_cancel_shipping_info(WC_Order $order,string $tracking_number,string $cancel_reason, bool $update_status = true)
    88        {
    9             Ship_Depot_Logger::wrlog('[Ship_Depot_Shipping_Helper][cancel_shipping]');
    10             Ship_Depot_Logger::wrlog('[Ship_Depot_Shipping_Helper][cancel_shipping] order id: ' . $order->get_id());
    11             Ship_Depot_Logger::wrlog('[Ship_Depot_Shipping_Helper][cancel_shipping] tracking_number: ' . $tracking_number);
    12             Ship_Depot_Logger::wrlog('[Ship_Depot_Shipping_Helper][cancel_shipping] cancel_reason: ' . $cancel_reason);
     9            Ship_Depot_Logger::wrlog('[Ship_Depot_Shipping_Helper][update_cancel_shipping_info]');
     10            Ship_Depot_Logger::wrlog('[Ship_Depot_Shipping_Helper][update_cancel_shipping_info] order id: ' . $order->get_id());
     11            Ship_Depot_Logger::wrlog('[Ship_Depot_Shipping_Helper][update_cancel_shipping_info] tracking_number: ' . $tracking_number);
     12            Ship_Depot_Logger::wrlog('[Ship_Depot_Shipping_Helper][update_cancel_shipping_info] cancel_reason: ' . $cancel_reason);
    1313            Ship_Depot_Helper::UpdateOrderMetadata($order->get_id(), 'sd_ship_info', '');
    1414            $order->add_order_note($cancel_reason);
    15             $order->update_status('on-hold', __('Cập nhật trạng thái đơn hàng sang "Tạm giữ" sau khi hủy vận đơn.', 'ship-depot-translate'));
     15            if($update_status){
     16                $order->update_status('on-hold', __('Cập nhật trạng thái đơn hàng sang "Tạm giữ" sau khi hủy vận đơn.', 'ship-depot-translate'));
     17            }
    1618        }
    1719    }
  • ship-depot/trunk/includes/Address/frontend/class-custom-checkout-fields.php

    r2999836 r3009769  
    7070                $sd_country_field = array(
    7171                    'label'        => $fields[$item][$item . '_country']['label'],
    72                     'required'     =>$fields[$item][$item . '_country']['required'],
     72                    'required'     => $fields[$item][$item . '_country']['required'],
    7373                    'class'        => $fields[$item][$item . '_country']['class'],
    7474                    'autocomplete' => $fields[$item][$item . '_country']['autocomplete'],
  • ship-depot/trunk/includes/Order/class-order-shipping.php

    r2992887 r3009769  
    392392        }
    393393    }
     394
     395    public static function cancel_shipping(WC_Order $order, bool $update_status = true): Ship_Depot_ResultDTO
     396    {
     397        $shop_api_key = get_option('sd_api_key');
     398        $data_input = array();
     399        $ship_info = json_decode(Ship_Depot_Helper::GetOrderMetadata($order, 'sd_ship_info', true));
     400        Ship_Depot_Logger::wrlog('[cancel_shipping] ship_info: ' . print_r($ship_info, true));
     401        $data_input["tracking_number"] = isset($ship_info->TrackingNumber) ? $ship_info->TrackingNumber : '';
     402        //
     403        $selected_courier = Ship_Depot_Helper::GetOrderMetadata($order, 'sd_selected_courier', true);
     404        $data_input["selected_courier"] = $selected_courier;
     405        Ship_Depot_Logger::wrlog('[cancel_shipping] data_input: ' . print_r($data_input, true));
     406        if (Ship_Depot_Helper::check_null_or_empty($data_input["tracking_number"])) {
     407            return new Ship_Depot_ResultDTO(-1, __('Đơn hàng chưa có vận đơn.', 'ship-depot-translate'));
     408        }
     409
     410        if (Ship_Depot_Helper::check_null_or_empty($data_input["selected_courier"])) {
     411            return new Ship_Depot_ResultDTO(-1, __('Không xác định được đơn vị vận chuyển để hủy.', 'ship-depot-translate'));
     412        }
     413
     414        $url = SHIP_DEPOT_HOST_API . '/Shipping/CancelShipping';
     415        $rs = Ship_Depot_Helper::http_post($url, $data_input, array('ShopAPIKey' => $shop_api_key));
     416        Ship_Depot_Logger::wrlog('[cancel_shipping] result call API: ' . print_r($rs, true));
     417        if ($rs->Code > 0) {
     418            $result = $rs->Data;
     419            Ship_Depot_Logger::wrlog('[cancel_shipping] result: ' . print_r($result, true));
     420            if ($result) {
     421                //Remove shipping info
     422                $order_note = __('Hủy vận đơn ' . $ship_info->TrackingNumber . ' thành công.', 'ship-depot-translate');
     423                Ship_Depot_Shipping_Helper::update_cancel_shipping_info($order, $ship_info->TrackingNumber, $order_note, $update_status);
     424            } else {
     425                $order_note = __('Hủy vận đơn ' . $ship_info->TrackingNumber . ' thất bại. Lý do:', 'ship-depot-translate');
     426                $order_note = $order_note . ' ' . $rs->Msg;
     427                $order->add_order_note($order_note);
     428            }
     429        } else {
     430            $order_note = __('Hủy vận đơn ' . $ship_info->TrackingNumber . ' thất bại. Lý do:', 'ship-depot-translate');
     431            $order_note = $order_note . ' ' . $rs->Msg;
     432            $order->add_order_note($order_note);
     433        }
     434        return new Ship_Depot_ResultDTO(1, 'Success');
     435    }
    394436}
    395437
    396 add_action('woocommerce_order_status_changed', 'sd_create_shipping_auto', 10, 3);
    397 
    398 function sd_create_shipping_auto($order_id, $old_status, $new_status)
     438add_action('woocommerce_order_status_changed', 'sd_handle_woo_order_status_changed', 10, 3);
     439
     440function sd_handle_woo_order_status_changed($order_id, $old_status, $new_status)
    399441{
    400442    $order = wc_get_order($order_id);
    401     Ship_Depot_Logger::wrlog('[sd_create_shipping_auto] order_id: ' . print_r($order_id, true));
    402     Ship_Depot_Logger::wrlog('[sd_create_shipping_auto] _POST: ' . print_r($_POST, true));
    403     Ship_Depot_Logger::wrlog('[sd_create_shipping_auto] old_status: ' . print_r($old_status, true));
    404     Ship_Depot_Logger::wrlog('[sd_create_shipping_auto] new_status: ' . print_r($new_status, true));
    405     Ship_Depot_Logger::wrlog('[sd_create_shipping_auto] post_type: ' . sanitize_text_field($_POST['post_type']));
    406     Ship_Depot_Logger::wrlog('[sd_create_shipping_auto] action: ' . sanitize_text_field($_POST['action']));
    407     if (sanitize_key($_POST['post_type']) == 'shop_order' || sanitize_key($_POST['post_type']) == 'woocommerce_page_wc-orders' || sanitize_key($_POST['action']) == 'editpost' || sanitize_key($_POST['action']) == 'edit_order') {
    408         Ship_Depot_Logger::wrlog('[sd_create_shipping_auto] from edit order => Not create shipping auto ');
    409         return;
    410     }
     443    Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed] order_id: ' . print_r($order_id, true));
     444    Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed] _POST: ' . print_r($_POST, true));
     445    Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed] old_status: ' . print_r($old_status, true));
     446    Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed] new_status: ' . print_r($new_status, true));
     447    Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed] post_type: ' . sanitize_text_field($_POST['post_type']));
     448    Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed] action: ' . sanitize_text_field($_POST['action']));
     449
    411450    /*
    412451    pending
     
    422461    sd-delivery-failed
    423462    */
     463
     464    //Auto cancel shipping
     465    if ($new_status == 'cancelled') {
     466        Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed][auto_cancel_shipping] Begin');
     467        $str_ship_info = Ship_Depot_Helper::GetOrderMetadata($order_id, 'sd_ship_info', true);
     468        Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed][auto_cancel_shipping] str_ship_info: ' . print_r($str_ship_info, true));
     469        $order = wc_get_order($order_id);
     470        $result = Ship_Depot_Order_Shipping::cancel_shipping($order, false);
     471        if ($result->Code < 0) {
     472            Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed][auto_cancel_shipping] Cancel shipping of order ' . $order_id . ' error. Result: ' . print_r($result, true));
     473        }
     474        Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed][auto_cancel_shipping] End');
     475    }
     476
     477    //Auto create ship
     478    if (sanitize_key($_POST['post_type']) == 'shop_order' || sanitize_key($_POST['post_type']) == 'woocommerce_page_wc-orders' || sanitize_key($_POST['action']) == 'editpost' || sanitize_key($_POST['action']) == 'edit_order') {
     479        Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed] from edit order => Not create shipping auto ');
     480        return;
     481    }
     482
    424483    Ship_Depot_Default_Data::DefaultAutoCreateShip();
    425484    $auto_create_ship = get_option('sd_auto_create_shipping');
    426     Ship_Depot_Logger::wrlog('[sd_create_shipping_auto] auto_create_ship: ' . $auto_create_ship);
     485    Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed][auto_create_shipping] auto_create_ship: ' . $auto_create_ship);
    427486    if ($auto_create_ship == 'yes' || $auto_create_ship == '1') {
    428487        $stt_auto_create_ship = get_option('sd_status_auto_create_shipping');
    429         Ship_Depot_Logger::wrlog('[sd_create_shipping_auto] stt_auto_create_ship: ' . $stt_auto_create_ship);
    430         if ('wc-' . $new_status == $stt_auto_create_ship) {
     488        Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed][auto_create_shipping] stt_auto_create_ship: ' . $stt_auto_create_ship);
     489        if (str_contains($stt_auto_create_ship, ',')) {
     490            $statuses = explode(',', $stt_auto_create_ship);
     491        } else {
     492            $statuses = array($stt_auto_create_ship);
     493        }
     494        $new_status = 'wc-' . $new_status;
     495        Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed][auto_create_shipping] new_status: ' . $new_status);
     496        if (in_array($new_status, $statuses)) {
    431497            $str_ship_info = Ship_Depot_Helper::GetOrderMetadata($order_id, 'sd_ship_info', true);
    432498            // $not_create_ship = Ship_Depot_Helper::GetOrderMetadata($order_id, 'sd_not_create_ship', true);
     
    434500
    435501            // } else {
    436             //     Ship_Depot_Logger::wrlog('[sd_create_shipping_auto] not_create_ship = ' . $not_create_ship . ' => Not create shipping');
     502            //     Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed][auto_create_shipping] not_create_ship = ' . $not_create_ship . ' => Not create shipping');
    437503            // }
    438504
     
    441507                $ship_info = json_decode($str_ship_info);
    442508                if (Ship_Depot_Helper::check_null_or_empty($ship_info->TrackingNumber)) {
    443                     Ship_Depot_Logger::wrlog('[sd_create_shipping_auto] TrackingNumber empty => Create shipping');
     509                    Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed][auto_create_shipping] TrackingNumber empty => Create shipping');
    444510                    save_shipping_to_order_meta_data($order_id);
    445511                    $rs = create_ship($order_id, true);
     
    448514                    }
    449515                } else {
    450                     Ship_Depot_Logger::wrlog('[sd_create_shipping_auto] TrackingNumber existed: ' . $ship_info->TrackingNumber . ' => Not create shipping');
     516                    Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed][auto_create_shipping] TrackingNumber existed: ' . $ship_info->TrackingNumber . ' => Not create shipping');
    451517                }
    452518            } else {
    453                 Ship_Depot_Logger::wrlog('[sd_create_shipping_auto] str_ship_info = null => Create shipping');
     519                Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed][auto_create_shipping] str_ship_info = null => Create shipping');
    454520                save_shipping_to_order_meta_data($order_id);
    455521                $rs = create_ship($order_id, true);
     
    459525            }
    460526        } else {
    461             Ship_Depot_Logger::wrlog('[sd_create_shipping_auto] order_status # stt_auto_create_ship => Not create shipping');
     527            Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed][auto_create_shipping] order_status not existed stt_auto_create_ship => Not create shipping');
    462528        }
    463529    } else {
    464         Ship_Depot_Logger::wrlog('[sd_create_shipping_auto] auto_create_ship = false => Not create shipping ');
     530        Ship_Depot_Logger::wrlog('[sd_handle_woo_order_status_changed][auto_create_shipping] auto_create_ship = false => Not create shipping ');
    465531    }
    466532}
  • ship-depot/trunk/includes/Settings/class-ship-depot-settings-backend.php

    r2997508 r3009769  
    7171                'couriers' => __('Đơn vị vận chuyển', 'ship-depot-translate'),
    7272                'fee_modify' => __('Thay đổi phí vận chuyển', 'ship-depot-translate'),
     73                //Tạm đóng chức năng này
     74                // 'custom_css' => __('Thay đổi CSS', 'ship-depot-translate'),
    7375                'about' => __('Giới thiệu & Trợ giúp', 'ship-depot-translate')
    7476            );
     
    119121                            do_action('sd_fee_modify_section');
    120122                            break;
     123                            //Tạm đóng chức năng này
     124                            // case 'custom_css':
     125                            //     do_action('sd_custom_css_section');
     126                            break;
    121127                        case 'about':
    122128                            do_action('sd_about_section');
     
    153159                            $this->save_fee_modify();
    154160                            break;
     161                            //Tạm đóng chức năng này
     162                            // case 'custom_css':
     163                            //     $this->save_custom_css();
     164                            //     break;
    155165                    }
    156166                }
     
    170180                exit;
    171181            } else {
     182                Ship_Depot_Logger::wrlog('[save_general_settings] _POST: ' . print_r($_POST, true));
    172183                // process form data
    173184                //Check APIkey change
     
    194205                $this->save_checkbox('cb_show_shipping_fee_detail', 'sd_show_shipping_fee_detail');
    195206                $this->save_checkbox('cb_auto_create_shipping', 'sd_auto_create_shipping');
    196                 $this->save_radio_button('sd_status_auto_create_shipping');
     207
     208                // $this->save_radio_button('sd_status_auto_create_shipping');
     209                //Change sd_status_auto_create_shipping to checkbox => select many status
     210                if (isset($_POST['sd_status_auto_create_shipping'])) {
     211                    if (is_array($_POST['sd_status_auto_create_shipping'])) {
     212                        $statuses = '';
     213                        foreach ($_POST['sd_status_auto_create_shipping'] as $status) {
     214                            $statuses = $statuses . $status . ',';
     215                        }
     216
     217                        if (!Ship_Depot_Helper::check_null_or_empty($statuses)) {
     218                            $statuses = trim($statuses, ',');
     219                        }
     220                        Ship_Depot_Logger::wrlog('[save_general_settings] list statuses auto create shipping: ' . print_r($statuses, true));
     221                        update_option('sd_status_auto_create_shipping', $statuses);
     222                    } else {
     223                        $this->save_radio_button('sd_status_auto_create_shipping');
     224                    }
     225                }
    197226
    198227                delete_option('cb_set_status_for_delivery');
     
    208237                delete_option('sd_status_for_control');
    209238
    210                 Ship_Depot_Logger::wrlog('[save_general_settings] _POST: ' . print_r($_POST, true));
    211239                $list_statuses = [];
    212240                foreach ($_POST['shipdepot']['status_id'] as $id) {
     
    336364                                $district_code = sanitize_text_field($_POST[$courier_id]['ShipFromStation']['DistrictCode']);
    337365                                Ship_Depot_Logger::wrlog('[save_couriers][' . $courier_id . '] ShipFromStation district_code: ' . print_r($district_code, true));
    338                                 if($district_code == "-1"){
     366                                if ($district_code == "-1") {
    339367                                    $district = new Ship_Depot_District();
    340                                 }else{
     368                                } else {
    341369                                    $district = new Ship_Depot_District(Ship_Depot_Address_Helper::get_district_by_id($province_code, $district_code));
    342370                                }
    343                                
     371
    344372                                $courier->ShipFromStation->Province = $province;
    345373                                $courier->ShipFromStation->District = $district;
     
    521549        }
    522550
     551        public function save_custom_css()
     552        {
     553            if (is_null($_POST) || empty($_POST)) {
     554                return false;
     555            }
     556
     557            Ship_Depot_Logger::wrlog('==================================================================================================================');
     558            if (!isset($_POST['sd_custom_css_nonce']) || !wp_verify_nonce($_POST['sd_custom_css_nonce'], 'sd_custom_css')) {
     559                print 'Sorry, your nonce did not verify.';
     560                Ship_Depot_Logger::wrlog('[save_custom_css] Nonce did not verify');
     561                exit;
     562            } else {
     563                Ship_Depot_Logger::wrlog('[save_custom_css] _POST: ' . print_r($_POST, true));
     564                Ship_Depot_Logger::wrlog('[save_custom_css] sd_checkout_custom_css: ' . print_r($_POST['sd_checkout_custom_css'], true));
     565                Ship_Depot_Logger::wrlog('[save_custom_css] sd_restore_css: ' . print_r($_POST['sd_restore_css'], true));
     566                $file_update = SHIP_DEPOT_DIR_PATH . 'assets/css/fe-checkout-custom.css';
     567                if (isset($_POST['sd_restore_css']) && sanitize_text_field($_POST['sd_restore_css']) == 'true') {
     568                    //Restore data
     569                    $df_css = file_get_contents(SHIP_DEPOT_DIR_PATH . 'assets/css/fe-checkout-custom.default');
     570                    file_put_contents($file_update, $df_css);
     571                } else {
     572                    //Update new data
     573                    file_put_contents($file_update, str_replace('\"', '"', $_POST['sd_checkout_custom_css']));
     574                }
     575            }
     576        }
     577
    523578        public function save_option($id)
    524579        {
  • ship-depot/trunk/includes/Settings/class-ship-depot-settings-init.php

    r2922618 r3009769  
    1111        require_once SHIP_DEPOT_DIR_PATH . 'includes/Settings/class-ship-depot-general-settings.php';
    1212        require_once SHIP_DEPOT_DIR_PATH . 'includes/Settings/class-ship-depot-fee-modify.php';
     13        require_once SHIP_DEPOT_DIR_PATH . 'includes/Settings/class-ship-depot-custom-css.php';
    1314        require_once SHIP_DEPOT_DIR_PATH . 'includes/Settings/class-ship-depot-couriers.php';
    1415        require_once SHIP_DEPOT_DIR_PATH . 'includes/Settings/class-ship-depot-about.php';
  • ship-depot/trunk/includes/class-ship-depot-general.php

    r2999826 r3009769  
    8585        require_once SHIP_DEPOT_DIR_PATH . 'includes/Model/class-receiver.php';
    8686        require_once SHIP_DEPOT_DIR_PATH . 'includes/Model/class-shipping-status.php';
     87        require_once SHIP_DEPOT_DIR_PATH . 'includes/Model/resultDTO.php';
    8788        //
    8889        require_once SHIP_DEPOT_DIR_PATH . 'includes/Model/ShippingFee/class-courier-response.php';
     
    162163        wp_enqueue_style('sd-main-style', SHIP_DEPOT_DIR_URL . 'assets/css/main.css', array(), '1.0.0', 'all');
    163164        wp_enqueue_style('sd-front', SHIP_DEPOT_DIR_URL . 'assets/css/fe-checkout.css', array(), '1.0.0', 'all');
     165        wp_enqueue_style('sd-front-custom', SHIP_DEPOT_DIR_URL . 'assets/css/fe-checkout-custom.css', array(), '1.0.0', 'all');
    164166        wp_enqueue_style('sd-dialog-style', SHIP_DEPOT_DIR_URL . 'assets/css/dialog.css', array(), '1.0.0', 'all');
    165167        //is_product() || is_cart() || is_checkout() || is_account_page()
  • ship-depot/trunk/page/admin/orders/sd-order-detail.php

    r2992887 r3009769  
    127127    //
    128128    Ship_Depot_Logger::wrlog('[sd_woocommerce_new_shipping] order_id: ' . $order_id);
     129    Ship_Depot_Logger::wrlog('[sd_woocommerce_new_shipping] order status: ' . $order->get_status());
    129130    Ship_Depot_Logger::wrlog('[sd_woocommerce_new_shipping] _POST: ' . print_r($_POST, true));
    130131    Ship_Depot_Logger::wrlog('[sd_woocommerce_new_shipping] shipdepot data: ' . print_r($_POST['shipdepot'], true));
    131     $not_create_ship = false;
    132     if (isset($_POST['shipdepot']['notCreateShipping'])) {
    133         $not_create_ship = Ship_Depot_Helper::get_data_from_checkbox(sanitize_text_field($_POST['shipdepot']['notCreateShipping']));
    134     }
    135     Ship_Depot_Helper::UpdateOrderMetadataWOSave($order, 'sd_not_create_ship', json_encode($not_create_ship),);
    136     sd_submit_data_and_save_to_order_meta_data($order, false, $not_create_ship);
     132    if ($order->get_status() == 'cancelled') {
     133        Ship_Depot_Logger::wrlog('[sd_woocommerce_new_shipping] Cancel order => Not create shipping.');
     134    } else {
     135        $not_create_ship = false;
     136        if (isset($_POST['shipdepot']['notCreateShipping'])) {
     137            $not_create_ship = Ship_Depot_Helper::get_data_from_checkbox(sanitize_text_field($_POST['shipdepot']['notCreateShipping']));
     138        }
     139        Ship_Depot_Helper::UpdateOrderMetadataWOSave($order, 'sd_not_create_ship', json_encode($not_create_ship),);
     140        sd_submit_data_and_save_to_order_meta_data($order, false, $not_create_ship);
     141    }
    137142}
    138143
     
    416421{
    417422    Ship_Depot_Logger::wrlog('[metabox_order] $order: ' . json_encode($order));
    418     if (!$order) {
     423
     424    if (is_bool($order) && !$order) {
     425        $order = [];
    419426        Ship_Depot_Logger::wrlog('[metabox_order] $order metabox is null.');
    420         $array_side_box = ["woocommerce-shipment-dhl-label,woocommerce-order-actions,woocommerce-order-notes"];
     427        $array_side_box = ["woocommerce-order-actions,woocommerce-order-notes"];
    421428        $array_normal_box = ["woocommerce-order-data,sd_meta_boxes,woocommerce-order-items,postcustom,woocommerce-order-downloads"];
    422429        $array_advance_box = [];
     
    758765function cancel_shipping_init()
    759766{
    760     $shop_api_key = get_option('sd_api_key');
    761767    $order_id = (isset($_POST['orderID'])) ? sanitize_text_field($_POST['orderID']) : '';
    762768    $order = wc_get_order($order_id);
    763     $data_input = array();
    764     $ship_info = json_decode(Ship_Depot_Helper::GetOrderMetadata($order, 'sd_ship_info', true));
    765     Ship_Depot_Logger::wrlog('[cancel_shipping_init] ship_info: ' . print_r($ship_info, true));
    766     $data_input["tracking_number"] = isset($ship_info->TrackingNumber) ? $ship_info->TrackingNumber : '';
    767     //
    768     $selected_courier = Ship_Depot_Helper::GetOrderMetadata($order, 'sd_selected_courier', true);
    769     $data_input["selected_courier"] = $selected_courier;
    770     Ship_Depot_Logger::wrlog('[cancel_shipping_init] data_input: ' . print_r($data_input, true));
    771     if (Ship_Depot_Helper::check_null_or_empty($data_input["tracking_number"])) {
    772         wp_send_json_success(__('Đơn hàng chưa có vận đơn.', 'ship-depot-translate'));
     769    $result = Ship_Depot_Order_Shipping::cancel_shipping($order);
     770    if ($result->Code < 0) {
     771        wp_send_json_success($result->Message);
    773772        die();
    774     }
    775 
    776     if (Ship_Depot_Helper::check_null_or_empty($data_input["selected_courier"])) {
    777         wp_send_json_success(__('Không xác định được đơn vị vận chuyển để hủy.', 'ship-depot-translate'));
    778         die();
    779     }
    780 
    781     $url = SHIP_DEPOT_HOST_API . '/Shipping/CancelShipping';
    782     $rs = Ship_Depot_Helper::http_post($url, $data_input, array('ShopAPIKey' => $shop_api_key));
    783     Ship_Depot_Logger::wrlog('[cancel_shipping_init] result call API: ' . print_r($rs, true));
    784     if ($rs->Code > 0) {
    785         $result = $rs->Data;
    786         Ship_Depot_Logger::wrlog('[cancel_shipping_init] result: ' . print_r($result, true));
    787         if ($result) {
    788             //Remove shipping info
    789             $order_note = __('Hủy vận đơn ' . $ship_info->TrackingNumber . ' thành công.', 'ship-depot-translate');
    790             Ship_Depot_Shipping_Helper::cancel_shipping($order, $ship_info->TrackingNumber, $order_note);
    791         } else {
    792             $order_note = __('Hủy vận đơn ' . $ship_info->TrackingNumber . ' thất bại. Lý do:', 'ship-depot-translate');
    793             $order_note = $order_note . ' ' . $rs->Msg;
    794             $order->add_order_note($order_note);
    795         }
    796     } else {
    797         $order_note = __('Hủy vận đơn ' . $ship_info->TrackingNumber . ' thất bại. Lý do:', 'ship-depot-translate');
    798         $order_note = $order_note . ' ' . $rs->Msg;
    799         $order->add_order_note($order_note);
    800773    }
    801774    wp_send_json_success('success');
     
    956929        //
    957930        $str_rcv = Ship_Depot_Helper::GetOrderMetadata($order, 'sd_receiver', true);
    958         //Ship_Depot_Logger::wrlog('[sd_meta_boxes_content] $str_rcv bf: ' . $str_rcv);
     931        Ship_Depot_Logger::wrlog('[sd_meta_boxes_content] $str_rcv bf: ' . $str_rcv);
    959932        if (!Ship_Depot_Helper::check_null_or_empty($str_rcv)) {
    960933            $receiver_obj =  Ship_Depot_Helper::CleanJsonFromHTMLAndDecode($str_rcv);
  • ship-depot/trunk/page/admin/settings/sd-general-settings.php

    r2992887 r3009769  
    126126                $listStatus = wc_get_order_statuses();
    127127                $count = 0;
     128                $str_statuses = get_option('sd_status_auto_create_shipping');
     129                if (str_contains($str_statuses, ',')) {
     130                    $statuses = explode(',', $str_statuses);
     131                } else {
     132                    $statuses = array($str_statuses);
     133                }
    128134                foreach ($listStatus as $id => $stt) {
    129135                    if ($count % 3 == 0) {
    130136                        echo '<div class="col-xl-6 offset-xl-6 col-lg-3 offset-lg-9 d-none d-lg-block col-padding-0"></div>';
    131137                    }
     138                    $checkedAttr = checked(in_array($id, $statuses), true, false);
    132139                    echo '<div class="col-xl-2 col-lg-3 col-md-4 col-sm-6 col-12 col-padding-0">';
    133                     $checkedAttr = checked(get_option('sd_status_auto_create_shipping'), $id, false);
    134                     echo '<label for="' . esc_attr($id) . '" class="label-status"><input name="sd_status_auto_create_shipping" id="' . esc_attr($id) . '" type="radio" value="' . esc_attr($id) . '" ' . $checkedAttr . '  />' . esc_html($stt) . '</label>';
     140                    echo '<label for="' . esc_attr($id) . '" class="label-status"><input name="sd_status_auto_create_shipping[' . esc_attr($id) . ']" id="' . esc_attr($id) . '" type="checkbox" value="' . esc_attr($id) . '" ' . $checkedAttr . '  />' . esc_html($stt) . '</label>';
    135141                    echo '</div>';
    136142                    $count++;
  • ship-depot/trunk/page/frontend/sd-cart-page.php

    r2922618 r3009769  
    99        $needs_shipping = false;
    1010    }
     11
     12    // if (is_checkout()) {
     13    //     WC()->session->__unset('selected_shipping');
     14    //     $needs_shipping = false;
     15    // }
    1116    return $needs_shipping;
    1217}
  • ship-depot/trunk/page/frontend/sd-checkout-page.php

    r2992887 r3009769  
    2727//add_filter('woocommerce_cart_needs_payment', '__return_false');
    2828
     29
     30//Current hook: woocommerce_review_order_before_order_total => after list item
     31//New hook: woocommerce_review_order_before_submit => before place order
    2932add_action('woocommerce_review_order_before_order_total', 'sd_woocommerce_review_order_before_order_total');
    3033function sd_woocommerce_review_order_before_order_total()
     
    233236                                                if ($courier->CourierID == AHA_COURIER_CODE) {
    234237                                                ?>
    235                                                     <p class="description"><?php echo esc_html__('Thời gian di chuyển từ lúc lấy hàng:', 'ship-depot-translate') . ' ' . esc_html($serv->TimeExpected) ?></p>
     238                                                    <p class="text-description service-fee-description"><?php echo esc_html__('Thời gian di chuyển từ lúc lấy hàng:', 'ship-depot-translate') . ' ' . esc_html($serv->TimeExpected) ?></p>
    236239                                                <?php
    237240                                                } else {
    238241                                                ?>
    239                                                     <p class="description"><?php echo esc_html__('T.gian nhận hàng ước tính:', 'ship-depot-translate') . ' ' . esc_html($serv->TimeExpected) ?></p>
     242                                                    <p class="text-description service-fee-description"><?php echo esc_html__('T.gian nhận hàng ước tính:', 'ship-depot-translate') . ' ' . esc_html($serv->TimeExpected) ?></p>
    240243                                                <?php
    241244                                                }
  • ship-depot/trunk/readme.txt

    r2999836 r3009769  
    33Tags: shipping, couriers, ghn, ghtk, aha
    44Requires at least: 6.1.1
    5 Tested up to: 6.3.2
     5Tested up to: 6.4.2
    66Requires PHP: 7.4.3
    7 Stable tag: 1.2.4
     7Stable tag: 1.2.6
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    6565
    6666== Changelog ==
     67= 1.2.6 =
     68* Thêm chức năng tự động hủy vận đơn khi đơn hàng đổi sang trạng thái Hủy
     69* Cho phép chọn nhiều trạng thái tự động tạo vận đơn ở trang Cài đặt của Ship Depot
     70
    6771= 1.2.4 =
    6872* Đưa Hồ Chí Minh và Hà Nội lên đầu danh sách chọn Tỉnh/Thành ở trang Thanh toán.
  • ship-depot/trunk/rest-api/class-shipdepot-webhook.php

    r2997508 r3009769  
    274274                                    $order_note = $order_note . ' ' . $ship_param->CancelDescription;
    275275                                }
    276                                 Ship_Depot_Shipping_Helper::cancel_shipping($order, $ship_info->TrackingNumber, $order_note);
     276                                Ship_Depot_Shipping_Helper::update_cancel_shipping_info($order, $ship_info->TrackingNumber, $order_note);
    277277                            }
    278278                            //
     
    297297        }
    298298
    299         function sd_update_cancel_shipping($request)
     299        function sd_update_update_cancel_shipping_info($request)
    300300        {
    301301            $params = wp_parse_args($request->get_params(), '');
     
    327327                                $order_note = $order_note . ' ' . $ship_param->CancelDescription;
    328328                            }
    329                             Ship_Depot_Shipping_Helper::cancel_shipping($order, $ship_info->TrackingNumber, $order_note);
     329                            Ship_Depot_Shipping_Helper::update_cancel_shipping_info($order, $ship_info->TrackingNumber, $order_note);
    330330                            //
    331331                        }
Note: See TracChangeset for help on using the changeset viewer.