Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα σε όλους,

Αντιμετωπίζω το εξής, έχω γράψει τον κώδικα για ένα dropdown κουτί για να μπορεί ο πελάτης να επιλέγει αν θέλει να πληρώσει με δόσεις στην σελίδα προϊόντος. Το πρόβλημα μου είναι οτι μου δείχνει την τελευταία δόση ενώ θέλω να κάνω default την φράση "Το θέλεις με δόσεις;"! Όποιος έχει γνώσεις παρακαλώ ας βοηθήσει! ευχαριστώ

if (max_installment[0][0] !== undefined) {

            html = "<p><select class=\'installments-box\'> <option value=\'-1\ '>ΤΟ ΘΕΛΕΙΣ ΜΕ ΔΟΣΕΙΣ;  </option>";
            for (x=2; x <= max_installment[0][0]; x++ ) {
               if( parseInt(x) <= parseInt(max_installment[0][1])){
                    html += "<option value=\'"+x+"\'>με "+x+" "+installmentsArray[1][2];
                    html += "</optiom>"; 
                }
                else{
                    html += "<option value=\'"+x+"\'>με "+x+" "+installmentsArray[x][2];
                   if(parseFloat(installmentsArray[x][1])>1){
                        html += " - συνολικός τόκος :"+((parseFloat(current_price)*parseFloat(installmentsArray[x][1])) - parseFloat(current_price)).toFixed(2) +" €</optiom>";
                    }
                    else {
                        html += "</optiom>";
                    }
                }   
            }

Δημοσ. (επεξεργασμένο)
7 ώρες πριν, Predatorkill είπε

Μπορείς να το γράψεις για την δική μου περίπτωση;  γιατί όταν το κάνω selected μου κρασάρει! σε ευχαριστώ

Επεξ/σία από pablobuennas
Δημοσ.

Εχεις typos στον κωδικα, εκει που κλεινεις το </option> Εχεις γραψει optiom.

Οταν λες κρασαρει, τι ακριβως βγαζει; Μηπως φερνεις δεδομενα απο σερβερ;

Δημοσ.
54 λεπτά πριν, Predatorkill είπε

Εχεις typos στον κωδικα, εκει που κλεινεις το </option> Εχεις γραψει optiom.

Οταν λες κρασαρει, τι ακριβως βγαζει; Μηπως φερνεις δεδομενα απο σερβερ;

Έχεις δίκιο για τα typos τα διόρθωσα, ευχαριστώ. Βασικά όταν βάζω selected απλά δεν εμφανίζεται πλέον το κουτάκι στην σελίδα. ψάχνω για ένα υπόδειγμα για την δική μου περίπτωση για να δω κιόλας που κάνω το λάθος. Όχι δεν φέρνω από αλλού.

Δημοσ. (επεξεργασμένο)

Κάπου το χάνεις με το markup λογικά, δοκίμασε να κάνει generate το select με js .

 

var installments = document.createElement("SELECT");

installments.setAttribute("id", "installments");

for (let i=0; i<10; i++) {
      
      let optionText = "Installment " + (i + 1)
      let optionValue = "installment-" + i
      let selected = false;
      
      if(i === 0) {
        optionText = "Το θέλεις με δόσεις;"
        selected = true;
      }
      
      let installmentOptionNode = document.createElement('option');
      installmentOptionNode.setAttribute("value", optionValue);
      
      if (selected) {
        installmentOptionNode.setAttribute("selected", true);
      }
      
      let installmentTextNode = document.createTextNode(optionText);
      installmentOptionNode.appendChild(installmentTextNode);
      installments.appendChild(installmentOptionNode);
    }

    document.querySelector('.installments-box').appendChild(installments)

 

Επεξ/σία από sarakinos
Δημοσ.
5 ώρες πριν, sarakinos είπε

Κάπου το χάνεις με το markup λογικά, δοκίμασε να κάνει generate το select με js .


var installments = document.createElement("SELECT");

installments.setAttribute("id", "installments");

for (let i=0; i<10; i++) {
      
      let optionText = "Installment " + (i + 1)
      let optionValue = "installment-" + i
      let selected = false;
      
      if(i === 0) {
        optionText = "Το θέλεις με δόσεις;"
        selected = true;
      }
      
      let installmentOptionNode = document.createElement('option');
      installmentOptionNode.setAttribute("value", optionValue);
      
      if (selected) {
        installmentOptionNode.setAttribute("selected", true);
      }
      
      let installmentTextNode = document.createTextNode(optionText);
      installmentOptionNode.appendChild(installmentTextNode);
      installments.appendChild(installmentOptionNode);
    }

    document.querySelector('.installments-box').appendChild(installments)

Σε ευχαριστώ πολύ για την απάντηση σου, δυστυχώς ακόμα δεν έβγαλα άκρη... 

Δημοσ. (επεξεργασμένο)
Spoiler

 

//========= Installments in product page ======
add_action( 'woocommerce_before_add_to_cart_form', 'add_installments_single_page' );

function add_installments_single_page() {

    global $product;
    $thePrice = $product->get_price();
    $categories = get_the_terms( $product->ID, 'product_cat' );
    $currentCategory =  array();
    foreach ( $categories as $category ) {
        array_push($currentCategory,$category->name);
    }
    $currentCategory = join(',', $currentCategory);
    $currentBrand = get_the_term_list( $product->ID, 'yith_product_brand', '', '' );
    $currentBrand = strip_tags( $currentBrand );
    $currentSKU = $product->get_sku();
    //$a = get_option( 'woocommerce_modirum_settings' );
    $query = new WP_Query(array(
        'post_type' => 'product-installment',
        'post_status' => 'publish',
        'posts_per_page' => -1
    ));

    $DATAarray = array(); 
    while ($query->have_posts()) {
        $query->the_post();
        $post_id = get_the_ID();
        

        if ( empty(preg_replace('/\s+/', '', get_post_meta( $post_id, 'installments', true )) ) ){ 
            $installments = "0";
        } 
        else {
            $installments =preg_replace('/\s+/', '', get_post_meta( $post_id, 'installments', true ));
        }
        
        if ( empty(preg_replace('/\s+/', '', get_post_meta( $post_id, 'installments_free_rate', true )) ) ){ 
            $installments_free_rate = "0";
        } 
        else {
            $installments_free_rate =preg_replace('/\s+/', '', get_post_meta( $post_id, 'installments_free_rate', true ));
        }
        
        
        if ( empty(preg_replace('/\s+/', '', get_post_meta( $post_id, 'starting_price', true )) ) ){ 
            $starting_price = 0;
        } 
        else {
            $starting_price =preg_replace('/\s+/', '', get_post_meta( $post_id, 'starting_price', true ));
        }
        
        if ( empty(preg_replace('/\s+/', '', get_post_meta( $post_id, 'end_price', true )) ) ){ 
            $end_price = 0;
        } 
        else {
            $end_price =preg_replace('/\s+/', '', get_post_meta( $post_id, 'end_price', true ));
        }
        
        
        $installment_rule = array(
            "installments" => $installments,
            "installments_free_rate" => $installments_free_rate,
            "starting_price" => $starting_price,
            "end_price" => $end_price,
            "included_skus" => preg_replace('/\s+/', '', get_post_meta( $post_id, 'included_skus', true )),
            "included_categories" => preg_replace('/\s+/', '', get_post_meta( $post_id, 'included_categories', true )),
            "included_manufacturers" => preg_replace('/\s+/', '', get_post_meta( $post_id, 'included_manufacturers', true )),
            "excluded_skus" => preg_replace('/\s+/', '', get_post_meta( $post_id, 'excluded_skus', true )),
            "excluded_categories" => preg_replace('/\s+/', '', get_post_meta( $post_id, 'excluded_categories', true )),
            "excluded_manufacturers" => preg_replace('/\s+/', '', get_post_meta( $post_id, 'excluded_manufacturers', true ))
        );

        array_push($DATAarray, $installment_rule);
    }

    wp_reset_query();
    ?>
    <script>
    <?php
    $rulesSetArray = explode(",", get_option( 'wc_settings_tab_demo_installment_rates' ));  
    $i = 0;
    foreach ($rulesSetArray as $ruleset) {
        if($i ==0){
            echo 'var installmentsArray = [ ["0","1","Δόση"],[';
            $x = 0;
            $ruleset = explode("|", $ruleset);
            foreach($ruleset as $rule){
                if($x ==0){
                    echo '"'.$rule.'"';
                }
                else{
                    echo ','.'"'.$rule.'"';
                }
                $x++;
            }
            echo ']';
        }
        else {
            echo ',[';
            $x = 0;
            $ruleset = explode("|", $ruleset);
            foreach($ruleset as $rule){
                if($x ==0){
                    echo '"'.$rule.'"';
                }
                else{
                    echo ','.'"'.$rule.'"';
                }
                $x++;
            }
            echo ']';
        }
        $i++;
    }
    echo '];';
    ?>
    

    var product_installment = [];   
    var current_category = "<?php echo $currentCategory ?>"; 
    var current_brand = "<?php echo  $currentBrand ?>"; 
    var current_sku = "<?php echo  $currentSKU ?>"; 
    var current_price = <?php echo $thePrice ?>;
    var html = "";   
    var products = [];
    /*
        var installmentsArray = [
        [0,1],
        [1,1],
        [2,1],
        [3,1],
        [4,1],
        [5,1],
        [6,1],
        [7,1],
        [8,1],
        [9,1],
        [10,1.0341],
        [11,1.0365],
        [12,1.0389],
        [13,1.0413],
        [14,1.0437],
        [15,1.0461],
        [16,1.0485],
        [17,1.0509],
        [18,1.0533],
        [19,1.0558],
        [20,1.0582],
        [21,1.0606],
        [22,1.063],
        [23,1.0655],
        [24,1.0679],
        [25,1.0704],
        [26,1.0728],
        [27,1.0753],
        [28,1.0777],
        [29,1.0802],
        [30,1.0826],
        [31,1.0851],
        [32,1.0876],
        [33,1.09],
        [34,1.0925],
        [35,1.095],
        [36,1.0975],
        [37,1.0999],
        [38,1.1024],
        [39,1.1049],
        [40,1.1074],
        [41,1.1099],
        [42,1.1124],
        [43,1.1149],
        [44,1.1174],
        [45,1.12],
        [46,1.1225],
        [47,1.125],
        [48,1.1275]
    ];    
    */
        products = <?php echo json_encode($DATAarray)?>;

        for (var i = 0; i < products.length; i++) {  

            var exclude = false;  
            var include = false;  
            var starting_price = products.starting_price;  
            var end_price = products.end_price;  
            var includedP = products.included_skus.split(",");  
            var includedC = products.included_categories.split(",");  
            var includedCurrentCategory = false; 
            for (var j = 0; j < current_category.split(",").length; j++) { 
                if(includedC.indexOf(current_category.split(",")[j]) > -1) includedCurrentCategory = true; 
            } 
            var includedM = products.included_manufacturers.split(",");  
            var excludedP = products.excluded_skus.split(",");  
            var excludedC = products.excluded_categories.split(",");  
            var excludedM = products.excluded_manufacturers.split(",");  
            var excludedCurrentCategory = false;  
            for (var j = 0; j < current_category.split(",").length; j++) {  
                if(excludedC.indexOf(current_category.split(",")[j]) > -1) excludedCurrentCategory = true;  
            }  

            if (excludedP.indexOf(current_sku) > -1 || excludedM.indexOf(current_brand) > -1 || excludedCurrentCategory == true || parseFloat(current_price) < parseFloat(starting_price) && parseFloat(starting_price) != 0 || parseFloat(current_price) > parseFloat(end_price) && parseFloat(end_price) != 0) exclude = true;
            
            if (includedP == "" && includedM == "" && includedCurrentCategory == false && parseFloat(current_price) >= parseFloat(starting_price) && parseFloat(current_price) <= parseFloat(end_price) || includedP.indexOf(current_sku) > -1 || includedM.indexOf(current_brand) > -1 || includedCurrentCategory == true )include = true;
        
            if (!exclude && include) {
                product_installment.push([products.installments,products.installments_free_rate]);
            }  

        }  
        
        //max_installment = product_installment.sort(function(a, b){return b-a})[0];
        
        var max_installment = product_installment.sort(sortFunction);
        var max_installment_free_rate = max_installment[0][1];
        function sortFunction(a, b) {
            if (a[0] === b[0]) {
                return 0;
            }
            else {
                return (a[0] < b[0]) ? -1 : 1;
            }
        }
       
    if (max_installment[0][0] !== undefined) {

            html = "<p><select class=\'installments-box\'> <option value='\-1\'>ΤΟ ΘΕΛΕΙΣ ΜΕ ΔΟΣΕΙΣ; </option>";
            for (x=2; x <= max_installment[0][0]; x++ ) {
               if( parseInt(x) <= parseInt(max_installment[0][1])){
                    html += "<option value=\'"+x+"\'>με "+x+" "+installmentsArray[1][2];
                    html += "</option>"; 
                }
                else{
                    html += "<option value=\'"+x+"\'>με "+x+" "+installmentsArray[x][2]
                   if(parseFloat(installmentsArray[x][1])>1){
                        html += " - συνολικός τόκος :"+((parseFloat(current_price)*parseFloat(installmentsArray[x][1])) - parseFloat(current_price)).toFixed(2) +" €</option>";
                    }
                    else {
                        html += "</option>";
                    }
                }   
            }
            html += "</select></p>";  
            jQuery(".product-info .price-wrapper").append(html);  
            jQuery(".installments-box option[value=\'"+max_installment[0][0]+"\']").prop("selected", true);  

            jQuery("p.product-page-price").append("<span class=\'installments-label\'></span>");  
            calculateInstallments(max_installment[0][0], max_installment_free_rate, installmentsArray);  

            jQuery(".installments-box").change(function() { 
                calculateInstallments(jQuery(this).val(), max_installment_free_rate, installmentsArray);  
            });  
        }  

    function calculateInstallments(selectedInstallment, max_installment_free_rate, installmentsArray){  
        if(selectedInstallment == -1){jQuery(".installments-label").hide();}  
        else {  
            jQuery(".installments-label").show();  
        
            if(parseInt(selectedInstallment) <= parseInt(max_installment_free_rate)){
                jQuery(".installments-label").html("ή με "+(parseFloat(current_price)/parseFloat(selectedInstallment )).toFixed(2)+"<span class=\'woocommerce-Price-currencySymbol\'>€</span>/μήνα</span>");
            }
            else{
                jQuery(".installments-label").html("ή με "+( (parseFloat(current_price)*parseFloat(installmentsArray[selectedInstallment][1])) /parseFloat(selectedInstallment )).toFixed(2)+"<span class='woocommerce-Price-currencySymbol'>€</span>/μήνα</span>"); 
            }
            
        }  
    }  


    
    
    </script>
    <?php
    
    return true;

}

//========== INSTALLMENTS IN CHECKOUT ======
//===========  1) set the installment selectbox  ================ 

add_action( 'woocommerce_after_checkout_form', 'add_installments_checkout' );
 
function add_installments_checkout() {
    if (is_checkout()) {
        global $woocommerce;
        //$total = $woocommerce->cart->total;
        $totalSKUs = array();
        $totalCategories = array();
        $totalBrands = array();
       
        
        foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
            $product = new WC_product($cart_item['product_id']);
            $categories = get_the_terms( $cart_item['product_id'], 'product_cat' ); //get taxonomy of the products
            $currentCategory =  array();
            foreach ( $categories as $category ) {
                array_push($currentCategory,$category->name);
            }
            $currentCategory = join(',', $currentCategory);    
            $currentBrand = get_the_term_list( $cart_item['product_id'], 'yith_product_brand', '', '' );
            $currentBrand = strip_tags( $currentBrand );
            $currentSKU = $product->get_sku();
            
            
            array_push($totalSKUs,$currentSKU);
            array_push($totalCategories,$currentCategory);
            array_push($totalBrands,$currentBrand);
        }

        
        //====   GET INSTALLMENT RULES ===
        $query = new WP_Query(array(
            'post_type' => 'product-installment',
            'post_status' => 'publish',
            'posts_per_page' => -1
        ));

        $DATAarray = array(); 
        while ($query->have_posts()) {
            $query->the_post();
            $post_id = get_the_ID(-1);
            

            if ( empty(preg_replace('/\s+/', '', get_post_meta( $post_id, 'installments', true )) ) ){ 
                $installments = 0;
            } 
            else {
                $installments =preg_replace('/\s+/', '', get_post_meta( $post_id, 'installments', true ));
            }
            
            if ( empty(preg_replace('/\s+/', '', get_post_meta( $post_id, 'installments_free_rate', true )) ) ){ 
                $installments_free_rate = 0;
            } 
            else {
                $installments_free_rate =preg_replace('/\s+/', '', get_post_meta( $post_id, 'installments_free_rate', true ));
            }
            
            if ( empty(preg_replace('/\s+/', '', get_post_meta( $post_id, 'starting_price', true )) ) ){ 
                $starting_price = 0;
            } 
            else {
                $starting_price =preg_replace('/\s+/', '', get_post_meta( $post_id, 'starting_price', true ));
            }
            
            if ( empty(preg_replace('/\s+/', '', get_post_meta( $post_id, 'end_price', true )) ) ){ 
                $end_price = 0;
            } 
            else {
                $end_price =preg_replace('/\s+/', '', get_post_meta( $post_id, 'end_price', true ));
            }
            
            
            $installment_rule = array(
                "installments" => $installments,
                "installments_free_rate" => $installments_free_rate,
                "starting_price" => $starting_price,
                "end_price" => $end_price,
                "included_skus" => preg_replace('/\s+/', '', get_post_meta( $post_id, 'included_skus', true )),
                "included_categories" => preg_replace('/\s+/', '', get_post_meta( $post_id, 'included_categories', true )),
                "included_manufacturers" => preg_replace('/\s+/', '', get_post_meta( $post_id, 'included_manufacturers', true )),
                "excluded_skus" => preg_replace('/\s+/', '', get_post_meta( $post_id, 'excluded_skus', true )),
                "excluded_categories" => preg_replace('/\s+/', '', get_post_meta( $post_id, 'excluded_categories', true )),
                "excluded_manufacturers" => preg_replace('/\s+/', '', get_post_meta( $post_id, 'excluded_manufacturers', true ))
            );

            array_push($DATAarray, $installment_rule);
        }

        wp_reset_query();
        //===============================
        
        ?>
        <script>
        jQuery( document ).ajaxComplete(function() {
            checkoutSelector();
            checkoutNextValidator();
            document.getElementById("argmc-next").disabled = false;
        });
        
        //jQuery( "#argmc-next, .argmc-tab-item " ).on( "click", checkoutSelector );
        function checkoutNextValidator(){
            jQuery('#shipping_method input, #payment input').on('click',function(){
                 document.getElementById("argmc-next").disabled = true;
            });
        }
        
        function checkoutSelector(){
            var    totalSKUs = <?php echo json_encode($totalSKUs); ?>;
            var totalCategories = <?php echo json_encode($totalCategories); ?>;
            var totalBrands = <?php echo json_encode($totalBrands); ?>;

            if (!isNaN(parseFloat(jQuery('.fee .woocommerce-Price-amount').first().text().replace('€','')))){
                var current_price = parseFloat(parseFloat(jQuery('.order-total .woocommerce-Price-amount').first().text().replace(',','').replace('€','')) - parseFloat(jQuery('.fee .woocommerce-Price-amount').first().text().replace('€',''))).toFixed(2);
            }
            else {
                 var current_price = parseFloat(jQuery('.order-total .woocommerce-Price-amount').first().text().replace(',','').replace('€','')).toFixed(2);
            }
            
            var cart_installment = []; 
            var cart_installment_free_rate = [];             
            var html = "";  
            for (var x = 0; x < totalSKUs.length; x++) {    
                var current_category = totalCategories[x]; 
                var current_brand = totalBrands[x];                
                var current_sku = totalSKUs[x]; 
                var products = [];  

                products = <?php echo json_encode($DATAarray); ?>;
                for (var i = 0; i < products.length; i++) {  

                    var exclude = false;  
                    var include = false;  
                    var starting_price = products.starting_price;  
                    var end_price = products.end_price;  
                    var includedP = products.included_skus.split(",");  
                    var includedC = products.included_categories.split(",");  
                    var includedCurrentCategory = false; 
                    for (var j = 0; j < current_category.split(",").length; j++) { 
                        if(includedC.indexOf(current_category.split(",")[j]) > -1) includedCurrentCategory = true; 
                    } 
                    var includedM = products.included_manufacturers.split(",");  
                    var excludedP = products.excluded_skus.split(",");  
                    var excludedC = products.excluded_categories.split(",");  
                    var excludedM = products.excluded_manufacturers.split(",");  
                    var excludedCurrentCategory = false;  
                    for (var j = 0; j < current_category.split(",").length; j++) {  
                        if(excludedC.indexOf(current_category.split(",")[j]) > -1) excludedCurrentCategory = true;  
                    }  

                    if (excludedP.indexOf(current_sku) > -1 || excludedM.indexOf(current_brand) > -1 || excludedCurrentCategory == true || parseFloat(current_price) < parseFloat(starting_price) && parseFloat(starting_price) != 0 || parseFloat(current_price) > parseFloat(end_price) && parseFloat(end_price) != 0) exclude = true;
            
                    if (includedP == "" && includedM == "" && includedCurrentCategory == false && parseFloat(current_price) >= parseFloat(starting_price) && parseFloat(current_price) <= parseFloat(end_price) || includedP.indexOf(current_sku) > -1 || includedM.indexOf(current_brand) > -1 || includedCurrentCategory == true )include = true;

                    if (!exclude && include) {
                        cart_installment.push(products.installments);
                        cart_installment_free_rate.push(products.installments_free_rate)
                    }  

                }  
            }
            
            
            
            max_installment = cart_installment.sort(function(a, b){return b-a})[0];
            max_installment_free_rate = cart_installment_free_rate.sort(function(a, b){return b-a})[0];
            
            if (max_installment === undefined) {
                setInstallmentsCheckout (0,0,current_price);
            }
            else{
               setInstallmentsCheckout (max_installment,max_installment_free_rate,current_price);
            } 
            
            jQuery(".payment_method_winbnk select").change(function(){
                Cookies.remove('checkout_installments');
                Cookies.set('checkout_installments', jQuery('.payment_method_winbnk select option:selected').val(), { path: '/'});
                
                Cookies.remove('checkout_installments_fee');
                Cookies.set('checkout_installments_fee', jQuery('.payment_method_winbnk select option:selected').attr('data-additional-fee'), { path: '/'});
                
                jQuery('body').trigger('update_checkout');
            }); 
        }
        
        
        function setInstallmentsCheckout (max_installment,max_installment_free_rate,current_price){     
            if(max_installment == 0){jQuery(".payment_box.payment_method_winbnk").hide();}  
            else {  
                jQuery(".payment_box.payment_method_winbnk").show();  

                var html = '';
                
                html += '<option value="0" data-additional-fee="0" >Επιλέξτε τις Δόσεις</option>';
                
                
                <?php
                    $rulesSetArray = explode(",", get_option( 'wc_settings_tab_demo_installment_rates' ));  
                    $i = 0;
                    foreach ($rulesSetArray as $ruleset) {
                        if($i ==0){
                            echo 'var installmentsArray = [ ["0","1","Δόση"],[';
                            $x = 0;
                            $ruleset = explode("|", $ruleset);
                            foreach($ruleset as $rule){
                                if($x ==0){
                                    echo '"'.$rule.'"';
                                }
                                else{
                                    echo ','.'"'.$rule.'"';
                                }
                                $x++;
                            }
                            echo ']';
                        }
                        else {
                            echo ',[';
                            $x = 0;
                            $ruleset = explode("|", $ruleset);
                            foreach($ruleset as $rule){
                                if($x ==0){
                                    echo '"'.$rule.'"';
                                }
                                else{
                                    echo ','.'"'.$rule.'"';
                                }
                                $x++;
                            }
                            echo ']';
                        }
                        $i++;
                    }
                    echo '];';
                ?>
                /*
                var installmentsArray = [
                    //[0,1],
                    //[1,1],
                    //[2,1],
                    //[3,1],
                    //[4,1],
                    //[5,1],
                    //[4,1.0199],
                    //[5,1.0222],
                    //[6,1.0246],
                    //[7,1.027],
                    //[8,1.0293],
                    //[9,1.0317],
                    
                    [0,1],
                    [1,1],
                    [2,1],
                    [3,1],
                    [4,1],
                    [5,1],
                    [6,1],
                    [7,1],
                    [8,1],
                    [9,1],
                    [10,1.0341],
                    [11,1.0365],
                    [12,1.0389],
                    [13,1.0413],
                    [14,1.0437],
                    [15,1.0461],
                    [16,1.0485],
                    [17,1.0509],
                    [18,1.0533],
                    [19,1.0558],
                    [20,1.0582],
                    [21,1.0606],
                    [22,1.063],
                    [23,1.0655],
                    [24,1.0679],
                    [25,1.0704],
                    [26,1.0728],
                    [27,1.0753],
                    [28,1.0777],
                    [29,1.0802],
                    [30,1.0826],
                    [31,1.0851],
                    [32,1.0876],
                    [33,1.09],
                    [34,1.0925],
                    [35,1.095],
                    [36,1.0975],
                    [37,1.0999],
                    [38,1.1024],
                    [39,1.1049],
                    [40,1.1074],
                    [41,1.1099],
                    [42,1.1124],
                    [43,1.1149],
                    [44,1.1174],
                    [45,1.12],
                    [46,1.1225],
                    [47,1.125],
                    [48,1.1275]
                ];
                */
                for(z=2;z<=max_installment;z++)
                {
                    /*if (z < 4) html += '<option value="'+z+'">'+z+' Άτοκες Δόσεις ( '+z+' X '+(parseFloat(current_price)/parseFloat(z)).toFixed(2)+')</option>';
                    if (z < 10) html += '<option value="'+z+'">'+z+' Άτοκες Δόσεις ( '+z+' X '+(parseFloat(current_price)/parseFloat(z)).toFixed(2)+')</option>';
                    else html += '<option value="'+z+'">'+z+' Έντοκες Δόσεις ( '+z+' X '+((parseFloat(current_price)*parseFloat(installmentsArray[z][1]))/parseFloat(z)).toFixed(2)+') - Συνολικός Τόκος: '+((parseFloat(current_price)*parseFloat(installmentsArray[z][1])) - parseFloat(current_price)).toFixed(2)+'€</option>';
                    */
                    if(parseInt(z)<=parseInt(max_installment_free_rate)){
                        html += '<option value="'+z+'" data-additional-fee="0">'+z+' '+installmentsArray[1][2];
                        html += ' ( '+z+' X '+(parseFloat(current_price)/parseFloat(z)).toFixed(2)+')</optiom>';
                    }
                    else{
                        html += '<option value="'+z+'" data-additional-fee="'+((parseFloat(current_price)*parseFloat(installmentsArray[z][1])) - parseFloat(current_price)).toFixed(2)+'">'+z+' '+installmentsArray[z][2];
                        
                        
                        if(parseFloat(installmentsArray[z][1])>1){
                            html += ' ( '+z+' X '+((parseFloat(current_price)*parseFloat(installmentsArray[z][1]))/parseFloat(z)).toFixed(2)+') - Συνολικός Τόκος: '+((parseFloat(current_price)*parseFloat(installmentsArray[z][1])) - parseFloat(current_price)).toFixed(2)+'€</option>';
                        }
                        else {
                            html += ' ( '+z+' X '+(parseFloat(current_price)/parseFloat(z)).toFixed(2)+')</option>';
                        } 
                    
                    }

                }
                
                jQuery(".payment_method_winbnk select").html(html);

                if(!jQuery(".payment_method_winbnk select").hasClass('update_totals_on_change')) jQuery(".payment_method_winbnk select").addClass('update_totals_on_change');
                
                jQuery('.payment_method_winbnk select option[value="'+Cookies.get("checkout_installments")+'"]').attr('selected', 'selected');

            }  
        } 
        
        </script> 
        <?php
        
        return true;
    }
}
     

