Mam dziwny problem. Opracowałem moduł, który dodaje linię do sumy zgodnie z pewną wartością w bazie danych. Ale w moim modelu modułu (który jest dziedziczony z Mage_Sales_Model_Quote_Address_Total_Abstract) gdy zgłoszęMagento, getSubtotal i getGrandTotal zawsze zwracają zero
$address->getSubtotal()
lub
$address->getGrandTotal()
lub jakąkolwiek inną metodę sum, mam zero (0) powrócił. Ale w phpmyadmin widzę, że te wartości nie są zerowe. Każda inna kolumna z wyjątkiem tych kolumn sumujących zwraca ich poprawną wartość (tj. GetAddressId() zwraca identyfikator, getAddressType zwraca "wysyłka" itp.)
Co może być problemem, jakikolwiek pomysł? Dzięki ---------- EDYCJA ----------- OK, po komentarzu @Alan Storm, widzę, że powinienem być bardziej przejrzysty. Próbuję opracować moduł raty. Będę ustalał opłaty rat (zmieniające się według liczby miesięcy) w administracji, a ja dodam tę opłatę do koszyka ogółem przy kasie.
To jest moja metoda zbierać,
public function collect(Mage_Sales_Model_Quote_Address $address)
{
$address->setInstalmentCount(2); //instalment count is hardcoded as 2 for debugging
$paymentMethod = Mage::app()->getFrontController()->getRequest()->getParam('payment');
$paymentMethod = Mage::app()->getStore()->isAdmin() && isset($paymentMethod['method']) ? $paymentMethod['method'] : null;
if ($paymentMethod != 'oos' && (!count($address->getQuote()->getPaymentsCollection()) || !$address->getQuote()->getPayment()->hasMethodInstance())){
return $this;
}
$paymentMethod = $address->getQuote()->getPayment()->getMethodInstance();
if ($paymentMethod->getCode() != 'oos') {
return $this;
}
$items = $address->getAllItems();
if (!count($items)) {
return $this;
}
$baseTotal = $address->getBaseGrandTotal(); // THIS ALWAYS RETURNS ZERO
// adress is the reference for grand total
$quote = $address->getQuote();
$store = $quote->getStore();
$fee_perc = $oosconfig['inst' . round($address->getInstalmentCount())]; // get the setting from admin
$ins_fee = $store->convertPrice($baseTotal*$fee_perc/100.0, false); // calculate the fee
$baseTotal += $ins_fee; // add to totals
$address->setInstalmentFee($ins_fee);
// update totals
$address->setBaseGrandTotal($baseTotal);
$address->setGrandTotal($store->convertPrice($baseTotal, false));
return $this;
}
------ EDIT2 ------
OK chłopaki, mam zorientowaliśmy się! Problem był z moim config.xml powinny Dodałem
<after>grand_total</after>
Ponieważ jest nieobecny, to był pierwszy zbierając łącznie mojego modułu podczas subtotal i grand_total nie zostały jeszcze obliczone. Z tego powodu nadchodziły jako zera.
Dziękujemy!
To nie jest jasne, co starasz się zrobić tutaj z obiektem Adres cytując, co sprawia udzielenia odpowiedzi trudne. Ta klasa nie służy do pobierania wartości z bazy danych. –
Zmieniłem pytanie zgodnie z twoim komentarzem. – UnfoX
OK, chłopaki, rozgryzłem to! Problem był z moim config.xml powinny Dodałem grand_total Ponieważ jest nieobecny, to był pierwszy zbierając łącznie mojego modułu podczas subtotal i grand_total nie zostały jeszcze obliczone. Z tego powodu nadchodziły jako zera. Dziękujemy! –
UnfoX