• Resolved headplus

    (@headplus)


    Διαπ?στωσα ?τι υπ?ρχει σοβαρ? πρ?βλημα στον υπολογισμ? των κιλ?ν

    Πιθανολογ? πω? υπ?ρχουν 2 σεν?ρια που δημιουργο?ν το πρ?βλημα:

    1. ? ?ταν ο πολαπλασιασμ?? αφορ? το 0. (πχ 3τεμ Χ 0,9)

    2. ? Δεν “διαβ?ζει” την υποδιαστολ? ? την τελε?α στο δεκαδικ? νο?μερο του ?βαρου?

    Το αποτ?λεσμα ε?ναι ?ταν καποιο? προσθ?σει για παραδειγμα 15τεμαχια Χ 0,30kg η χρ?ωση να μην ανεβα?νει

    Σα? Ευχαριστ? για την αν?γνωση σα?

Viewing 3 replies - 1 through 3 (of 3 total)
  • Thread Starter headplus

    (@headplus)

    Θα ?θελα συμπληρωματικ? να σα? προτε?νω αν μου επιτρ?πετε, ?πειτα απο μι? γρ?γορη ματι? στον κ?δικα σα?, να επαναδιατυπ?σετε τον κ?δικα στο τρ?πο υπολογισμο? σε ολε? στι? περιπτ?σει? β?ρου? χρησιμοποι?ντα? πιο απλ? στα functions το WC()->cart->get_cart_contents_weight(); ?ναντι αυτ?ν χρ?ζουν δι?ρθωσει?.

    Thread Starter headplus

    (@headplus)

    Σα? παραθ?τω 2 βελτιωμ?νε? αντικαταστ?σει? σε 2 functions του κ?δικα σα? που πιθαν?ν να βρε?τε χρ?σιμα:

    public function get_order_weight()
    {
        $chosen_methods = WC()->session->get('chosen_shipping_methods');
        $weight = 0;
    
        foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
            $_product = $cart_item['data'];
    
            if (is_numeric($_product->get_weight())) {
                $weight += $_product->get_weight() * $cart_item['quantity'];
            }
        }
    
        return $weight;
    }
    public function calculate_shipping($packages = array())
    {
        $settings = AcsPointsPlugin::getSettings();
        $baseCost = $settings['baseCost'];
        $baseCostKgLimit = $settings['baseCostKgLimit'] ?? 0;
        $costPerKg = $settings['costPerKg'] ?? 0;
    
        $freeShippingLimit = $settings['freeShippingUpperLimit'];
        $optionCost = 0;
    
        $orderTotalCost = 0;
        $weightTotal = 0;
    
        foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
            $_product = $cart_item['data'];
            $qty = $cart_item['quantity'] ?? 1;
            $tempWeight = (float) $_product->get_weight(); // Changed to float for decimal weights
            $weightTotal += $qty * $tempWeight;
            $orderTotalCost += $qty * $_product->get_price();
        }
    
        if ($freeShippingLimit != '' && $orderTotalCost < $freeShippingLimit) {
            $optionCost = $baseCost;
            if ($weightTotal > $baseCostKgLimit) {
                $optionCost += $costPerKg * ($weightTotal - $baseCostKgLimit);
            }
        }
    

    Στον 1ο ενημερωμ?νο κ?δικα, η συν?ρτηση επαναλαμβ?νεται π?νω απ? τα ε?δη καλαθιο? χρησιμοποι?ντα? WC()->cart->get_cart() και υπολογ?ζει το β?ρο? με β?ση το β?ρο? κ?θε προ??ντο? πολλαπλασιασμ?νο με την ποσ?τητα του. Η μ?θοδο? get_cart_contents_weight() που παρ?χεται απ? το WooCommerce υπολογ?ζει το συνολικ? β?ρο? των περιεχομ?νων του καλαθιο?, γεγον?? που καθιστ? τον κ?δικα πιο συνοπτικ? και εξαλε?φει την αν?γκη αν?κτηση? πακ?των απ? την κατηγορ?α αποστολ??.

    Στον 2ο ενημερωμ?νο κ?δικα, η συν?ρτηση χρησιμοποιε? WC()->cart->get_cart() για να επαναλ?βει τα ε?δη του καλαθιο? και υπολογ?ζει το συνολικ? β?ρο? και το συνολικ? κ?στο? παραγγελ?α? με β?ση την ποσ?τητα και το β?ρο? κ?θε προ??ντο?. Πολλαπλασι?ζοντα? το $tempWeight με το $qty στη γραμμ? $weightTotal += $qty * $tempWeight;, ο υπολογισμ?? λαμβ?νει σωστ? υπ?ψη την ποσ?τητα κ?θε προ??ντο? και συσσωρε?ει το συνολικ? β?ρο? αν?λογα. Η αν?γκη πρ?σβαση? στα $packages[‘contents’] εξαλε?φεται.

    ?σοι αντιμ?τωπ?ζουν προβλ?ματα υπολογισμο? (δοκιμασμ?να με την ?κδοση 6.0.5 ) προτ?ινω να προχωρ?σουν σε αντικατ?σταση με των ?νω Functions.

    Ευελπιστ? οι προτ?σει? μου να φανο?ν χρ?σιμε?.

    Σα? ευχαριστ? για την αν?γνωση

    • This reply was modified 1 year, 5 months ago by headplus.
    • This reply was modified 1 year, 5 months ago by headplus.
    Plugin Author AfterSalesPro GR

    (@northbandltd)

    Ευχαριστο?με για τα comments ?? Τα ?χουμε προωθ?σει στην αντ?στοιχη ομ?δα!

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘Πιθαν? Bug στον υπολογισμ? Κιλ?ν’ is closed to new replies.