//=============  2) action to add the fee  ============ 
add_action( 'woocommerce_cart_calculate_fees', 'add_checkout_fee_for_pay_with_installments' );
function add_checkout_fee_for_pay_with_installments(){
    
    
    global $woocommerce;

    $chosen_gateway = $woocommerce->session->chosen_payment_method;
    $instalments = $_COOKIE['checkout_installments'];
    $instalments_fee = floatval($_COOKIE['checkout_installments_fee']);
    
    if ( $chosen_gateway == 'winbnk' ) {
        
        
        $fee = 0;
        $subtotal = WC()->cart->subtotal;
        $shipping = WC()->cart->shipping_total;
        $new_subtotal = $subtotal + $shipping;

        /*
        $installmentsArray = array
          (
            array(0,1),
            array(1,1),
            array(2,1),
            array(3,1),
            array(4,1),
            array(5,1),
            array(6,1),
            array(7,1),
            array(8,1),
            array(9,1),
            array(10,1.0341),
            array(11,1.0365),
            array(12,1.0389),
            array(13,1.0413),
            array(14,1.0437),
            array(15,1.0461),
            array(16,1.0485),
            array(17,1.0509),
            array(18,1.0533),
            array(19,1.0558),
            array(20,1.0582),
            array(21,1.0606),
            array(22,1.063),
            array(23,1.0655),
            array(24,1.0679),
            array(25,1.0704),
            array(26,1.0728),
            array(27,1.0753),
            array(28,1.0777),
            array(29,1.0802),
            array(30,1.0826),
            array(31,1.0851),
            array(32,1.0876),
            array(33,1.09),
            array(34,1.0925),
            array(35,1.095),
            array(36,1.0975),
            array(37,1.0999),
            array(38,1.1024),
            array(39,1.1049),
            array(40,1.1074),
            array(41,1.1099),
            array(42,1.1124),
            array(43,1.1149),
            array(44,1.1174),
            array(45,1.12),
            array(46,1.1225),
            array(47,1.125),
            array(48,1.1275)
          );
        */
        if ($instalments >1) {

            //$fee = round((($new_subtotal*$installmentsArray[$instalments][1]) - $new_subtotal), 2);
            $fee = $instalments_fee;
            if ($fee > 0) {
                $woocommerce->cart->add_fee( 'Κόστος επιτοκίου', $fee, true, 'standard' );
            }
            
        }
    }
    
    
}

