• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

как сделать чтобы для физ и юр лиц была разная оплата?

llelikys

Новичок
Перерыл весь интернет, но так и не нашел решения :(

По любому кто-то да решал подобное: как сделать чтобы на странице оформления заказа для физ и юр лиц выводились разные способы оплаты

Суть проблемы:
для оплаты физ лицами - показывать выбор только онлайн оплата через сайт
для оплаты юр лицами - показывать выбор только оплата по счету (который потом менеджер сделает и пришлет)

Сделал radio кнопки с разделением на юр лиц и физ лиц и зависимость нужных полей в зависимости от этого выбора через плагин WooCommerce Checkout Field Editor (Manager) Pro

А вот как теперь скрывать или показывать способы оплаты в зависимости от выбранного не могу найти и придумать как это можно сделать

Может кто подскажет?
Понимаю, что можно написать код, который будет в зависимости от выбранного скрывать или показывать, но все, что не находил не срабатывает.
 

joy66

Опытный
Лукавите, говоря "Перерыл весь интернет" )))
"Скрыть и показывать" в данном случае самое простое что нужно сделать

 

llelikys

Новичок
Видел это решение, это прям глобальное решение...и как там говориться в самом начале: "Естественно данный выбор будет влиять на множество аспектов самого процесса заказа и прочих функций WC." чего не хотелось бы, так как может что-то пойти не так и я не смогу найти проблему, так как не программист.

Пробовал приделать к моему варианту последний кусок кода из приведенного примера, но там все идет в связке и не заработало у меня, точнее не хватило знаний в нем разобраться. В любом случае спасибо за наводку

Я ищу решение попроще...
У меня уже сделаны необходимые поля через плагин. Осталось как-то заставить прятаться способы оплаты в зависимости от выбранного поля.
 

Вложения

  • 2024-04-21_065010.png
    2024-04-21_065010.png
    85.8 KB · Просмотры: 2

llelikys

Новичок
как оформлено в коде это
 

Вложения

  • 2024-04-21_070543.png
    2024-04-21_070543.png
    21.6 KB · Просмотры: 1
  • 2024-04-21_072806.png
    2024-04-21_072806.png
    22.7 KB · Просмотры: 2

joy66

Опытный
вот код.
только я не увидел в скринах метода оплаты для юр лиц.
в коде ниже предполагаю, что это штатный метод Перевод на расчетный счет bacs

Код:
///////скрытие методов оплаты для физ лица////
add_filter( 'woocommerce_available_payment_gateways', 'kvk_field_cheque_payment_method', 20, 1);
function kvk_field_cheque_payment_method( $gateways ){
if( !is_admin() ) {
    foreach( $gateways as $gateway_id => $gateway ) {

        if( WC()->session->get( 'is_company' ) ){
            unset( $gateways['cod'] );
            unset( $gateways['bspb'] );

        } else {
            unset( $gateways['bacs'] );
        }
    }
    return $gateways;
}
}

add_action( 'wp_ajax_kvk_nummer', 'get_ajax_kvk_nummer' );
add_action( 'wp_ajax_nopriv_kvk_nummer', 'get_ajax_kvk_nummer' );
function get_ajax_kvk_nummer() {

    if ( $_POST['organisation'] == 'Юридическое лицо' ){
        WC()->session->set('is_company', '1');
    } else {
        WC()->session->set('is_company', '0');
    }
    die();
}

// The jQuery Ajax request
add_action( 'wp_footer', 'checkout_kvk_fields_script' );
function checkout_kvk_fields_script() {
    // Only checkout page
    if( is_checkout() && ! is_wc_endpoint_url() ):

  
    if( WC()->session->get('is_company') ){
        WC()->session->__unset('is_company');
    }
    ?>
    <script type="text/javascript">
        jQuery( function($){
            var a = 'input[name=billing_wooccm11]';

         
            function checkKvkNummer( value ){
                 $.ajax({
                    type: 'POST',
                    url: wc_checkout_params.ajax_url,
                    data: {
                        'action': 'kvk_nummer',
                        'organisation': $('input[name=billing_wooccm11]:checked').val(),
                     
                    },
                    success: function (result) {
                        $('body').trigger('update_checkout');
                    }
                });
            }


            checkKvkNummer($(a).val());

            // On change event
            $(a).change( function () {
                checkKvkNummer($(this).val());
            });
        });
    </script>
    <?php
    endif;
}
 
Последнее редактирование:

llelikys

Новичок
"только я не увидел в скринах метода оплаты для юр лиц.
в коде ниже предполагаю, что это штатный метод Перевод на расчетный счет bacs"

Да, не указал, мой косяк. Спасибо


Да, сработало, спасибо. Но к сожалению частично...

Теперь есть такая проблема, если использовать этот код:
Если покупатель оформляет в первый раз, то все четко, показывает и скрывает все как нужно.
А вот если он второй раз хочет сделать заказ, то выбор при оформлении заказа, что он юр лицо остается, а вот способы оплаты показывает уже как физ лицу.
Если переключить на физ лицо и обратно, то срабатывает логика, но клиент этого не поймет, что надо переключить на физ лицо и обратно ...

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

Вложения

  • 2024-04-21_085803.png
    2024-04-21_085803.png
    64.4 KB · Просмотры: 2

llelikys

Новичок
пробую делать свой магаз, для себя, не коммерческий заказ, но готов доплатить за решение :)
 
Сверху Снизу