Okay
  Public Ticket #4533872
Forcer la connexion au compte client avant l'envoi du devis
Open

Comments

  •  1
    maelle started the conversation

    Je souhaite enlever la possibilité à un client de demander un devis s'il n'est pas connecter.
    Je sais que dans les options je peux retirer la case demander mais je veux afficher un champ " connectez vous ou inscrivez-vous pour demander un devis" ça s'affiche que si le client n''est pas connecté.

  •  2,636
    WebWizards replied

    Hi Maelle,

    I believe I can provide a custom code snippet to achieve this.

    Could you clarify at what point you'd like to show that message? A couple of options:

    1. Prevent items from being added to the quote - show a pop-up when they click "Add to Quote" / "Add to Cart"

    2. Show the message in the cart - when they click "Request Custom Quote" to send the quote (this would probably be the easier approach)

     

    Let me know if you have something specific in mind about the exact flow you'd like, and I'll try to create a code snippet based on your requirements.

    Kind regards,
    Stefan

  •  1
    maelle replied

    Bonjour Stefan,

    La 2 -ème solution me semble être la meilleure option.

    A partir du moment ou le client est connecté pour demander un devis peut on récupérer toutes les informations lié à son compte dans les " conversations"

    Je m'explique si un client demande un devis s'il est déjà client je dois retourner sur son compte pour connaitre son rôle. Alors que le rôle pourrait s'afficher directement de mon coté.

    Ensuite j'ai encore un autre problème. 

    Dans mon système le client peut ajouter au panier des produits avec des prix et sans prix. J'aimerai que le prix s'affiche dans la conversation du client quand le produit a le prix, et aussi dans le mail que l'on recoit qui ce même mail devrait être envoyé automatiquement au client avec les détails de sa demande de devis et le prix qui s'affiche sur le produit qui à le prix l'autre produit sans prix on laisse comme cela. 

    Ensuite quand je met mon offre sur le produit qui n'a pas de prix en rajoutant les frais de livraison.

    Attached files:  tuto-explication-devis.png
      TUTO-2.png
      TUTO-3.png
      TUTO-4.png

  •  1
    maelle replied

    Voici ce que le client recois après de son coté.

    Ca ne va pas...

    Attached files:  tuto.pdf

  •  2,636
    WebWizards replied

    Thank you for clarifying,

    (1) To show a message and prevent logged out users from requesting a quote, you can add this PHP code snippet:

    add_action('wp_footer', function() {
        if (is_user_logged_in()) {
            return; // Do nothing for logged-in users
        }
        ?>
        <script>
        (function($) {
            $(document).ready(function() {
                var $btn = $('#b2bking_request_custom_quote_button');
                
                // Change button text
                $btn.text('Log in or register to request a quote');
                
                // Remove existing handlers and add our own
                $('body').off('click', '#b2bking_request_custom_quote_button');
                
                $('body').on('click', '#b2bking_request_custom_quote_button', function(e) {
                    e.preventDefault();
                    e.stopPropagation();
                    e.stopImmediatePropagation();
                    
                    // Redirect to login page optionally
                   // window.location.href = '<?php echo esc_url(wp_login_url(get_permalink())); ?>';
                });
            });
        })(jQuery);
        </script>
        <?php
    }, 999); 

     

    This will result in the cart displaying as follows for a logged out user:

    1905621613.png

    We can make minor adjustments to how this works if needed, just let me know.

     

    (2) To show the user's group in the backend conversation panel, please update B2BKing to the attached version, I just added a hook to allow us to do this.

    Then add this PHP snippet:

    add_action('b2bking_backend_conversation_after_user', function($user, $conversationid){
    	$userobj = get_user_by('login', $user);
    	if ($userobj && isset($userobj->ID)){
    		$user_id = $userobj->ID;
    		$is_b2b = get_user_meta($user_id, 'b2bking_b2buser', true);
    		?>
    		<div style="font-size:20px">
    		<?php
    		if ($is_b2b === 'yes'){
    			$group = get_user_meta($user_id,'b2bking_customergroup', true);
    			$group_name = get_the_title($group);
    			echo 'User group: <strong>'.esc_html($group_name).'</strong>';
    		} else {
    			echo 'User group: <strong>B2C User</strong>';
    		}
    		?></div><?php
    	}
    }, 10, 2);

    You will then see the user group here in the middle:

    6125851861.png

     

    (3) To add the price to the quote/email, add this PHP snippet:

    add_filter('b2bking_quote_item_cart', function($message, $values){
    	$product =  wc_get_product( $values['data']->get_id());
    	if( $product->is_on_sale() ) {
    		$product_price = $product->get_sale_price();
    	} else {
    		$product_price = $product->get_price();	
    	}
    
    	if (floatval($product_price) > 0 ){
    		$message .= '  - '.esc_html__('Price: ','b2bking').wc_price($product_price).'<br>';
    	}
    
    	return $message;
    }, 10, 2);

    It will result in:

    3800243373.png

    8112381961.png

     

    (4) I am not sure if I understood your last request correctly,

    Is the problem that you are trying to add a shipping cost but not sure how to do it?

    Or is the issue that you are trying to remove that 'economisez $123' text?

    6603698755.png

     

    Kind regards,

    Stefan

     

  •   WebWizards replied privately