Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP] Magento verzendkosten worden weergegeven

Pagina: 1
Acties:

  • Stekeltje
  • Registratie: November 2005
  • Laatst online: 07:11

Stekeltje

Nothing to see here move along

Topicstarter
Als hobby hebben wij een webshopje (met de nadruk op -je) waar we met plezier een anderhalf jaar Prestashop voor hebben gebruikt. In het kader van professionaliseren en meer functionaliteit om ons meer te focussen op de producten en minder op het inpakken en het verzenden hebben we besloten magento te gaan gebruiken.

Erg lang mee bezig geweest maar het staat (nja, zo goed als). De webshop is op 98% maar er is 1 ding die nog niet wilt lukken. Het volgende gebeurd normaal gesproken (gewenst)

1 Klant vult winkelwagen met producten
2 Dit levert een X aantal grammen op aan gewicht
3 Magento legt het gewicht naast een tabel met gewichten en prijzen
4 Magento haalt de goede prijs omhoog en toont dit aan de gebruiker
5 Klant ziet de verzendkosten en rekent af met de goede verzendkosten

Wat gebeurd er op dit moment:
1 - 3 gaat (volgens mij goed)
4 Magento haalt geen prijs van pakketdienst omhoog maar toont dit als gratis optie aan de klant
5 Klant ziet twee verzendkosten en pakt uiteraard de gratis variant.

Gewicht is onder de 250 gram
Afbeeldingslocatie: http://i102.photobucket.com/albums/m99/Ruudjuh_2006/ScreenShot2013-09-18at82759PM_zpsed722392.png

Gewicht is boven de 250 gram maar onder de 10 kilogram
Afbeeldingslocatie: http://i102.photobucket.com/albums/m99/Ruudjuh_2006/ScreenShot2013-09-18at82838PM_zps33fa5f08.png

Gewicht is boven de 10 kilogram maar onder 30 kilogram
Afbeeldingslocatie: http://i102.photobucket.com/albums/m99/Ruudjuh_2006/ScreenShot2013-09-18at82916PM_zps6ee42610.png

Nu heb ik al contact gezocht met de leverancier van de module, maar ik ben stiekem benieuwd naar de uitkomst van het geheel. Ik vind PHP best interessant en elke mogelijkheid om iets bijzonders te herkennen of leren spreekt me wel aan!

Hieronder heb ik volgens mij het bestand waar het fout in gaat, maar daar ik nog niet de controle skills heb ben ik benieuwd of iemand het voor mij kan vinden, ik heb er namelijk al te veel (zinloze) tijd inzitten waar iemand met meer ervaring misschien juist maar enkele minuten mee bezig is.


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
    public function collectRates(Mage_Shipping_Model_Rate_Request $request)
    {
        
        $free_shipping_base = Mage::getStoreConfig('general/multicarrier/free_shipping_base', $this->getStore());
        //$price_rule_base = Mage::getStoreConfig('general/multicarrier/price_rule_base', $this->getStore());
        //$price_rule_free_shipping = Mage::getStoreConfig('general/multicarrier/price_rule_free_shipping', $this->getStore());
        $special_price_free_shipping = Mage::getStoreConfig('general/multicarrier/special_price_free_shipping', $this->getStore());

        $weight = $request->getPackageWeight();
        
        $taxAmount = Mage::getModel('checkout/session')->getQuote()->getShippingAddress()->getTaxAmount();
        
        $subtotal = Mage::getModel('checkout/session')->getQuote()->getSubtotal() + $taxAmount;
        $grandtotal = Mage::getModel('checkout/session')->getQuote()->getGrandTotal();
        
        $enableFreeShipping = true;
        
        $specialPrice = false;
        $shippingPrice = false;
        
        foreach($items as $item)
        {
            if(trim($item->getProduct()->getSpecialPrice()) != '')
            {   
                $specialPrice = true;
                break;
            }
        }
        
        if($specialPrice && !$special_price_free_shipping)
            $enableFreeShipping = false;
        
        if($free_shipping_base == 'grandtotal')
            $total = $grandtotal;
        else
            $total = $subtotal;

        //if($this->getConfigFlag('incl_vat'))
            //$subtotal += Mage::getModel('checkout/session')->getQuote()->getShippingAddress()->getTaxAmount();

        
        $countryId = $request->getDestCountryId();
        
        $result = Mage::getModel('shipping/rate_result');
        
        $pricerules = unserialize($this->getConfigData('pricerule'));
                
        foreach($pricerules as $pricerule)
        {
            if($pricerule['country'] != $countryId)
                continue;
                
        

            if(($weight >= (float)$pricerule['min_weight']) && ($weight <= (float)$pricerule['max_weight']) &&
               ($total >= (float)$pricerule['min_subtotal']) && ($total <= (float)$pricerule['max_subtotal'])
            )
            {   
                $shippingPrice = (float)$pricerule['price'];
                break;
            }
        }
        
        $freeBoxes = 0;
        if ($request->getAllItems()) {
            foreach ($request->getAllItems() as $item) {

                if ($item->getProduct()->isVirtual() || $item->getParentItem()) {
                    continue;
                }

                if ($item->getHasChildren() && $item->isShipSeparately()) {
                    foreach ($item->getChildren() as $child) {
                        if ($child->getFreeShipping() && !$child->getProduct()->isVirtual()) {
                            $freeBoxes += $item->getQty() * $child->getQty();
                        }
                    }
                } elseif ($item->getFreeShipping()) {
                    $freeBoxes += $item->getQty();
                }
            }
        }
        $this->setFreeBoxes($freeBoxes);

        if ($shippingPrice !== false || $enableFreeShipping)
        {
            $method = Mage::getModel('shipping/rate_result_method');
            
            $method->setCarrier($this->_code);
            $method->setCarrierTitle($this->getConfigData('title'));
            
            $method->setMethod($this->_code);
            $method->setMethodTitle($this->getConfigData('name'));
            
            if (($request->getFreeShipping() === true || $request->getPackageQty() == $this->getFreeBoxes()) && $enableFreeShipping)
                $shippingPrice = '0.00';
            else if($this->getConfigData('free_shipping_enable') && ($this->getConfigData('free_shipping_subtotal')<=$total) && $enableFreeShipping)
                $shippingPrice = '0.00';

            
            $method->setPrice($shippingPrice);
            $method->setCost($shippingPrice);
            
            $result->append($method);
        }
        
        return $result;
    }
    /**
     * Check if carrier has shipping tracking option available
     * All Mage_Usa carriers have shipping tracking option available
     *
     * @return boolean
     */
    public function isTrackingAvailable()
    {
        return true;
    }
    
    public function getAllowedMethods()
    {
        return array($this->_code=>$this->getConfigData('name'));
    }


