Changeset 3076527
- Timestamp:
- 04/24/2024 02:28:30 PM (23 months ago)
- Location:
- shipping-coordinadora-woocommerce
- Files:
-
- 1 deleted
- 6 edited
- 13 copied
-
tags/3.0.29 (copied) (copied from shipping-coordinadora-woocommerce/trunk)
-
tags/3.0.29/assets/js/config.js (deleted)
-
tags/3.0.29/assets/js/shipping-coordinadora-wc.js (copied) (copied from shipping-coordinadora-woocommerce/trunk/assets/js/shipping-coordinadora-wc.js)
-
tags/3.0.29/assets/js/sweetalert2-min.js (copied) (copied from shipping-coordinadora-woocommerce/trunk/assets/js/sweetalert2-min.js)
-
tags/3.0.29/assets/js/view-order.js (copied) (copied from shipping-coordinadora-woocommerce/trunk/assets/js/view-order.js)
-
tags/3.0.29/includes/admin/settings.php (copied) (copied from shipping-coordinadora-woocommerce/trunk/includes/admin/settings.php)
-
tags/3.0.29/includes/class-method-shipping-coordinadora-collection-wc.php (copied) (copied from shipping-coordinadora-woocommerce/trunk/includes/class-method-shipping-coordinadora-collection-wc.php)
-
tags/3.0.29/includes/class-method-shipping-coordinadora-wc.php (copied) (copied from shipping-coordinadora-woocommerce/trunk/includes/class-method-shipping-coordinadora-wc.php) (2 diffs)
-
tags/3.0.29/includes/class-shipping-coordinadora-wc-admin.php (copied) (copied from shipping-coordinadora-woocommerce/trunk/includes/class-shipping-coordinadora-wc-admin.php)
-
tags/3.0.29/includes/class-shipping-coordinadora-wc-plugin.php (copied) (copied from shipping-coordinadora-woocommerce/trunk/includes/class-shipping-coordinadora-wc-plugin.php) (2 diffs)
-
tags/3.0.29/includes/class-shipping-coordinadora-wc.php (copied) (copied from shipping-coordinadora-woocommerce/trunk/includes/class-shipping-coordinadora-wc.php) (10 diffs)
-
tags/3.0.29/lib/coordinadora-webservice-php/src/WebService.php (copied) (copied from shipping-coordinadora-woocommerce/trunk/lib/coordinadora-webservice-php/src/WebService.php) (13 diffs)
-
tags/3.0.29/readme.txt (copied) (copied from shipping-coordinadora-woocommerce/trunk/readme.txt) (4 diffs)
-
tags/3.0.29/shipping-coordinadora-wc.php (copied) (copied from shipping-coordinadora-woocommerce/trunk/shipping-coordinadora-wc.php) (2 diffs)
-
trunk/includes/class-method-shipping-coordinadora-wc.php (modified) (2 diffs)
-
trunk/includes/class-shipping-coordinadora-wc-plugin.php (modified) (2 diffs)
-
trunk/includes/class-shipping-coordinadora-wc.php (modified) (10 diffs)
-
trunk/lib/coordinadora-webservice-php/src/WebService.php (modified) (13 diffs)
-
trunk/readme.txt (modified) (4 diffs)
-
trunk/shipping-coordinadora-wc.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
shipping-coordinadora-woocommerce/tags/3.0.29/includes/class-method-shipping-coordinadora-wc.php
r2481096 r3076527 181 181 * @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. 182 182 */ 183 public function calculate_shipping( $package = array() ) 183 public function calculate_shipping( $package = array() ): void 184 184 { 185 185 $country = $package['destination']['country']; 186 186 187 if($country !== 'CO') 188 return apply_filters( 'woocommerce_shipping_' . $this->id . '_is_available', false, $package, $this ); 187 if($country !== 'CO') return; 189 188 190 189 $data = Shipping_Coordinadora_WC::calculate_cost($package); 191 190 192 if (empty($data)) 193 return apply_filters( 'woocommerce_shipping_' . $this->id . '_is_available', false, $package, $this ); 191 if(!isset($data)) return; 194 192 195 193 $rate = array( … … 200 198 ); 201 199 202 return$this->add_rate( $rate );200 $this->add_rate( $rate ); 203 201 204 202 } -
shipping-coordinadora-woocommerce/tags/3.0.29/includes/class-shipping-coordinadora-wc-plugin.php
r2503387 r3076527 137 137 { 138 138 $wc_main_settings = get_option('woocommerce_shipping_coordinadora_wc_settings'); 139 $wc_main_settings['license_key'];140 139 141 140 if(isset($wc_main_settings['license_key']) && !empty($wc_main_settings['license_key'])) … … 314 313 } 315 314 316 public function enqueue_scripts() 315 public function enqueue_scripts(): void 317 316 { 318 317 if(is_view_order_page()){ -
shipping-coordinadora-woocommerce/tags/3.0.29/includes/class-shipping-coordinadora-wc.php
r2554547 r3076527 204 204 $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"; 205 205 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>"; 207 207 shipping_coordinadora_wc_cswc_notices( $message ); 208 208 } … … 219 219 try{ 220 220 $instance = new self(); 221 $res = $instance->coordinadora->Cotizador_cotizar($params); 222 return $res; 221 return $instance->coordinadora->Cotizador_cotizar($params); 223 222 }catch (\Exception $exception){ 224 223 shipping_coordinadora_wc_cswc()->log($exception->getMessage()); … … 230 229 public static function calculate_cost($package) 231 230 { 232 global $woocommerce;233 231 $instance = new self(); 234 232 $state_destination = $package['destination']['state']; 235 233 $city_destination = $package['destination']['city']; 236 $items = $ woocommerce->cart->get_cart();234 $items = $package['contents']; 237 235 $count = 0; 238 236 $total_valorization = 0; 239 237 $height = 0; 240 $length = 0;241 $weight = 0;242 $width = 0;243 238 $quantityItems = count($items); 244 239 $cart_prods = []; 245 240 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())) 260 253 break; 261 254 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(); 273 263 274 264 $count++; … … 286 276 287 277 $height = 0; 288 $length = 0;289 $weight = 0;290 $width = 0;291 278 } 292 279 } 293 280 294 281 $result_destination = self::code_city($state_destination, $city_destination); 295 296 282 list($city_sender) = self::get_sender($items); 297 283 … … 302 288 } 303 289 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; 306 291 307 292 $params = array( … … 326 311 shipping_coordinadora_wc_cswc()->log($data); 327 312 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; 330 314 331 315 $data->flete_total = ceil($data->flete_total); … … 334 318 } 335 319 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 337 321 { 338 322 … … 377 361 update_post_meta($order_id, 'codigo_remision_guide_coordinadora', $guide_number); 378 362 $order->add_order_note($note); 379 380 363 } 381 364 } … … 592 575 $query = "SELECT codigo FROM $table_name WHERE nombre_departamento='$state_name' AND nombre='$city'"; 593 576 594 $result = $wpdb->get_row( $query ); 595 596 return $result; 577 return $wpdb->get_row( $query ); 597 578 598 579 } … … 741 722 $city_sender = $instance->city_sender; 742 723 $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'); 744 725 } 745 726 return array($city_sender, $phone_sender, $sender_name); -
shipping-coordinadora-woocommerce/tags/3.0.29/lib/coordinadora-webservice-php/src/WebService.php
r2465310 r3076527 8 8 9 9 namespace Coordinadora; 10 use SoapClient; 10 11 11 12 class WebService … … 20 21 const URL_GUIDES = 'http://guias.coordinadora.com/ws/guias/1.6/server.php'; 21 22 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; 35 36 36 37 /** … … 45 46 if ($i !== 6) 46 47 throw new \Exception("Invalid arguments"); 47 48 48 49 49 $this->_apikey = func_get_arg(0); … … 56 56 } 57 57 58 public function sandbox_mode($status = false) 58 public function sandbox_mode($status = false): static 59 59 { 60 60 if ($status){ … … 64 64 } 65 65 66 public static function get_url_tracking_dispatches() 66 public static function get_url_tracking_dispatches(): string 67 67 { 68 68 if (self::$sandbox) … … 71 71 } 72 72 73 public static function get_url_guides() 73 public static function get_url_guides(): string 74 74 { 75 75 if (self::$sandbox) … … 78 78 } 79 79 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 94 91 { 95 92 return array( … … 99 96 } 100 97 101 protected function _access_connect_guides() 98 protected function _access_connect_guides(): array 102 99 { 103 100 return array( 104 101 'id_cliente' => $this->id_client, 105 102 '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 115 112 { 116 113 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 125 121 { 126 122 return self::call_soap(__FUNCTION__); … … 133 129 * @throws \Exception 134 130 */ 135 public function Cotizador_cotizar( array $params)131 public function Cotizador_cotizar($params): mixed 136 132 { 137 133 $body = array( … … 147 143 * @throws \Exception 148 144 */ 149 public function Recaudos_consultar( array $params)145 public function Recaudos_consultar($params): mixed 150 146 { 151 147 $body = array( … … 161 157 * @throws \Exception 162 158 */ 163 public function Recogidas_programar( array $params)159 public function Recogidas_programar($params): mixed 164 160 { 165 161 $body = array( … … 175 171 * @throws \Exception 176 172 */ 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()); 229 220 return $this->call_soap(__FUNCTION__, $body); 230 221 } … … 235 226 * @throws \Exception 236 227 */ 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 { 289 250 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 } 290 275 $data = $client->$name_function($params); 291 292 276 $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; 296 278 }catch (\Exception $exception){ 297 279 throw new \Exception($exception->getMessage()); 298 280 } 299 281 } 282 283 private function encrypt_password(string $password): string 284 { 285 return preg_match("/^([a-f0-9]{64})$/", $password) ? $password : hash('sha256', $password); 286 } 300 287 } -
shipping-coordinadora-woocommerce/tags/3.0.29/readme.txt
r2966741 r3076527 4 4 Tags: commerce, e-commerce, commerce, WordPress ecommerce, store, sales, sell, shop, shopping, cart, checkout, configurable, Colombia, coordinadora 5 5 Requires at least: 6.0 6 Tested up to: 6. 3.17 Requires PHP: 7.1.08 Stable tag: 3.0.2 86 Tested up to: 6.5.2 7 Requires PHP: 8.1 8 Stable tag: 3.0.29 9 9 License: GNU General Public License v3.0 10 10 License URI: http://www.gnu.org/licenses/gpl-3.0.html … … 51 51 == Changelog == 52 52 53 = 1.0.0 =54 * Initial stable release55 = 1.0.1 =56 * Fixed when the shipment is enabled57 = 1.0.2 =58 * Update readme and add image screenshot-3.png59 = 1.0.3 =60 * Requiere enable Woocommerce plugin61 = 1.0.4 =62 * Fixed create database hook activation63 = 1.0.5 =64 * Fixed of name city shop65 = 1.0.6 =66 * Fixed name formatted name city shop67 = 1.0.7 =68 * Fixed save database69 = 1.0.8 =70 * Added new configurations71 = 1.0.9 =72 * Added day estimate73 = 1.0.10 =74 * Fixed code account75 = 1.0.11 =76 * Fixed space tag77 = 1.0.12 =78 * Fixed test guide79 = 1.0.13 =80 * Add require licence full version81 = 1.0.14 =82 * Added hidden passwords83 = 1.0.15 =84 * Fixed admin notices85 = 1.0.16 =86 * Updated readme version Woocommerce87 = 1.0.17 =88 * Fixed file sweetAlert89 = 1.0.18 =90 * Refactor require openssl91 = 1.0.19 =92 * Updated readme version wordpress93 = 1.0.20 =94 * Fixed enviroment production95 = 1.0.21 =96 * Added custom field value declaration97 = 1.0.22 =98 * Added div payment agreement99 = 1.0.23 =100 * Added value default for div101 = 1.0.24 =102 * Added reduce shipping cost for more than one product of the same type103 = 1.0.25 =104 * Fixed SSL tracing105 = 1.0.26 =106 * Added for shipping zones107 = 1.0.27 =108 * Updated readme for version php109 = 1.0.28 =110 * Added documentation111 = 1.0.29 =112 * Updated readme113 = 1.0.30 =114 * Updated kilos rules115 = 1.0.31 =116 * Refactor get weigth end117 = 1.0.32 =118 * Added weight max119 = 1.0.33 =120 * Fixed undefined cart_prods121 = 1.0.34 =122 * Updated use ceil weigth123 = 1.0.35 =124 * Fixed div settings125 = 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 weight129 = 1.0.38 =130 * Fixed clean city131 = 1.0.39 =132 * Updated install plugin departamentos-y-ciudades-de-colombia-para-woocommerce133 = 1.0.40 =134 * Fixed generate guide city Bogotá D.C135 = 1.0.41 =136 * Fixed generate guide in production137 = 1.0.42 =138 * Updated wp compatible version139 = 1.0.43 =140 * Updated generate guides free shipping141 = 1.0.44 =142 * Updated round shipping value143 = 1.0.45 =144 * Updated type input145 = 1.0.46 =146 * Added custom price variation147 = 1.0.47 =148 * Updated guide params149 = 1.0.48 =150 * Added apply_filter coordinadora_shipping_calculate_cost151 = 1.0.49 =152 * Added apply_filter coordinadora_shipping_settings153 = 1.0.50 =154 * Fixed ceil weight155 = 1.0.51 =156 * Fixed apply_filter coordinadora_shipping_calculate_cost157 = 1.0.52 =158 * Fixed calculate_shipping159 = 2.0.0 =160 * Added generate labels161 = 2.0.1 =162 * Updated "observaciones" guide, parameter sku and quantity163 = 2.0.2 =164 * Updated generate guide test165 = 2.0.3 =166 * Fixed generate guide167 = 2.0.4 =168 * Refactor update_cities169 = 2.0.5 =170 * Refactor method title171 = 2.0.6 =172 * generate guides free shipping173 = 2.0.7 =174 * Added button "Ver rótulo"175 = 2.0.8 =176 * Refactor notifications guide177 = 2.0.9 =178 * Updated disabled wp_schedule_event179 = 2.0.10 =180 * Compatibility with version 5.5 of wordpress and added apply_filter shipping_servientrega_get_shop181 53 = 3.0.0 = 182 54 * Added compatibility for marketplaces … … 237 109 = 3.0.28 = 238 110 * Updated readme version wordpress 111 = 3.0.29 = 112 * Upodated validate encrypt password 113 * Refactor calculate_shipping 239 114 240 115 … … 243 118 244 119 == 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 3 3 * Plugin Name: Shipping Coordinadora Woocommerce 4 4 * Description: Shipping Coordinadora Woocommerce is available for Colombia 5 * Version: 3.0.2 85 * Version: 3.0.29 6 6 * Author: Saul Morales Pacheco 7 7 * Author URI: https://saulmoralespa.com … … 19 19 20 20 if(!defined('SHIPPING_COORDINADORA_WC_CSWC_VERSION')){ 21 define('SHIPPING_COORDINADORA_WC_CSWC_VERSION', '3.0.2 8');21 define('SHIPPING_COORDINADORA_WC_CSWC_VERSION', '3.0.29'); 22 22 } 23 23 -
shipping-coordinadora-woocommerce/trunk/includes/class-method-shipping-coordinadora-wc.php
r2481096 r3076527 181 181 * @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. 182 182 */ 183 public function calculate_shipping( $package = array() ) 183 public function calculate_shipping( $package = array() ): void 184 184 { 185 185 $country = $package['destination']['country']; 186 186 187 if($country !== 'CO') 188 return apply_filters( 'woocommerce_shipping_' . $this->id . '_is_available', false, $package, $this ); 187 if($country !== 'CO') return; 189 188 190 189 $data = Shipping_Coordinadora_WC::calculate_cost($package); 191 190 192 if (empty($data)) 193 return apply_filters( 'woocommerce_shipping_' . $this->id . '_is_available', false, $package, $this ); 191 if(!isset($data)) return; 194 192 195 193 $rate = array( … … 200 198 ); 201 199 202 return$this->add_rate( $rate );200 $this->add_rate( $rate ); 203 201 204 202 } -
shipping-coordinadora-woocommerce/trunk/includes/class-shipping-coordinadora-wc-plugin.php
r2503387 r3076527 137 137 { 138 138 $wc_main_settings = get_option('woocommerce_shipping_coordinadora_wc_settings'); 139 $wc_main_settings['license_key'];140 139 141 140 if(isset($wc_main_settings['license_key']) && !empty($wc_main_settings['license_key'])) … … 314 313 } 315 314 316 public function enqueue_scripts() 315 public function enqueue_scripts(): void 317 316 { 318 317 if(is_view_order_page()){ -
shipping-coordinadora-woocommerce/trunk/includes/class-shipping-coordinadora-wc.php
r2554547 r3076527 204 204 $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"; 205 205 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>"; 207 207 shipping_coordinadora_wc_cswc_notices( $message ); 208 208 } … … 219 219 try{ 220 220 $instance = new self(); 221 $res = $instance->coordinadora->Cotizador_cotizar($params); 222 return $res; 221 return $instance->coordinadora->Cotizador_cotizar($params); 223 222 }catch (\Exception $exception){ 224 223 shipping_coordinadora_wc_cswc()->log($exception->getMessage()); … … 230 229 public static function calculate_cost($package) 231 230 { 232 global $woocommerce;233 231 $instance = new self(); 234 232 $state_destination = $package['destination']['state']; 235 233 $city_destination = $package['destination']['city']; 236 $items = $ woocommerce->cart->get_cart();234 $items = $package['contents']; 237 235 $count = 0; 238 236 $total_valorization = 0; 239 237 $height = 0; 240 $length = 0;241 $weight = 0;242 $width = 0;243 238 $quantityItems = count($items); 244 239 $cart_prods = []; 245 240 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())) 260 253 break; 261 254 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(); 273 263 274 264 $count++; … … 286 276 287 277 $height = 0; 288 $length = 0;289 $weight = 0;290 $width = 0;291 278 } 292 279 } 293 280 294 281 $result_destination = self::code_city($state_destination, $city_destination); 295 296 282 list($city_sender) = self::get_sender($items); 297 283 … … 302 288 } 303 289 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; 306 291 307 292 $params = array( … … 326 311 shipping_coordinadora_wc_cswc()->log($data); 327 312 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; 330 314 331 315 $data->flete_total = ceil($data->flete_total); … … 334 318 } 335 319 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 337 321 { 338 322 … … 377 361 update_post_meta($order_id, 'codigo_remision_guide_coordinadora', $guide_number); 378 362 $order->add_order_note($note); 379 380 363 } 381 364 } … … 592 575 $query = "SELECT codigo FROM $table_name WHERE nombre_departamento='$state_name' AND nombre='$city'"; 593 576 594 $result = $wpdb->get_row( $query ); 595 596 return $result; 577 return $wpdb->get_row( $query ); 597 578 598 579 } … … 741 722 $city_sender = $instance->city_sender; 742 723 $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'); 744 725 } 745 726 return array($city_sender, $phone_sender, $sender_name); -
shipping-coordinadora-woocommerce/trunk/lib/coordinadora-webservice-php/src/WebService.php
r2465310 r3076527 8 8 9 9 namespace Coordinadora; 10 use SoapClient; 10 11 11 12 class WebService … … 20 21 const URL_GUIDES = 'http://guias.coordinadora.com/ws/guias/1.6/server.php'; 21 22 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; 35 36 36 37 /** … … 45 46 if ($i !== 6) 46 47 throw new \Exception("Invalid arguments"); 47 48 48 49 49 $this->_apikey = func_get_arg(0); … … 56 56 } 57 57 58 public function sandbox_mode($status = false) 58 public function sandbox_mode($status = false): static 59 59 { 60 60 if ($status){ … … 64 64 } 65 65 66 public static function get_url_tracking_dispatches() 66 public static function get_url_tracking_dispatches(): string 67 67 { 68 68 if (self::$sandbox) … … 71 71 } 72 72 73 public static function get_url_guides() 73 public static function get_url_guides(): string 74 74 { 75 75 if (self::$sandbox) … … 78 78 } 79 79 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 94 91 { 95 92 return array( … … 99 96 } 100 97 101 protected function _access_connect_guides() 98 protected function _access_connect_guides(): array 102 99 { 103 100 return array( 104 101 'id_cliente' => $this->id_client, 105 102 '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 115 112 { 116 113 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 125 121 { 126 122 return self::call_soap(__FUNCTION__); … … 133 129 * @throws \Exception 134 130 */ 135 public function Cotizador_cotizar( array $params)131 public function Cotizador_cotizar($params): mixed 136 132 { 137 133 $body = array( … … 147 143 * @throws \Exception 148 144 */ 149 public function Recaudos_consultar( array $params)145 public function Recaudos_consultar($params): mixed 150 146 { 151 147 $body = array( … … 161 157 * @throws \Exception 162 158 */ 163 public function Recogidas_programar( array $params)159 public function Recogidas_programar($params): mixed 164 160 { 165 161 $body = array( … … 175 171 * @throws \Exception 176 172 */ 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()); 229 220 return $this->call_soap(__FUNCTION__, $body); 230 221 } … … 235 226 * @throws \Exception 236 227 */ 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 { 289 250 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 } 290 275 $data = $client->$name_function($params); 291 292 276 $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; 296 278 }catch (\Exception $exception){ 297 279 throw new \Exception($exception->getMessage()); 298 280 } 299 281 } 282 283 private function encrypt_password(string $password): string 284 { 285 return preg_match("/^([a-f0-9]{64})$/", $password) ? $password : hash('sha256', $password); 286 } 300 287 } -
shipping-coordinadora-woocommerce/trunk/readme.txt
r2966741 r3076527 4 4 Tags: commerce, e-commerce, commerce, WordPress ecommerce, store, sales, sell, shop, shopping, cart, checkout, configurable, Colombia, coordinadora 5 5 Requires at least: 6.0 6 Tested up to: 6. 3.17 Requires PHP: 7.1.08 Stable tag: 3.0.2 86 Tested up to: 6.5.2 7 Requires PHP: 8.1 8 Stable tag: 3.0.29 9 9 License: GNU General Public License v3.0 10 10 License URI: http://www.gnu.org/licenses/gpl-3.0.html … … 51 51 == Changelog == 52 52 53 = 1.0.0 =54 * Initial stable release55 = 1.0.1 =56 * Fixed when the shipment is enabled57 = 1.0.2 =58 * Update readme and add image screenshot-3.png59 = 1.0.3 =60 * Requiere enable Woocommerce plugin61 = 1.0.4 =62 * Fixed create database hook activation63 = 1.0.5 =64 * Fixed of name city shop65 = 1.0.6 =66 * Fixed name formatted name city shop67 = 1.0.7 =68 * Fixed save database69 = 1.0.8 =70 * Added new configurations71 = 1.0.9 =72 * Added day estimate73 = 1.0.10 =74 * Fixed code account75 = 1.0.11 =76 * Fixed space tag77 = 1.0.12 =78 * Fixed test guide79 = 1.0.13 =80 * Add require licence full version81 = 1.0.14 =82 * Added hidden passwords83 = 1.0.15 =84 * Fixed admin notices85 = 1.0.16 =86 * Updated readme version Woocommerce87 = 1.0.17 =88 * Fixed file sweetAlert89 = 1.0.18 =90 * Refactor require openssl91 = 1.0.19 =92 * Updated readme version wordpress93 = 1.0.20 =94 * Fixed enviroment production95 = 1.0.21 =96 * Added custom field value declaration97 = 1.0.22 =98 * Added div payment agreement99 = 1.0.23 =100 * Added value default for div101 = 1.0.24 =102 * Added reduce shipping cost for more than one product of the same type103 = 1.0.25 =104 * Fixed SSL tracing105 = 1.0.26 =106 * Added for shipping zones107 = 1.0.27 =108 * Updated readme for version php109 = 1.0.28 =110 * Added documentation111 = 1.0.29 =112 * Updated readme113 = 1.0.30 =114 * Updated kilos rules115 = 1.0.31 =116 * Refactor get weigth end117 = 1.0.32 =118 * Added weight max119 = 1.0.33 =120 * Fixed undefined cart_prods121 = 1.0.34 =122 * Updated use ceil weigth123 = 1.0.35 =124 * Fixed div settings125 = 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 weight129 = 1.0.38 =130 * Fixed clean city131 = 1.0.39 =132 * Updated install plugin departamentos-y-ciudades-de-colombia-para-woocommerce133 = 1.0.40 =134 * Fixed generate guide city Bogotá D.C135 = 1.0.41 =136 * Fixed generate guide in production137 = 1.0.42 =138 * Updated wp compatible version139 = 1.0.43 =140 * Updated generate guides free shipping141 = 1.0.44 =142 * Updated round shipping value143 = 1.0.45 =144 * Updated type input145 = 1.0.46 =146 * Added custom price variation147 = 1.0.47 =148 * Updated guide params149 = 1.0.48 =150 * Added apply_filter coordinadora_shipping_calculate_cost151 = 1.0.49 =152 * Added apply_filter coordinadora_shipping_settings153 = 1.0.50 =154 * Fixed ceil weight155 = 1.0.51 =156 * Fixed apply_filter coordinadora_shipping_calculate_cost157 = 1.0.52 =158 * Fixed calculate_shipping159 = 2.0.0 =160 * Added generate labels161 = 2.0.1 =162 * Updated "observaciones" guide, parameter sku and quantity163 = 2.0.2 =164 * Updated generate guide test165 = 2.0.3 =166 * Fixed generate guide167 = 2.0.4 =168 * Refactor update_cities169 = 2.0.5 =170 * Refactor method title171 = 2.0.6 =172 * generate guides free shipping173 = 2.0.7 =174 * Added button "Ver rótulo"175 = 2.0.8 =176 * Refactor notifications guide177 = 2.0.9 =178 * Updated disabled wp_schedule_event179 = 2.0.10 =180 * Compatibility with version 5.5 of wordpress and added apply_filter shipping_servientrega_get_shop181 53 = 3.0.0 = 182 54 * Added compatibility for marketplaces … … 237 109 = 3.0.28 = 238 110 * Updated readme version wordpress 111 = 3.0.29 = 112 * Upodated validate encrypt password 113 * Refactor calculate_shipping 239 114 240 115 … … 243 118 244 119 == 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 3 3 * Plugin Name: Shipping Coordinadora Woocommerce 4 4 * Description: Shipping Coordinadora Woocommerce is available for Colombia 5 * Version: 3.0.2 85 * Version: 3.0.29 6 6 * Author: Saul Morales Pacheco 7 7 * Author URI: https://saulmoralespa.com … … 19 19 20 20 if(!defined('SHIPPING_COORDINADORA_WC_CSWC_VERSION')){ 21 define('SHIPPING_COORDINADORA_WC_CSWC_VERSION', '3.0.2 8');21 define('SHIPPING_COORDINADORA_WC_CSWC_VERSION', '3.0.29'); 22 22 } 23 23
Note: See TracChangeset
for help on using the changeset viewer.