2011-12-26 9 views
5

मुझे एक अजीब समस्या है। मैंने एक मॉड्यूल विकसित किया है जो डेटाबेस में कुछ मूल्य के अनुसार कुल योग को जोड़ता है। लेकिन मेरी मॉड्यूल मॉडल (जो Mage_Sales_Model_Quote_Address_Total_Abstract से प्राप्त होती है) जब मैंMagento, getSubtotal और getGrandTotal हमेशा शून्य लौटाएं

$address->getSubtotal() 

या

$address->getGrandTotal() 

या किसी अन्य योग विधि कॉल में, मैं शून्य (0) लौटे मिलता है। लेकिन phpmyadmin में, मैं देखता हूं कि वे मान शून्य नहीं हैं। इन योग कॉलम को छोड़कर कोई अन्य कॉलम उनके सही मान को लौटाता है (यानी, getAddressId() आईडी वापस कर देता है, GetAddressType "शिपिंग" आदि देता है)

समस्या क्या हो सकती है, कोई विचार? धन्यवाद ---------- EDIT ----------- ठीक है, @ एलन स्टॉर्म की टिप्पणी के बाद, मुझे लगता है कि मुझे और स्पष्ट होना चाहिए। मैं एक किस्त मॉड्यूल विकसित करने की कोशिश कर रहा हूं। मैं व्यवस्थापक में किश्त शुल्क (महीनों की गणना के अनुसार बदल रहा हूं) सेट करूंगा, और मैं चेकआउट पर कार्ट के कुल में यह शुल्क जोड़ूंगा।

यह मेरा कलेक्ट विधि,

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

ठीक दोस्तों, मैं यह पता लगा लिया है! समस्या मेरे config.xml के साथ था मैं

<after>grand_total</after> 

के बाद से यह अनुपस्थित है जोड़ा जाना चाहिए था, यह पहली बार मेरी मॉड्यूल के कुल एकत्रित कर रहा था, जबकि उप-योग और grand_total अभी तक गणना नहीं कर रहे थे। इस वजह से, वे शून्य के रूप में आ रहे थे।

यद्यपि आपका धन्यवाद!

+0

यह स्पष्ट नहीं है कि आप पता बोली वस्तु है, जो एक जवाब मुश्किल प्रदान करता है के साथ यहाँ करने के लिए कोशिश कर रहे हैं क्या। यह वर्ग डेटाबेस से मूल्य लाने के लिए नहीं है। –

+0

मैंने आपकी टिप्पणी में प्रश्न समझौता संपादित किया है। – UnfoX

+2

ठीक है दोस्तों, मैंने इसे समझ लिया है! समस्या मेरे config.xml के साथ था मैं grand_total के बाद से यह अनुपस्थित है, यह पहली बार मेरी मॉड्यूल के कुल एकत्रित कर रहा था, जबकि उप-योग और grand_total अभी तक गणना नहीं कर रहे थे जोड़ा जाना चाहिए था। इस वजह से, वे शून्य के रूप में आ रहे थे। यद्यपि आपका धन्यवाद! – UnfoX

उत्तर

7

ओपी "सेल्फ हेल्प डेस्क" उत्तर जोड़ना। यदि आप इसे पसंद करते हैं, तो मूल प्रश्न को वोट देना सुनिश्चित करें।

ठीक है दोस्तों, मैंने इसे समझ लिया है! समस्या मेरे config.xml के साथ था मैं

<after>grand_total</after> 

के बाद से यह अनुपस्थित है जोड़ा जाना चाहिए था, यह पहली बार मेरी मॉड्यूल के कुल एकत्रित कर रहा था, जबकि उप-योग और grand_total अभी तक गणना नहीं कर रहे थे। इस वजह से, वे शून्य के रूप में आ रहे थे।

+0

बहुत बढ़िया ... मेरे घंटों को बचाया .... – Dolly

1

इस यह काम करता है की कोशिश करो ...

public function collect(Mage_Sales_Model_Quote_Address $address) 
    { 

    $items = $quote->getAllItems(); 
    $subtotal = 0; 
    foreach ($items as $item){ 
     $subtotal += $item->getRowTotalInclTax(); 
    Mage::log($subtotal); 
    } 

} 
संबंधित मुद्दे