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

Gewicht is boven de 250 gram maar onder de 10 kilogram

Gewicht is boven de 10 kilogram maar onder 30 kilogram

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.
Persoonlijk denk ik dat er hier iets mis gaat:
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

Gewicht is boven de 250 gram maar onder de 10 kilogram

Gewicht is boven de 10 kilogram maar onder 30 kilogram

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'; |