Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Проблема при вводе не существующего города #53

Open
dimsonbgg opened this issue Nov 5, 2017 · 0 comments

Comments

@dimsonbgg
Copy link

dimsonbgg commented Nov 5, 2017

Вечер добрый! Заметил странную особенность, если ввожу город "Владивосток " ( именно с пробелом после названия), то ввод города все равно осуществляется и стоимость доставки не меняется. В итоге клиент платит за доставку 100 рублей ( рассчитывает как по городу отправки), вместо положенных нескольких тысяч.
Установил плагин версии 1.3.7 - в принципе работает, ввожу пробел после города и плагин сдэк сразу же отключается.
У кого нибудь наблюдается данная проблема?!
На cdek.woodev.ru тестировал, там все работает отлично (это означает, что пора переходить на платную версию плагина?)

В логах следующая информация:
При вводе города "Владивосток " с пробелом -
[sender_city] => 169
[receiver_city] => 169
При вводе города "Владивосток" и кликнув на него из списка -
[sender_city] => 169
[receiver_city] => 288
Также, если написать город Лос анжелес или любой другой, которого нет в списке, выводит следующее -
[sender_city] => 169
[receiver_city] => 169

Спустя немного времени выяснил следующее:
В файле class-wc-shipping-edostavka.php имеется функция

private function get_receiver_city( $package ) {
		$city_origin = wc_edostavka_get_option( 'city_origin' );
		if( ! empty( $package['destination']['state_id'] ) && is_numeric( $package['destination']['state_id'] ) ) {
			return absint( $package['destination']['state_id'] );
		} elseif ( ! empty( WC()->customer->state_id ) ) {
			return absint( WC()->customer->state_id );
		} elseif( ! empty( $city_origin ) ) {
			return absint( $city_origin );
		}	
	}

Если удалить восклицательный знак во втором elseif, то плагин будет также функционировать, как и в версии 1.3.7. -при вводе неизвестного города или добавлении пробела после города плагин СДЭК будет отключаться:

private function get_receiver_city( $package ) {
		$city_origin = wc_edostavka_get_option( 'city_origin' );
		if( ! empty( $package['destination']['state_id'] ) && is_numeric( $package['destination']['state_id'] ) ) {
			return absint( $package['destination']['state_id'] );
		} elseif ( empty( WC()->customer->state_id ) ) {
			return absint( WC()->customer->state_id );
		} elseif( ! empty( $city_origin ) ) {
			return absint( $city_origin );
		}	
	}

Пока остается загадкой, как сделать проверку на ввод города, есть ли он в списке или нет.
Хмм, при данном способе опять нужно 2 раза вводить город, чтобы обновился метод...

Проверил на абсолютно чистом wordpress версии 4.8.3. и woocommerce 2.6.7 - имеется та же проблема!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant