Plugin Directory

Changeset 3076527


Ignore:
Timestamp:
04/24/2024 02:28:30 PM (23 months ago)
Author:
saulmorales
Message:

tagging version 3.0.29

Location:
shipping-coordinadora-woocommerce
Files:
1 deleted
6 edited
13 copied

Legend:

Unmodified
Added
Removed
  • shipping-coordinadora-woocommerce/tags/3.0.29/includes/class-method-shipping-coordinadora-wc.php

    r2481096 r3076527  
    181181     * @param mixed $package Array containing the cart packages. To see more about these packages see the 'calculate_shipping' method in this file: woocommerce/includes/class-wc-cart.php.
    182182     */
    183     public function calculate_shipping( $package = array() )
     183    public function calculate_shipping( $package = array() ): void
    184184    {
    185185        $country = $package['destination']['country'];
    186186
    187         if($country !== 'CO')
    188             return apply_filters( 'woocommerce_shipping_' . $this->id . '_is_available', false, $package, $this );
     187        if($country !== 'CO') return;
    189188
    190189        $data = Shipping_Coordinadora_WC::calculate_cost($package);
    191190
    192         if (empty($data))
    193             return apply_filters( 'woocommerce_shipping_' . $this->id . '_is_available', false, $package, $this );
     191        if(!isset($data)) return;
    194192
    195193        $rate = array(
     
    200198        );
    201199
    202         return $this->add_rate( $rate );
     200        $this->add_rate( $rate );
    203201
    204202    }
  • shipping-coordinadora-woocommerce/tags/3.0.29/includes/class-shipping-coordinadora-wc-plugin.php

    r2503387 r3076527  
    137137    {
    138138        $wc_main_settings = get_option('woocommerce_shipping_coordinadora_wc_settings');
    139         $wc_main_settings['license_key'];
    140139
    141140        if(isset($wc_main_settings['license_key']) && !empty($wc_main_settings['license_key']))
     
    314313    }
    315314
    316     public function enqueue_scripts()
     315    public function enqueue_scripts(): void
    317316    {
    318317        if(is_view_order_page()){
  • shipping-coordinadora-woocommerce/tags/3.0.29/includes/class-shipping-coordinadora-wc.php

    r2554547 r3076527  
    204204            $message_expected_code_account = "Error, El código cuenta $instance->code_account para la ubl 1 y el id cliente $instance->id_client no existe";
    205205            if ($message_expected_code_account === $message){
    206                 $message .=" <strong>Verifique que se encuentre habilitado el acuerdo de pago que esta intentando usar.</strong>";
     206                $message .=" <strong>Asegúrese de que el acuerdo de pago que está intentando utilizar esté habilitado.</strong>";
    207207                shipping_coordinadora_wc_cswc_notices( $message );
    208208            }
     
    219219        try{
    220220            $instance = new self();
    221             $res = $instance->coordinadora->Cotizador_cotizar($params);
    222             return $res;
     221            return $instance->coordinadora->Cotizador_cotizar($params);
    223222        }catch (\Exception $exception){
    224223            shipping_coordinadora_wc_cswc()->log($exception->getMessage());
     
    230229    public static function calculate_cost($package)
    231230    {
    232         global $woocommerce;
    233231        $instance = new self();
    234232        $state_destination = $package['destination']['state'];
    235233        $city_destination  = $package['destination']['city'];
    236         $items = $woocommerce->cart->get_cart();
     234        $items = $package['contents'];
    237235        $count = 0;
    238236        $total_valorization = 0;
    239237        $height = 0;
    240         $length = 0;
    241         $weight = 0;
    242         $width = 0;
    243238        $quantityItems = count($items);
    244239        $cart_prods = [];
    245240
    246         foreach ( $items as $item => $values ) {
    247             $_product_id = $values['data']->get_id();
    248             $_product = wc_get_product( $_product_id );
    249 
    250             if ( $values['variation_id'] > 0 &&
    251                 in_array( $values['variation_id'], $_product->get_children() ) &&
    252                 wc_get_product( $values['variation_id'] )->get_weight() &&
    253                 wc_get_product( $values['variation_id'] )->get_length() &&
    254                 wc_get_product( $values['variation_id'] )->get_width() &&
    255                 wc_get_product( $values['variation_id'] )->get_height())
    256                 $_product = wc_get_product( $values['variation_id'] );
    257 
    258             if ( !$_product->get_weight() || !$_product->get_length()
    259                 || !$_product->get_width() || !$_product->get_height() )
     241        foreach ( $items as $item) {
     242            /**
     243             * @var  $product WC_Product
     244             */
     245            $product = $item['data'];
     246            $quantity = $item['quantity'];
     247
     248            if ($item['variation_id'] > 0 && in_array($item['variation_id'], $product->get_children()))
     249                $product = wc_get_product($item['variation_id']);
     250
     251            if (!is_numeric($product->get_weight()) || !is_numeric($product->get_length())
     252                || !is_numeric($product->get_width()) || !is_numeric($product->get_height()))
    260253                break;
    261254
    262             $custom_price_product = get_post_meta($_product_id, '_shipping_custom_price_product_smp', true);
    263             $total_valorization += $custom_price_product > 0 ? wc_format_decimal($custom_price_product, 0) : wc_format_decimal($_product->get_price(), 0);
    264 
    265             $quantity = $values['quantity'];
    266 
    267             $total_valorization = $total_valorization * $quantity;
    268 
    269             $height += $_product->get_height() * $quantity;
    270             $length = $_product->get_length() > $length ? $_product->get_length() : $length;
    271             $weight =+ $weight + ($_product->get_weight() * $quantity);
    272             $width =  $_product->get_width() > $width ? $_product->get_width() : $width;
     255            $custom_price_product = get_post_meta($product->get_id(), '_shipping_custom_price_product_smp', true);
     256            $price = $custom_price_product ?: $product->get_price();
     257            $total_valorization += $price * $quantity;
     258
     259            $height += $product->get_height() * $quantity;
     260            $length = $product->get_length();
     261            $weight =+ floatval( $product->get_weight() ) * floatval( $quantity );
     262            $width =  $product->get_width();
    273263
    274264            $count++;
     
    286276
    287277                $height = 0;
    288                 $length = 0;
    289                 $weight = 0;
    290                 $width = 0;
    291278            }
    292279        }
    293280
    294281        $result_destination = self::code_city($state_destination, $city_destination);
    295 
    296282        list($city_sender) = self::get_sender($items);
    297283
     
    302288        }
    303289
    304         if ( empty( $result_destination ) )
    305             return apply_filters( 'woocommerce_shipping_' . $instance->id . '_is_available', false, $package, $instance );
     290        if ( empty( $result_destination ) ) return null;
    306291
    307292        $params = array(
     
    326311            shipping_coordinadora_wc_cswc()->log($data);
    327312
    328         if ( !isset($data->flete_total) )
    329             return apply_filters( 'woocommerce_shipping_' . $instance->id . '_is_available', false, $package, $instance );
     313        if ( !isset($data->flete_total) ) return null;
    330314
    331315        $data->flete_total = ceil($data->flete_total);
     
    334318    }
    335319
    336     public static function generate_guide_dispath($order_id, $old_status, $new_status, WC_Order $order)
     320    public static function generate_guide_dispath($order_id, $old_status, $new_status, WC_Order $order): void
    337321    {
    338322
     
    377361            update_post_meta($order_id, 'codigo_remision_guide_coordinadora', $guide_number);
    378362            $order->add_order_note($note);
    379 
    380363        }
    381364    }
     
    592575        $query = "SELECT codigo FROM $table_name WHERE nombre_departamento='$state_name' AND nombre='$city'";
    593576
    594         $result = $wpdb->get_row( $query );
    595 
    596         return $result;
     577        return $wpdb->get_row( $query );
    597578
    598579    }
     
    741722            $city_sender = $instance->city_sender;
    742723            $phone_sender = $instance->phone_sender;
    743             $sender_name = $instance->sender_name ? $instance->sender_name : get_bloginfo('name');
     724            $sender_name = $instance->sender_name ?: get_bloginfo('name');
    744725        }
    745726        return array($city_sender, $phone_sender, $sender_name);
  • shipping-coordinadora-woocommerce/tags/3.0.29/lib/coordinadora-webservice-php/src/WebService.php

    r2465310 r3076527  
    88
    99namespace Coordinadora;
     10use SoapClient;
    1011
    1112class WebService
     
    2021    const URL_GUIDES = 'http://guias.coordinadora.com/ws/guias/1.6/server.php';
    2122
    22     private $_apikey;
    23 
    24     private $_password_dispatches;
    25 
    26     private $nit;
    27 
    28     private $id_client;
    29 
    30     private $user_guide;
    31 
    32     private $password_guide;
    33 
    34     private static $sandbox = false;
     23    private string $_apikey;
     24
     25    private string $_password_dispatches;
     26
     27    private string $nit;
     28
     29    private string $id_client;
     30
     31    private string $user_guide;
     32
     33    private string $password_guide;
     34
     35    private static bool $sandbox = false;
    3536
    3637    /**
     
    4546        if ($i !== 6)
    4647            throw new \Exception("Invalid arguments");
    47 
    4848
    4949        $this->_apikey = func_get_arg(0);
     
    5656    }
    5757
    58     public function sandbox_mode($status = false)
     58    public function sandbox_mode($status = false): static
    5959    {
    6060        if ($status){
     
    6464    }
    6565
    66     public static function get_url_tracking_dispatches()
     66    public static function get_url_tracking_dispatches(): string
    6767    {
    6868        if (self::$sandbox)
     
    7171    }
    7272
    73     public static function get_url_guides()
     73    public static function get_url_guides(): string
    7474    {
    7575        if (self::$sandbox)
     
    7878    }
    7979
    80     public static function url_soap($name_function)
    81     {
    82 
    83         $url_soap = self::isGuide($name_function) === false ? self::get_url_guides() : self::get_url_tracking_dispatches();
    84 
    85         return $url_soap;
    86     }
    87 
    88     public static function isGuide($name_function)
    89     {
    90         return strpos($name_function, 'Guias') === false;
    91     }
    92 
    93     protected function _access_connect_dispatches()
     80    public static function url_soap($name_function): string
     81    {
     82        return self::isGuide($name_function) === false ? self::get_url_guides() : self::get_url_tracking_dispatches();
     83    }
     84
     85    public static function isGuide($name_function): bool
     86    {
     87        return !str_contains($name_function, 'Guias');
     88    }
     89
     90    protected function _access_connect_dispatches(): array
    9491    {
    9592        return array(
     
    9996    }
    10097
    101     protected function _access_connect_guides()
     98    protected function _access_connect_guides(): array
    10299    {
    103100        return array(
    104101            'id_cliente' => $this->id_client,
    105102            'usuario' => $this->user_guide,
    106             'clave' => hash('sha256', $this->password_guide)
    107         );
    108     }
    109 
    110     /**
    111      * @return mixed
    112      * @throws \Exception
    113      */
    114     public static function Cotizador_departamentos()
     103            'clave' => $this->encrypt_password($this->password_guide)
     104        );
     105    }
     106
     107    /**
     108     * @return mixed
     109     * @throws \Exception
     110     */
     111    public static function Cotizador_departamentos(): mixed
    115112    {
    116113        return self::call_soap(__FUNCTION__);
    117 
    118     }
    119 
    120     /**
    121      * @return mixed
    122      * @throws \Exception
    123      */
    124     public static function Cotizador_ciudades()
     114    }
     115
     116    /**
     117     * @return mixed
     118     * @throws \Exception
     119     */
     120    public static function Cotizador_ciudades(): mixed
    125121    {
    126122        return self::call_soap(__FUNCTION__);
     
    133129     * @throws \Exception
    134130     */
    135     public function Cotizador_cotizar(array $params)
     131    public function Cotizador_cotizar($params): mixed
    136132    {
    137133        $body =  array(
     
    147143     * @throws \Exception
    148144     */
    149     public function Recaudos_consultar(array $params)
     145    public function Recaudos_consultar($params): mixed
    150146    {
    151147        $body = array(
     
    161157     * @throws \Exception
    162158     */
    163     public function Recogidas_programar(array $params)
     159    public function Recogidas_programar($params): mixed
    164160    {
    165161        $body = array(
     
    175171     * @throws \Exception
    176172     */
    177     public function Guias_generarGuia(array $params)
    178     {
    179         $body = (object)array_merge($params, $this->_access_connect_guides());
    180 
    181         return $this->call_soap(__FUNCTION__, $body);
    182     }
    183 
    184     /**
    185      * @param $params
    186      * @return mixed
    187      * @throws \Exception
    188      */
    189     public function Guias_editarGuia(array $params)
    190     {
    191         $body = (object)array_merge($params, $this->_access_connect_guides());
    192 
    193         return $this->call_soap(__FUNCTION__, $body);
    194     }
    195 
    196     /**
    197      * @param $params
    198      * @return mixed
    199      * @throws \Exception
    200      */
    201     public function Guias_generarDespacho(array $params)
    202     {
    203         $body = (object)array_merge($params, $this->_access_connect_guides());
    204 
    205         return $this->call_soap(__FUNCTION__, $body);
    206     }
    207 
    208     /**
    209      * @param $params
    210      * @return mixed
    211      * @throws \Exception
    212      */
    213     public function Guias_anularGuia(array $params)
    214     {
    215         $body = (object)array_merge($params, $this->_access_connect_guides());
    216 
    217         return $this->call_soap(__FUNCTION__, $body);
    218     }
    219 
    220     /**
    221      * @param $params
    222      * @return mixed
    223      * @throws \Exception
    224      */
    225     public function Guias_rastreoSimple(array $params)
    226     {
    227         $body = (object)array_merge($params, $this->_access_connect_guides());
    228 
     173    public function Guias_generarGuia($params): mixed
     174    {
     175        $body = (object)array_merge($params, $this->_access_connect_guides());
     176        return $this->call_soap(__FUNCTION__, $body);
     177    }
     178
     179    /**
     180     * @param $params
     181     * @return mixed
     182     * @throws \Exception
     183     */
     184    public function Guias_editarGuia($params): mixed
     185    {
     186        $body = (object)array_merge($params, $this->_access_connect_guides());
     187        return $this->call_soap(__FUNCTION__, $body);
     188    }
     189
     190    /**
     191     * @param $params
     192     * @return mixed
     193     * @throws \Exception
     194     */
     195    public function Guias_generarDespacho($params): mixed
     196    {
     197        $body = (object)array_merge($params, $this->_access_connect_guides());
     198        return $this->call_soap(__FUNCTION__, $body);
     199    }
     200
     201    /**
     202     * @param $params
     203     * @return mixed
     204     * @throws \Exception
     205     */
     206    public function Guias_anularGuia($params): mixed
     207    {
     208        $body = (object)array_merge($params, $this->_access_connect_guides());
     209        return $this->call_soap(__FUNCTION__, $body);
     210    }
     211
     212    /**
     213     * @param $params
     214     * @return mixed
     215     * @throws \Exception
     216     */
     217    public function Guias_rastreoSimple($params): mixed
     218    {
     219        $body = (object)array_merge($params, $this->_access_connect_guides());
    229220        return $this->call_soap(__FUNCTION__, $body);
    230221    }
     
    235226     * @throws \Exception
    236227     */
    237     public function Guias_rastreoExtendido(array $params)
    238     {
    239         $body = (object)array_merge($params, $this->_access_connect_guides());
    240 
    241         return $this->call_soap(__FUNCTION__, $body);
    242     }
    243 
    244     /**
    245      * @param array $params
    246      * @return mixed
    247      * @throws \Exception
    248      */
    249     public function Guias_imprimirRotulos(array $params)
    250     {
    251         $body = (object)array_merge($params, $this->_access_connect_guides());
    252 
    253         return $this->call_soap(__FUNCTION__, $body);
    254     }
    255 
    256     /**
    257      * @param $name_function
    258      * @param array $params
    259      * @return mixed
    260      * @throws \Exception
    261      */
    262     private  static function call_soap($name_function, $params = array('p' => array()))
    263     {
    264         if (self::isGuide($name_function) === false){
    265             $client = New \SoapClient( null, array("location"  => self::url_soap($name_function),
    266                 "uri"         => self::url_soap($name_function),
    267                 "use"         => SOAP_LITERAL,
    268                 "trace"       => true,
    269                 "exceptions"  => true,
    270                 "soap_version"=> SOAP_1_2,
    271                 "connection_timeout"=> 60,
    272                 "encoding"=> "utf-8"));
    273         }else{
    274             $client = New \SoapClient(self::url_soap($name_function), array(
    275                 "trace"       => true,
    276                 "soap_version"   => SOAP_1_2,
    277                 "connection_timeout"=> 60,
    278                 "encoding"=> "utf-8",
    279                 'stream_context' => stream_context_create(array(
    280                     'ssl' => array(
    281                         'verify_peer' => false,
    282                         'verify_peer_name' => false,
    283                         'allow_self_signed' => true
    284                     )
    285                 )),
    286                 'cache_wsdl' => WSDL_CACHE_NONE));
    287         }
    288 
     228    public function Guias_rastreoExtendido(array $params): mixed
     229    {
     230        $body = (object)array_merge($params, $this->_access_connect_guides());
     231        return $this->call_soap(__FUNCTION__, $body);
     232    }
     233
     234    /**
     235     * @param $params
     236     * @return mixed
     237     * @throws \Exception
     238     */
     239    public function Guias_imprimirRotulos($params): mixed
     240    {
     241        $body = (object)array_merge($params, $this->_access_connect_guides());
     242        return $this->call_soap(__FUNCTION__, $body);
     243    }
     244
     245    /**
     246     * @throws \Exception
     247     */
     248    private  static function call_soap($name_function, $params = array('p' => array())): mixed
     249    {
    289250        try{
     251            if (self::isGuide($name_function) === false){
     252                $client = New SoapClient( null, array("location"  => self::url_soap($name_function),
     253                    "uri"         => self::url_soap($name_function),
     254                    "use"         => SOAP_LITERAL,
     255                    "trace"       => true,
     256                    "exceptions"  => true,
     257                    "soap_version"=> SOAP_1_2,
     258                    "connection_timeout"=> 30,
     259                    "encoding"=> "utf-8"));
     260            }else{
     261                $client = New SoapClient(self::url_soap($name_function), array(
     262                    "trace"       => true,
     263                    "soap_version"   => SOAP_1_2,
     264                    "connection_timeout"=> 30,
     265                    "encoding"=> "utf-8",
     266                    'stream_context' => stream_context_create(array(
     267                        'ssl' => array(
     268                            'verify_peer' => false,
     269                            'verify_peer_name' => false,
     270                            'allow_self_signed' => true
     271                        )
     272                    )),
     273                    'cache_wsdl' => WSDL_CACHE_NONE));
     274            }
    290275            $data = $client->$name_function($params);
    291 
    292276            $name_function_result = $name_function . "Result";
    293 
    294             $res = isset($data->$name_function_result) ? $data->$name_function_result : $data;
    295             return $res;
     277            return $data->$name_function_result ?? $data;
    296278        }catch (\Exception $exception){
    297279            throw new  \Exception($exception->getMessage());
    298280        }
    299281    }
     282
     283    private function encrypt_password(string $password): string
     284    {
     285        return preg_match("/^([a-f0-9]{64})$/", $password) ? $password : hash('sha256', $password);
     286    }
    300287}
  • shipping-coordinadora-woocommerce/tags/3.0.29/readme.txt

    r2966741 r3076527  
    44Tags: commerce, e-commerce, commerce, WordPress ecommerce, store, sales, sell, shop, shopping, cart, checkout, configurable, Colombia, coordinadora
    55Requires at least:  6.0
    6 Tested up to: 6.3.1
    7 Requires PHP: 7.1.0
    8 Stable tag: 3.0.28
     6Tested up to: 6.5.2
     7Requires PHP: 8.1
     8Stable tag: 3.0.29
    99License: GNU General Public License v3.0
    1010License URI: http://www.gnu.org/licenses/gpl-3.0.html
     
    5151== Changelog ==
    5252
    53 = 1.0.0 =
    54 * Initial stable release
    55 = 1.0.1 =
    56 * Fixed when the shipment is enabled
    57 = 1.0.2 =
    58 * Update readme and add image screenshot-3.png
    59 = 1.0.3 =
    60 * Requiere enable Woocommerce plugin
    61 = 1.0.4 =
    62 * Fixed create database hook activation
    63 = 1.0.5 =
    64 * Fixed of name city shop
    65 = 1.0.6 =
    66 * Fixed name formatted name city shop
    67 = 1.0.7 =
    68 * Fixed save database
    69 = 1.0.8 =
    70 * Added new configurations
    71 = 1.0.9 =
    72 * Added day estimate
    73 = 1.0.10 =
    74 * Fixed code account
    75 = 1.0.11 =
    76 * Fixed space tag
    77 = 1.0.12 =
    78 * Fixed test guide
    79 = 1.0.13 =
    80 * Add require licence full version
    81 = 1.0.14 =
    82 * Added hidden passwords
    83 = 1.0.15 =
    84 * Fixed admin notices
    85 = 1.0.16 =
    86 * Updated readme version Woocommerce
    87 = 1.0.17 =
    88 * Fixed file sweetAlert
    89 = 1.0.18 =
    90 * Refactor require openssl
    91 = 1.0.19 =
    92 * Updated readme version wordpress
    93 = 1.0.20 =
    94 * Fixed enviroment production
    95 = 1.0.21 =
    96 * Added custom field value declaration
    97 = 1.0.22 =
    98 * Added div payment agreement
    99 = 1.0.23 =
    100 * Added value default for div
    101 = 1.0.24 =
    102 * Added reduce shipping cost for more than one product of the same type
    103 = 1.0.25 =
    104 * Fixed SSL tracing
    105 = 1.0.26 =
    106 * Added for shipping zones
    107 = 1.0.27 =
    108 * Updated readme for version php
    109 = 1.0.28 =
    110 * Added documentation
    111 = 1.0.29 =
    112 * Updated readme
    113 = 1.0.30 =
    114 * Updated kilos rules
    115 = 1.0.31 =
    116 * Refactor get weigth end
    117 = 1.0.32 =
    118 * Added weight max
    119 = 1.0.33 =
    120 * Fixed undefined cart_prods
    121 = 1.0.34 =
    122 * Updated use ceil weigth
    123 = 1.0.35 =
    124 * Fixed div settings
    125 = 1.0.36 =
    126 * Updated for entry guide number with plugin [Advanced Shipment Tracking for WooCommerce](https://woocommerce.com/products/shipment-tracking/)
    127 = 1.0.37 =
    128 * Fixed generate guide with weight
    129 = 1.0.38 =
    130 * Fixed clean city
    131 = 1.0.39 =
    132 * Updated install plugin departamentos-y-ciudades-de-colombia-para-woocommerce
    133 = 1.0.40 =
    134 * Fixed generate guide city Bogotá D.C
    135 = 1.0.41 =
    136 * Fixed generate guide in production
    137 = 1.0.42 =
    138 * Updated wp compatible version
    139 = 1.0.43 =
    140 * Updated generate guides free shipping
    141 = 1.0.44 =
    142 * Updated round shipping value
    143 = 1.0.45 =
    144 * Updated type input
    145 = 1.0.46 =
    146 * Added custom price variation
    147 = 1.0.47 =
    148 * Updated guide params
    149 = 1.0.48 =
    150 * Added apply_filter coordinadora_shipping_calculate_cost
    151 = 1.0.49 =
    152 * Added apply_filter coordinadora_shipping_settings
    153 = 1.0.50 =
    154 * Fixed ceil weight
    155 = 1.0.51 =
    156 * Fixed apply_filter coordinadora_shipping_calculate_cost
    157 = 1.0.52 =
    158 * Fixed calculate_shipping
    159 = 2.0.0 =
    160 * Added generate labels
    161 = 2.0.1 =
    162 * Updated "observaciones" guide, parameter sku and quantity
    163 = 2.0.2 =
    164 * Updated generate guide test
    165 = 2.0.3 =
    166 * Fixed generate guide
    167 = 2.0.4 =
    168 * Refactor update_cities
    169 = 2.0.5 =
    170 * Refactor method title
    171 = 2.0.6 =
    172 * generate guides free shipping
    173 = 2.0.7 =
    174 * Added button "Ver rótulo"
    175 = 2.0.8 =
    176 * Refactor notifications guide
    177 = 2.0.9 =
    178 * Updated disabled wp_schedule_event
    179 = 2.0.10 =
    180 * Compatibility with version 5.5  of wordpress and added apply_filter shipping_servientrega_get_shop
    18153= 3.0.0 =
    18254* Added compatibility for marketplaces
     
    237109= 3.0.28 =
    238110* Updated readme version wordpress
     111= 3.0.29 =
     112* Upodated validate encrypt password
     113* Refactor calculate_shipping
    239114
    240115
     
    243118
    244119== Credits ==
    245 *  [Saul Morales Pacheco](http://saulmoralespa) [@saulmoralespa](http://twitter.com/saulmoralespa)
     120*  [Website](https://saulmoralespa.com) [Linkedin](https://www.linkedin.com/in/saulmoralespa/)
  • shipping-coordinadora-woocommerce/tags/3.0.29/shipping-coordinadora-wc.php

    r2966741 r3076527  
    33 * Plugin Name: Shipping Coordinadora Woocommerce
    44 * Description: Shipping Coordinadora Woocommerce is available for Colombia
    5  * Version: 3.0.28
     5 * Version: 3.0.29
    66 * Author: Saul Morales Pacheco
    77 * Author URI: https://saulmoralespa.com
     
    1919
    2020if(!defined('SHIPPING_COORDINADORA_WC_CSWC_VERSION')){
    21     define('SHIPPING_COORDINADORA_WC_CSWC_VERSION', '3.0.28');
     21    define('SHIPPING_COORDINADORA_WC_CSWC_VERSION', '3.0.29');
    2222}
    2323
  • shipping-coordinadora-woocommerce/trunk/includes/class-method-shipping-coordinadora-wc.php

    r2481096 r3076527  
    181181     * @param mixed $package Array containing the cart packages. To see more about these packages see the 'calculate_shipping' method in this file: woocommerce/includes/class-wc-cart.php.
    182182     */
    183     public function calculate_shipping( $package = array() )
     183    public function calculate_shipping( $package = array() ): void
    184184    {
    185185        $country = $package['destination']['country'];
    186186
    187         if($country !== 'CO')
    188             return apply_filters( 'woocommerce_shipping_' . $this->id . '_is_available', false, $package, $this );
     187        if($country !== 'CO') return;
    189188
    190189        $data = Shipping_Coordinadora_WC::calculate_cost($package);
    191190
    192         if (empty($data))
    193             return apply_filters( 'woocommerce_shipping_' . $this->id . '_is_available', false, $package, $this );
     191        if(!isset($data)) return;
    194192
    195193        $rate = array(
     
    200198        );
    201199
    202         return $this->add_rate( $rate );
     200        $this->add_rate( $rate );
    203201
    204202    }
  • shipping-coordinadora-woocommerce/trunk/includes/class-shipping-coordinadora-wc-plugin.php

    r2503387 r3076527  
    137137    {
    138138        $wc_main_settings = get_option('woocommerce_shipping_coordinadora_wc_settings');
    139         $wc_main_settings['license_key'];
    140139
    141140        if(isset($wc_main_settings['license_key']) && !empty($wc_main_settings['license_key']))
     
    314313    }
    315314
    316     public function enqueue_scripts()
     315    public function enqueue_scripts(): void
    317316    {
    318317        if(is_view_order_page()){
  • shipping-coordinadora-woocommerce/trunk/includes/class-shipping-coordinadora-wc.php

    r2554547 r3076527  
    204204            $message_expected_code_account = "Error, El código cuenta $instance->code_account para la ubl 1 y el id cliente $instance->id_client no existe";
    205205            if ($message_expected_code_account === $message){
    206                 $message .=" <strong>Verifique que se encuentre habilitado el acuerdo de pago que esta intentando usar.</strong>";
     206                $message .=" <strong>Asegúrese de que el acuerdo de pago que está intentando utilizar esté habilitado.</strong>";
    207207                shipping_coordinadora_wc_cswc_notices( $message );
    208208            }
     
    219219        try{
    220220            $instance = new self();
    221             $res = $instance->coordinadora->Cotizador_cotizar($params);
    222             return $res;
     221            return $instance->coordinadora->Cotizador_cotizar($params);
    223222        }catch (\Exception $exception){
    224223            shipping_coordinadora_wc_cswc()->log($exception->getMessage());
     
    230229    public static function calculate_cost($package)
    231230    {
    232         global $woocommerce;
    233231        $instance = new self();
    234232        $state_destination = $package['destination']['state'];
    235233        $city_destination  = $package['destination']['city'];
    236         $items = $woocommerce->cart->get_cart();
     234        $items = $package['contents'];
    237235        $count = 0;
    238236        $total_valorization = 0;
    239237        $height = 0;
    240         $length = 0;
    241         $weight = 0;
    242         $width = 0;
    243238        $quantityItems = count($items);
    244239        $cart_prods = [];
    245240
    246         foreach ( $items as $item => $values ) {
    247             $_product_id = $values['data']->get_id();
    248             $_product = wc_get_product( $_product_id );
    249 
    250             if ( $values['variation_id'] > 0 &&
    251                 in_array( $values['variation_id'], $_product->get_children() ) &&
    252                 wc_get_product( $values['variation_id'] )->get_weight() &&
    253                 wc_get_product( $values['variation_id'] )->get_length() &&
    254                 wc_get_product( $values['variation_id'] )->get_width() &&
    255                 wc_get_product( $values['variation_id'] )->get_height())
    256                 $_product = wc_get_product( $values['variation_id'] );
    257 
    258             if ( !$_product->get_weight() || !$_product->get_length()
    259                 || !$_product->get_width() || !$_product->get_height() )
     241        foreach ( $items as $item) {
     242            /**
     243             * @var  $product WC_Product
     244             */
     245            $product = $item['data'];
     246            $quantity = $item['quantity'];
     247
     248            if ($item['variation_id'] > 0 && in_array($item['variation_id'], $product->get_children()))
     249                $product = wc_get_product($item['variation_id']);
     250
     251            if (!is_numeric($product->get_weight()) || !is_numeric($product->get_length())
     252                || !is_numeric($product->get_width()) || !is_numeric($product->get_height()))
    260253                break;
    261254
    262             $custom_price_product = get_post_meta($_product_id, '_shipping_custom_price_product_smp', true);
    263             $total_valorization += $custom_price_product > 0 ? wc_format_decimal($custom_price_product, 0) : wc_format_decimal($_product->get_price(), 0);
    264 
    265             $quantity = $values['quantity'];
    266 
    267             $total_valorization = $total_valorization * $quantity;
    268 
    269             $height += $_product->get_height() * $quantity;
    270             $length = $_product->get_length() > $length ? $_product->get_length() : $length;
    271             $weight =+ $weight + ($_product->get_weight() * $quantity);
    272             $width =  $_product->get_width() > $width ? $_product->get_width() : $width;
     255            $custom_price_product = get_post_meta($product->get_id(), '_shipping_custom_price_product_smp', true);
     256            $price = $custom_price_product ?: $product->get_price();
     257            $total_valorization += $price * $quantity;
     258
     259            $height += $product->get_height() * $quantity;
     260            $length = $product->get_length();
     261            $weight =+ floatval( $product->get_weight() ) * floatval( $quantity );
     262            $width =  $product->get_width();
    273263
    274264            $count++;
     
    286276
    287277                $height = 0;
    288                 $length = 0;
    289                 $weight = 0;
    290                 $width = 0;
    291278            }
    292279        }
    293280
    294281        $result_destination = self::code_city($state_destination, $city_destination);
    295 
    296282        list($city_sender) = self::get_sender($items);
    297283
     
    302288        }
    303289
    304         if ( empty( $result_destination ) )
    305             return apply_filters( 'woocommerce_shipping_' . $instance->id . '_is_available', false, $package, $instance );
     290        if ( empty( $result_destination ) ) return null;
    306291
    307292        $params = array(
     
    326311            shipping_coordinadora_wc_cswc()->log($data);
    327312
    328         if ( !isset($data->flete_total) )
    329             return apply_filters( 'woocommerce_shipping_' . $instance->id . '_is_available', false, $package, $instance );
     313        if ( !isset($data->flete_total) ) return null;
    330314
    331315        $data->flete_total = ceil($data->flete_total);
     
    334318    }
    335319
    336     public static function generate_guide_dispath($order_id, $old_status, $new_status, WC_Order $order)
     320    public static function generate_guide_dispath($order_id, $old_status, $new_status, WC_Order $order): void
    337321    {
    338322
     
    377361            update_post_meta($order_id, 'codigo_remision_guide_coordinadora', $guide_number);
    378362            $order->add_order_note($note);
    379 
    380363        }
    381364    }
     
    592575        $query = "SELECT codigo FROM $table_name WHERE nombre_departamento='$state_name' AND nombre='$city'";
    593576
    594         $result = $wpdb->get_row( $query );
    595 
    596         return $result;
     577        return $wpdb->get_row( $query );
    597578
    598579    }
     
    741722            $city_sender = $instance->city_sender;
    742723            $phone_sender = $instance->phone_sender;
    743             $sender_name = $instance->sender_name ? $instance->sender_name : get_bloginfo('name');
     724            $sender_name = $instance->sender_name ?: get_bloginfo('name');
    744725        }
    745726        return array($city_sender, $phone_sender, $sender_name);
  • shipping-coordinadora-woocommerce/trunk/lib/coordinadora-webservice-php/src/WebService.php

    r2465310 r3076527  
    88
    99namespace Coordinadora;
     10use SoapClient;
    1011
    1112class WebService
     
    2021    const URL_GUIDES = 'http://guias.coordinadora.com/ws/guias/1.6/server.php';
    2122
    22     private $_apikey;
    23 
    24     private $_password_dispatches;
    25 
    26     private $nit;
    27 
    28     private $id_client;
    29 
    30     private $user_guide;
    31 
    32     private $password_guide;
    33 
    34     private static $sandbox = false;
     23    private string $_apikey;
     24
     25    private string $_password_dispatches;
     26
     27    private string $nit;
     28
     29    private string $id_client;
     30
     31    private string $user_guide;
     32
     33    private string $password_guide;
     34
     35    private static bool $sandbox = false;
    3536
    3637    /**
     
    4546        if ($i !== 6)
    4647            throw new \Exception("Invalid arguments");
    47 
    4848
    4949        $this->_apikey = func_get_arg(0);
     
    5656    }
    5757
    58     public function sandbox_mode($status = false)
     58    public function sandbox_mode($status = false): static
    5959    {
    6060        if ($status){
     
    6464    }
    6565
    66     public static function get_url_tracking_dispatches()
     66    public static function get_url_tracking_dispatches(): string
    6767    {
    6868        if (self::$sandbox)
     
    7171    }
    7272
    73     public static function get_url_guides()
     73    public static function get_url_guides(): string
    7474    {
    7575        if (self::$sandbox)
     
    7878    }
    7979
    80     public static function url_soap($name_function)
    81     {
    82 
    83         $url_soap = self::isGuide($name_function) === false ? self::get_url_guides() : self::get_url_tracking_dispatches();
    84 
    85         return $url_soap;
    86     }
    87 
    88     public static function isGuide($name_function)
    89     {
    90         return strpos($name_function, 'Guias') === false;
    91     }
    92 
    93     protected function _access_connect_dispatches()
     80    public static function url_soap($name_function): string
     81    {
     82        return self::isGuide($name_function) === false ? self::get_url_guides() : self::get_url_tracking_dispatches();
     83    }
     84
     85    public static function isGuide($name_function): bool
     86    {
     87        return !str_contains($name_function, 'Guias');
     88    }
     89
     90    protected function _access_connect_dispatches(): array
    9491    {
    9592        return array(
     
    9996    }
    10097
    101     protected function _access_connect_guides()
     98    protected function _access_connect_guides(): array
    10299    {
    103100        return array(
    104101            'id_cliente' => $this->id_client,
    105102            'usuario' => $this->user_guide,
    106             'clave' => hash('sha256', $this->password_guide)
    107         );
    108     }
    109 
    110     /**
    111      * @return mixed
    112      * @throws \Exception
    113      */
    114     public static function Cotizador_departamentos()
     103            'clave' => $this->encrypt_password($this->password_guide)
     104        );
     105    }
     106
     107    /**
     108     * @return mixed
     109     * @throws \Exception
     110     */
     111    public static function Cotizador_departamentos(): mixed
    115112    {
    116113        return self::call_soap(__FUNCTION__);
    117 
    118     }
    119 
    120     /**
    121      * @return mixed
    122      * @throws \Exception
    123      */
    124     public static function Cotizador_ciudades()
     114    }
     115
     116    /**
     117     * @return mixed
     118     * @throws \Exception
     119     */
     120    public static function Cotizador_ciudades(): mixed
    125121    {
    126122        return self::call_soap(__FUNCTION__);
     
    133129     * @throws \Exception
    134130     */
    135     public function Cotizador_cotizar(array $params)
     131    public function Cotizador_cotizar($params): mixed
    136132    {
    137133        $body =  array(
     
    147143     * @throws \Exception
    148144     */
    149     public function Recaudos_consultar(array $params)
     145    public function Recaudos_consultar($params): mixed
    150146    {
    151147        $body = array(
     
    161157     * @throws \Exception
    162158     */
    163     public function Recogidas_programar(array $params)
     159    public function Recogidas_programar($params): mixed
    164160    {
    165161        $body = array(
     
    175171     * @throws \Exception
    176172     */
    177     public function Guias_generarGuia(array $params)
    178     {
    179         $body = (object)array_merge($params, $this->_access_connect_guides());
    180 
    181         return $this->call_soap(__FUNCTION__, $body);
    182     }
    183 
    184     /**
    185      * @param $params
    186      * @return mixed
    187      * @throws \Exception
    188      */
    189     public function Guias_editarGuia(array $params)
    190     {
    191         $body = (object)array_merge($params, $this->_access_connect_guides());
    192 
    193         return $this->call_soap(__FUNCTION__, $body);
    194     }
    195 
    196     /**
    197      * @param $params
    198      * @return mixed
    199      * @throws \Exception
    200      */
    201     public function Guias_generarDespacho(array $params)
    202     {
    203         $body = (object)array_merge($params, $this->_access_connect_guides());
    204 
    205         return $this->call_soap(__FUNCTION__, $body);
    206     }
    207 
    208     /**
    209      * @param $params
    210      * @return mixed
    211      * @throws \Exception
    212      */
    213     public function Guias_anularGuia(array $params)
    214     {
    215         $body = (object)array_merge($params, $this->_access_connect_guides());
    216 
    217         return $this->call_soap(__FUNCTION__, $body);
    218     }
    219 
    220     /**
    221      * @param $params
    222      * @return mixed
    223      * @throws \Exception
    224      */
    225     public function Guias_rastreoSimple(array $params)
    226     {
    227         $body = (object)array_merge($params, $this->_access_connect_guides());
    228 
     173    public function Guias_generarGuia($params): mixed
     174    {
     175        $body = (object)array_merge($params, $this->_access_connect_guides());
     176        return $this->call_soap(__FUNCTION__, $body);
     177    }
     178
     179    /**
     180     * @param $params
     181     * @return mixed
     182     * @throws \Exception
     183     */
     184    public function Guias_editarGuia($params): mixed
     185    {
     186        $body = (object)array_merge($params, $this->_access_connect_guides());
     187        return $this->call_soap(__FUNCTION__, $body);
     188    }
     189
     190    /**
     191     * @param $params
     192     * @return mixed
     193     * @throws \Exception
     194     */
     195    public function Guias_generarDespacho($params): mixed
     196    {
     197        $body = (object)array_merge($params, $this->_access_connect_guides());
     198        return $this->call_soap(__FUNCTION__, $body);
     199    }
     200
     201    /**
     202     * @param $params
     203     * @return mixed
     204     * @throws \Exception
     205     */
     206    public function Guias_anularGuia($params): mixed
     207    {
     208        $body = (object)array_merge($params, $this->_access_connect_guides());
     209        return $this->call_soap(__FUNCTION__, $body);
     210    }
     211
     212    /**
     213     * @param $params
     214     * @return mixed
     215     * @throws \Exception
     216     */
     217    public function Guias_rastreoSimple($params): mixed
     218    {
     219        $body = (object)array_merge($params, $this->_access_connect_guides());
    229220        return $this->call_soap(__FUNCTION__, $body);
    230221    }
     
    235226     * @throws \Exception
    236227     */
    237     public function Guias_rastreoExtendido(array $params)
    238     {
    239         $body = (object)array_merge($params, $this->_access_connect_guides());
    240 
    241         return $this->call_soap(__FUNCTION__, $body);
    242     }
    243 
    244     /**
    245      * @param array $params
    246      * @return mixed
    247      * @throws \Exception
    248      */
    249     public function Guias_imprimirRotulos(array $params)
    250     {
    251         $body = (object)array_merge($params, $this->_access_connect_guides());
    252 
    253         return $this->call_soap(__FUNCTION__, $body);
    254     }
    255 
    256     /**
    257      * @param $name_function
    258      * @param array $params
    259      * @return mixed
    260      * @throws \Exception
    261      */
    262     private  static function call_soap($name_function, $params = array('p' => array()))
    263     {
    264         if (self::isGuide($name_function) === false){
    265             $client = New \SoapClient( null, array("location"  => self::url_soap($name_function),
    266                 "uri"         => self::url_soap($name_function),
    267                 "use"         => SOAP_LITERAL,
    268                 "trace"       => true,
    269                 "exceptions"  => true,
    270                 "soap_version"=> SOAP_1_2,
    271                 "connection_timeout"=> 60,
    272                 "encoding"=> "utf-8"));
    273         }else{
    274             $client = New \SoapClient(self::url_soap($name_function), array(
    275                 "trace"       => true,
    276                 "soap_version"   => SOAP_1_2,
    277                 "connection_timeout"=> 60,
    278                 "encoding"=> "utf-8",
    279                 'stream_context' => stream_context_create(array(
    280                     'ssl' => array(
    281                         'verify_peer' => false,
    282                         'verify_peer_name' => false,
    283                         'allow_self_signed' => true
    284                     )
    285                 )),
    286                 'cache_wsdl' => WSDL_CACHE_NONE));
    287         }
    288 
     228    public function Guias_rastreoExtendido(array $params): mixed
     229    {
     230        $body = (object)array_merge($params, $this->_access_connect_guides());
     231        return $this->call_soap(__FUNCTION__, $body);
     232    }
     233
     234    /**
     235     * @param $params
     236     * @return mixed
     237     * @throws \Exception
     238     */
     239    public function Guias_imprimirRotulos($params): mixed
     240    {
     241        $body = (object)array_merge($params, $this->_access_connect_guides());
     242        return $this->call_soap(__FUNCTION__, $body);
     243    }
     244
     245    /**
     246     * @throws \Exception
     247     */
     248    private  static function call_soap($name_function, $params = array('p' => array())): mixed
     249    {
    289250        try{
     251            if (self::isGuide($name_function) === false){
     252                $client = New SoapClient( null, array("location"  => self::url_soap($name_function),
     253                    "uri"         => self::url_soap($name_function),
     254                    "use"         => SOAP_LITERAL,
     255                    "trace"       => true,
     256                    "exceptions"  => true,
     257                    "soap_version"=> SOAP_1_2,
     258                    "connection_timeout"=> 30,
     259                    "encoding"=> "utf-8"));
     260            }else{
     261                $client = New SoapClient(self::url_soap($name_function), array(
     262                    "trace"       => true,
     263                    "soap_version"   => SOAP_1_2,
     264                    "connection_timeout"=> 30,
     265                    "encoding"=> "utf-8",
     266                    'stream_context' => stream_context_create(array(
     267                        'ssl' => array(
     268                            'verify_peer' => false,
     269                            'verify_peer_name' => false,
     270                            'allow_self_signed' => true
     271                        )
     272                    )),
     273                    'cache_wsdl' => WSDL_CACHE_NONE));
     274            }
    290275            $data = $client->$name_function($params);
    291 
    292276            $name_function_result = $name_function . "Result";
    293 
    294             $res = isset($data->$name_function_result) ? $data->$name_function_result : $data;
    295             return $res;
     277            return $data->$name_function_result ?? $data;
    296278        }catch (\Exception $exception){
    297279            throw new  \Exception($exception->getMessage());
    298280        }
    299281    }
     282
     283    private function encrypt_password(string $password): string
     284    {
     285        return preg_match("/^([a-f0-9]{64})$/", $password) ? $password : hash('sha256', $password);
     286    }
    300287}
  • shipping-coordinadora-woocommerce/trunk/readme.txt

    r2966741 r3076527  
    44Tags: commerce, e-commerce, commerce, WordPress ecommerce, store, sales, sell, shop, shopping, cart, checkout, configurable, Colombia, coordinadora
    55Requires at least:  6.0
    6 Tested up to: 6.3.1
    7 Requires PHP: 7.1.0
    8 Stable tag: 3.0.28
     6Tested up to: 6.5.2
     7Requires PHP: 8.1
     8Stable tag: 3.0.29
    99License: GNU General Public License v3.0
    1010License URI: http://www.gnu.org/licenses/gpl-3.0.html
     
    5151== Changelog ==
    5252
    53 = 1.0.0 =
    54 * Initial stable release
    55 = 1.0.1 =
    56 * Fixed when the shipment is enabled
    57 = 1.0.2 =
    58 * Update readme and add image screenshot-3.png
    59 = 1.0.3 =
    60 * Requiere enable Woocommerce plugin
    61 = 1.0.4 =
    62 * Fixed create database hook activation
    63 = 1.0.5 =
    64 * Fixed of name city shop
    65 = 1.0.6 =
    66 * Fixed name formatted name city shop
    67 = 1.0.7 =
    68 * Fixed save database
    69 = 1.0.8 =
    70 * Added new configurations
    71 = 1.0.9 =
    72 * Added day estimate
    73 = 1.0.10 =
    74 * Fixed code account
    75 = 1.0.11 =
    76 * Fixed space tag
    77 = 1.0.12 =
    78 * Fixed test guide
    79 = 1.0.13 =
    80 * Add require licence full version
    81 = 1.0.14 =
    82 * Added hidden passwords
    83 = 1.0.15 =
    84 * Fixed admin notices
    85 = 1.0.16 =
    86 * Updated readme version Woocommerce
    87 = 1.0.17 =
    88 * Fixed file sweetAlert
    89 = 1.0.18 =
    90 * Refactor require openssl
    91 = 1.0.19 =
    92 * Updated readme version wordpress
    93 = 1.0.20 =
    94 * Fixed enviroment production
    95 = 1.0.21 =
    96 * Added custom field value declaration
    97 = 1.0.22 =
    98 * Added div payment agreement
    99 = 1.0.23 =
    100 * Added value default for div
    101 = 1.0.24 =
    102 * Added reduce shipping cost for more than one product of the same type
    103 = 1.0.25 =
    104 * Fixed SSL tracing
    105 = 1.0.26 =
    106 * Added for shipping zones
    107 = 1.0.27 =
    108 * Updated readme for version php
    109 = 1.0.28 =
    110 * Added documentation
    111 = 1.0.29 =
    112 * Updated readme
    113 = 1.0.30 =
    114 * Updated kilos rules
    115 = 1.0.31 =
    116 * Refactor get weigth end
    117 = 1.0.32 =
    118 * Added weight max
    119 = 1.0.33 =
    120 * Fixed undefined cart_prods
    121 = 1.0.34 =
    122 * Updated use ceil weigth
    123 = 1.0.35 =
    124 * Fixed div settings
    125 = 1.0.36 =
    126 * Updated for entry guide number with plugin [Advanced Shipment Tracking for WooCommerce](https://woocommerce.com/products/shipment-tracking/)
    127 = 1.0.37 =
    128 * Fixed generate guide with weight
    129 = 1.0.38 =
    130 * Fixed clean city
    131 = 1.0.39 =
    132 * Updated install plugin departamentos-y-ciudades-de-colombia-para-woocommerce
    133 = 1.0.40 =
    134 * Fixed generate guide city Bogotá D.C
    135 = 1.0.41 =
    136 * Fixed generate guide in production
    137 = 1.0.42 =
    138 * Updated wp compatible version
    139 = 1.0.43 =
    140 * Updated generate guides free shipping
    141 = 1.0.44 =
    142 * Updated round shipping value
    143 = 1.0.45 =
    144 * Updated type input
    145 = 1.0.46 =
    146 * Added custom price variation
    147 = 1.0.47 =
    148 * Updated guide params
    149 = 1.0.48 =
    150 * Added apply_filter coordinadora_shipping_calculate_cost
    151 = 1.0.49 =
    152 * Added apply_filter coordinadora_shipping_settings
    153 = 1.0.50 =
    154 * Fixed ceil weight
    155 = 1.0.51 =
    156 * Fixed apply_filter coordinadora_shipping_calculate_cost
    157 = 1.0.52 =
    158 * Fixed calculate_shipping
    159 = 2.0.0 =
    160 * Added generate labels
    161 = 2.0.1 =
    162 * Updated "observaciones" guide, parameter sku and quantity
    163 = 2.0.2 =
    164 * Updated generate guide test
    165 = 2.0.3 =
    166 * Fixed generate guide
    167 = 2.0.4 =
    168 * Refactor update_cities
    169 = 2.0.5 =
    170 * Refactor method title
    171 = 2.0.6 =
    172 * generate guides free shipping
    173 = 2.0.7 =
    174 * Added button "Ver rótulo"
    175 = 2.0.8 =
    176 * Refactor notifications guide
    177 = 2.0.9 =
    178 * Updated disabled wp_schedule_event
    179 = 2.0.10 =
    180 * Compatibility with version 5.5  of wordpress and added apply_filter shipping_servientrega_get_shop
    18153= 3.0.0 =
    18254* Added compatibility for marketplaces
     
    237109= 3.0.28 =
    238110* Updated readme version wordpress
     111= 3.0.29 =
     112* Upodated validate encrypt password
     113* Refactor calculate_shipping
    239114
    240115
     
    243118
    244119== Credits ==
    245 *  [Saul Morales Pacheco](http://saulmoralespa) [@saulmoralespa](http://twitter.com/saulmoralespa)
     120*  [Website](https://saulmoralespa.com) [Linkedin](https://www.linkedin.com/in/saulmoralespa/)
  • shipping-coordinadora-woocommerce/trunk/shipping-coordinadora-wc.php

    r2966741 r3076527  
    33 * Plugin Name: Shipping Coordinadora Woocommerce
    44 * Description: Shipping Coordinadora Woocommerce is available for Colombia
    5  * Version: 3.0.28
     5 * Version: 3.0.29
    66 * Author: Saul Morales Pacheco
    77 * Author URI: https://saulmoralespa.com
     
    1919
    2020if(!defined('SHIPPING_COORDINADORA_WC_CSWC_VERSION')){
    21     define('SHIPPING_COORDINADORA_WC_CSWC_VERSION', '3.0.28');
     21    define('SHIPPING_COORDINADORA_WC_CSWC_VERSION', '3.0.29');
    2222}
    2323
Note: See TracChangeset for help on using the changeset viewer.