function normalizeGreek($text) {
   $a = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'Ā', 'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ', 'ĉ', 'Ċ', 'ċ', 'Č', 'č', 'Ď', 'ď', 'Đ', 'đ', 'Ē', 'ē', 'Ĕ', 'ĕ', 'Ė', 'ė', 'Ę', 'ę', 'Ě', 'ě', 'Ĝ', 'ĝ', 'Ğ', 'ğ', 'Ġ', 'ġ', 'Ģ', 'ģ', 'Ĥ', 'ĥ', 'Ħ', 'ħ', 'Ĩ', 'ĩ', 'Ī', 'ī', 'Ĭ', 'ĭ', 'Į', 'į', 'İ', 'ı', 'IJ', 'ij', 'Ĵ', 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', 'ľ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'Ń', 'ń', 'Ņ', 'ņ', 'Ň', 'ň', 'ʼn', 'Ō', 'ō', 'Ŏ', 'ŏ', 'Ő', 'ő', 'Œ', 'œ', 'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś', 'ś', 'Ŝ', 'ŝ', 'Ş', 'ş', 'Š', 'š', 'Ţ', 'ţ', 'Ť', 'ť', 'Ŧ', 'ŧ', 'Ũ', 'ũ', 'Ū', 'ū', 'Ŭ', 'ŭ', 'Ů', 'ů', 'Ű', 'ű', 'Ų', 'ų', 'Ŵ', 'ŵ', 'Ŷ', 'ŷ', 'Ÿ', 'Ź', 'ź', 'Ż', 'ż', 'Ž', 'ž', 'ſ', 'ƒ', 'Ơ', 'ơ', 'Ư', 'ư', 'Ǎ', 'ǎ', 'Ǐ', 'ǐ', 'Ǒ', 'ǒ', 'Ǔ', 'ǔ', 'Ǖ', 'ǖ', 'Ǘ', 'ǘ', 'Ǚ', 'ǚ', 'Ǜ', 'ǜ', 'Ǻ', 'ǻ', 'Ǽ', 'ǽ', 'Ǿ', 'ǿ', 'Ά', 'ά', 'Έ', 'έ', 'Ό', 'ό', 'Ώ', 'ώ', 'Ί', 'ί', 'ϊ', 'ΐ', 'Ύ', 'ύ', 'ϋ', 'ΰ', 'Ή', 'ή');
  $b = array('A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 's', 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'l', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', 'o', 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o', 'Α', 'α', 'Ε', 'ε', 'Ο', 'ο', 'Ω', 'ω', 'Ι', 'ι', 'ι', 'ι', 'Υ', 'υ', 'υ', 'υ', 'Η', 'η');
  return str_replace($a, $b, $text);

}