Persoonlijk denk ik dat er hier iets mis gaat:
PHP:
1
2
3
4
            if (($request->getFreeShipping() === true || $request->getPackageQty() == $this->getFreeBoxes()) && $enableFreeShipping)
                $shippingPrice = '0.00';
            else if($this->getConfigData('free_shipping_enable') && ($this->getConfigData('free_shipping_subtotal')<=$total) && $enableFreeShipping)
                $shippingPrice = '0.00';

  • SAWYER
  • Registratie: Maart 2010
  • Laatst online: 11-07 22:59
Welke module gebruik je?

  • Stekeltje
  • Registratie: November 2005
  • Laatst online: 07:11

Stekeltje

Nothing to see here move along

Topicstarter
Ik gebruik de module van PostNL -Basis Versie van Mindstretch, er is zeer weinig over bekend verder op internet. Waarschijnlijk omdat het een betaalde module is, is er minder informatie dan van gratis modules (waarschijnlijk had ik dan ook een oplossing kunnen vinden).

[ Voor 63% gewijzigd door Stekeltje op 18-09-2013 20:54 ]


  • R2D2
  • Registratie: Mei 2001
  • Niet online
Waarom ben je voor de Mindstertch module gegaan? Volgens mij zou dit namelijk ook met de standaard tablerates moeten kunnen waardoor je alles af kunt vangen met 1 verzendmethode en het probleem 'zichzelf' dus als het ware oplost.

iRacing profiel | Sim-Racer.nl


  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 21-11 14:12
En als het een betaalde module is, krijg je toch ook support? Heb je ze zelf al gemaild? Ja dus, maar nog geen reactie? Mijn ervaring is dat ze het vaak zelf zo oplossen iig. (met andere modules)

[ Voor 39% gewijzigd door Barryvdh op 19-09-2013 14:19 ]


  • Stekeltje
  • Registratie: November 2005
  • Laatst online: 07:11

Stekeltje

Nothing to see here move along

Topicstarter
R2D2 schreef op donderdag 19 september 2013 @ 14:11:
Waarom ben je voor de Mindstertch module gegaan? Volgens mij zou dit namelijk ook met de standaard tablerates moeten kunnen waardoor je alles af kunt vangen met 1 verzendmethode en het probleem 'zichzelf' dus als het ware oplost.
Tablerates heeft geen export ondersteuning, Mindstretch wel, dit is een soort add-on waar ik in eerst instantie matrixrates voor gebruikte.
Barryvdh schreef op donderdag 19 september 2013 @ 14:18:
En als het een betaalde module is, krijg je toch ook support? Heb je ze zelf al gemaild? Ja dus, maar nog geen reactie? Mijn ervaring is dat ze het vaak zelf zo oplossen iig. (met andere modules)
Ja al gemailed, zijn er mee bezig, maar het ging snel. Waarschijnlijk zit het wat gecompliceerder in elkaar dan gedacht vandaar dat ik de vraag ook hier stel.

  • Stekeltje
  • Registratie: November 2005
  • Laatst online: 07:11

Stekeltje

Nothing to see here move along

Topicstarter
Het is opgelost, had schijnbaar een oudere versie te pakken! Ik probeer de eventuele fix op te zoeken.
Pagina: 1