//========= 3) installments rates array =============
class WC_Settings_Tab_Demo {
    /**
     * Bootstraps the class and hooks required actions & filters.
     *
     */
    public static function init() {
        add_filter( 'woocommerce_settings_tabs_array', __CLASS__ . '::add_settings_tab', 50 );
        add_action( 'woocommerce_settings_tabs_settings_tab_demo', __CLASS__ . '::settings_tab' );
        add_action( 'woocommerce_update_options_settings_tab_demo', __CLASS__ . '::update_settings' );
    }
    
    
    /**
     * Add a new settings tab to the WooCommerce settings tabs array.
     *
     * @param array $settings_tabs Array of WooCommerce setting tabs & their labels, excluding the Subscription tab.
     * @return array $settings_tabs Array of WooCommerce setting tabs & their labels, including the Subscription tab.
     */
    public static function add_settings_tab( $settings_tabs ) {
        $settings_tabs['settings_tab_demo'] = __( 'Installments Rates', 'woocommerce-settings-tab-demo' );
        return $settings_tabs;
    }
    /**
     * Uses the WooCommerce admin fields API to output settings via the @see woocommerce_admin_fields() function.
     *
     * @uses woocommerce_admin_fields()
     * @uses self::get_settings()
     */
    public static function settings_tab() {
        woocommerce_admin_fields( self::get_settings() );
    }
    /**
     * Uses the WooCommerce options API to save settings via the @see woocommerce_update_options() function.
     *
     * @uses woocommerce_update_options()
     * @uses self::get_settings()
     */
    public static function update_settings() {
        woocommerce_update_options( self::get_settings() );
    }
    /**
     * Get all the settings for this plugin for @see woocommerce_admin_fields() function.
     *
     * @return array Array of settings for @see woocommerce_admin_fields() function.
     */
    public static function get_settings() {
        $settings = array(
            'section_title' => array(
                'name'     => __( 'Installments Rates', 'woocommerce-settings-tab-demo' ),
                'type'     => 'title',
                'desc'     => '',
                'id'       => 'wc_settings_tab_demo_section_title'
            ),
            'installment_rates' => array(
                'name' => __( 'Rules Set', 'woocommerce-settings-tab-demo' ),
                'type' => 'textarea',
                'css' => 'width:80%; height:350px;',
                'desc' => __( 'Αφήστε το κενό για να είναι όλες οι δόσεις άτοκες, αλλιώς ακολουθήστε το παρακάτω format.<br/><br/>Παράδειγμα: Αριθμός Δόσεων|Επιτόκιο|Λεκτικό  --> 12|1.24|Έντοκες Δόσεις,13|1.24|Έντοκες Δόσεις.<br/><br/>', 'woocommerce-settings-tab-demo' ),
                'id'   => 'wc_settings_tab_demo_installment_rates'
            ),
            'section_end' => array(
                 'type' => 'sectionend',
                 'id' => 'wc_settings_tab_demo_section_end'
            )
        );
        return apply_filters( 'wc_settings_tab_demo_settings', $settings );
    }
}
WC_Settings_Tab_Demo::init();

 

 

 

@sarakinos Have a go!

Επεξ/σία από pablobuennas
Λάθος
Δημοσ.

1) Βάλε και κανα spoiler γέμισε η σελίδα

2) Χωρίς παρεξήγηση , ξέρεις έστω html? Αν όχι πρέπει να μάθεις και μετά να συνεχίσεις αυτό που προσπαθείς να κάνεις

Δημοσ.
9 λεπτά πριν, tsofras είπε

1) Βάλε και κανα spoiler γέμισε η σελίδα

2) Χωρίς παρεξήγηση , ξέρεις έστω html? Αν όχι πρέπει να μάθεις και μετά να συνεχίσεις αυτό που προσπαθείς να κάνεις

Σε ευχαριστώ για τις προτάσεις!

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...