2011-07-01 5 views
5

टेबल दरें का उपयोग करना मैं Magento के साथ निम्नलिखित को प्राप्त कर सकते हैं:मैच के लिए Magento मुफ्त शिपिंग केवल आइटम - आदेश के आधार पर कुल

मैं मूल्य बनाम गंतव्य की एक तालिका दर प्रणाली का उपयोग कर रहा हूँ। और मुझे हां सेट करने के लिए विशेषता free_shipping -> उत्पादों के साथ उत्पादों के लिए मुफ्त शिपिंग का एक शॉपिंग कार्ट मूल्य नियम मिला है।

यदि आपके पास टोकरी में सामान्य उत्पाद हैं या टोकरी में मुफ्त शिपिंग उत्पाद हैं तो यह ठीक काम करता है। हालांकि यदि आपके पास टोकरी में एक सामान्य उत्पाद और एक मुफ्त शिपिंग उत्पाद दोनों हैं। यह मुफ्त शिपिंग के साथ उत्पाद सहित ऑर्डर कुल के आधार पर शिपिंग की गणना करता है।

मैं इसे कैसे ठीक कर सकता हूं, इसलिए शिपिंग केवल टोकरी में मौजूद दोनों प्रकार के उत्पादों के मुक्त शिपिंग सहित उत्पादों के ऑर्डर के लिए लागू होता है?

क्या इसके लिए कोई Magento प्लगइन है? अग्रिम में धन्यवाद।

उत्तर

2

मुझे एक ही समस्या थी और इसे काम करने के लिए एक छोटा कोड परिवर्तन लागू किया गया।

मूल रूप से पदोन्नति नियम भूल जाते हैं। इसे अक्षम करें अलग-अलग वस्तुओं को मुफ्त शिपिंग लागू करते समय शिपिंग दरों तालिका के साथ ठीक से काम नहीं लग रहा है। शिपिंग नियमों को प्राथमिकता लेना और कार्ट कुल के आधार पर गणना करना प्रतीत होता है।

चाल शिपिंग दर मॉड्यूल गणना करने के बिंदु पर कार्ट कुल से मुक्त शिपिंग आइटम घटाना है।

मेरे मामले में किसी विशेष श्रेणी (आईडी: 15) के अंदर सब कुछ मुफ्त शिपिंग प्राप्त करना था। लेकिन आप अपनी जरूरतों के अनुसार तर्क में संशोधन कर सकते हैं।

आपको निम्न फ़ाइल में संशोधन करने की आवश्यकता होगी (या चीजों को ठीक से करने के लिए इसे अपने स्थानीय कोडबेस पर कॉपी करें)।

ऐप \ कोड \ कोर \ Mage \ शिपिंग \ मॉडल \ वाहक \ Tablerate।php

परिवर्तन इस:

public function collectRates(Mage_Shipping_Model_Rate_Request $request) 
    { 
     if (!$this->getConfigFlag('active')) { 
      return false; 
     } 

     // exclude Virtual products price from Package value if pre-configured 
     if (!$this->getConfigFlag('include_virtual_price') && $request->getAllItems()) { 
      foreach ($request->getAllItems() as $item) { 
       if ($item->getParentItem()) { 
        continue; 
       } 
       if ($item->getHasChildren() && $item->isShipSeparately()) { 
        foreach ($item->getChildren() as $child) { 
         if ($child->getProduct()->isVirtual()) { 
          $request->setPackageValue($request->getPackageValue() - $child->getBaseRowTotal()); 
         } 
        } 
       } elseif ($item->getProduct()->isVirtual()) { 
        $request->setPackageValue($request->getPackageValue() - $item->getBaseRowTotal()); 
       } 
      } 
     } 
यह करने के लिए

:

public function collectRates(Mage_Shipping_Model_Rate_Request $request) 
{ 
    if (!$this->getConfigFlag('active')) { 
     return false; 
    } 

    // exclude Virtual products price from Package value if pre-configured 
    //And Exclude items which should have Free Shipping 
    if (!$this->getConfigFlag('include_virtual_price') && $request->getAllItems()) { 

     $freeshipping_category_id = 15; 

     foreach ($request->getAllItems() as $item) { 
      if ($item->getParentItem()) { 
       continue; 
      } 
      if ($item->getHasChildren() && $item->isShipSeparately()) { 
       foreach ($item->getChildren() as $child) { 
        if ($child->getProduct()->isVirtual()) { 
         $request->setPackageValue($request->getPackageValue() - $child->getBaseRowTotal()); 
        } 
         //If it's in the free shipping, remove it's value from the basket 
         $arr_category_ids = $child->getProduct()->getCategoryIds(); 
         if (in_array($freeshipping_category_id, $arr_category_ids)) { 
          $request->setPackageValue($request->getPackageValue() - $child->getBaseRowTotal()); 
         } 
       } 
      } elseif ($item->getProduct()->isVirtual()) { 
       $request->setPackageValue($request->getPackageValue() - $item->getBaseRowTotal()); 
      } 
       //If it's in the free shipping category, remove it's value from the basket 
       $arr_category_ids = $item->getProduct()->getCategoryIds(); 
       if (in_array($freeshipping_category_id, $arr_category_ids)) { 
        $request->setPackageValue($request->getPackageValue() - $item->getBaseRowTotal()); 
       } 
     } 
    } 
2

अपने बिक्री नियम में 'केवल मेलिंग आइटमों के लिए' मुफ्त शिपिंग सेट करें।

+0

मैं निम्नलिखित पहले से ही खरीदारी की टोकरी कीमत शासन के लिए सेटअप के लिए शिपिंग लागत को प्रभावित नहीं करेगा: मुफ्त शिपिंग: मिलान के लिए केवल आइटम स्टॉप आगे प्रसंस्करण नियम: नहीं केवल गाड़ी निम्न स्थितियों में (सभी आइटम के लिए खाली छोड़ दें) मिलान आइटम के लिए नियम लागू इन सभी शर्तें सत्य हैं: मुफ्त शिपिंग हाँ है – mattpark22

+0

आप सक्षम है आपका 'मुफ्त शिपिंग' मॉड्यूल? आपको भी इसकी ज़रूरत है। इसे सक्षम करें और इसे न्यूनतम आदेश राशि को बड़े पैमाने पर विशाल पर सेट करें ताकि यह डिफ़ॉल्ट रूप से प्रदर्शित न हो। –

+0

ने मुफ्त शिपिंग सक्षम की है, और न्यूनतम आदेश राशि को "100000000000000000000" पर सेट करें। हालांकि यह मुद्दा दुर्भाग्य से ही बना हुआ है :(कोई अन्य विचार? आपकी मदद के लिए धन्यवाद। – mattpark22

1

अगर मैं आपके सवाल का सही ढंग से समझ में आया, समाधान, वास्तव में आसान और त्वरित है यहाँ कैसे मैं इसका समाधान कर लिया है:

फ़ाइल में: Validator.php (/ ऐप्स/कोड/कोर/दाना/SalesRule/मॉडल /) स्ट्रिंग "केस Mage_SalesRule_Model_Rule :: FREE_SHIPPING_ITEM:" के लिए खोज करें और "ब्रेक" से ठीक पहले इस साधारण चीज़ को जोड़ें "$ item-> setWeight (0);"

इससे आइटम का वजन 0 हो जाएगा, इसलिए कोई शिपिंग मूल्य इसकी गणना नहीं की जाएगी, और यदि आप टोपी आइटम के लिए मुफ्त शिपिंग विकल्प अक्षम करते हैं, तो वजन माना जाता है और सब कुछ ठीक काम करता है।

+0

मुझे सही दिशा में इंगित करने के लिए धन्यवाद, मुझे अब निम्न मिला है: केस Mage_SalesRule_Model_Rule :: FREE_SHIPPING_ITEM: $ item-> setFreeShipping ($ rule-> getDiscountQty()? $ Rule-> getDiscountQty(): true) ; $ आइटम-> सेटवेइट (0); ब्रेक; लेकिन हम मूल्य बनाम गंतव्य का उपयोग कर रहे हैं, वजन नहीं - इसलिए मुझे लगता है कि यही कारण है कि आपका पैच हमारे लिए काम नहीं करता है। इस स्थान पर इसके बजाय हम क्या उपयोग कर सकते हैं पर कोई विचार? – mattpark22

+0

ओच, जब मेरे पास पर्याप्त समय होता है तो मैं उसमें बेहतर दिख सकता हूं, दुर्भाग्य से मूल्य बनाम गंतव्य वजन घटाने का कभी भी ध्यान नहीं देगा जैसा कि आपने बताया था, मेरा बुरा, मुझे मूल्य बनाम गंतव्य के बारे में हिस्सा याद आया। दुर्भाग्य से Magento से एक बुरा बग है, उम्मीद है कि मैं आज रात के भीतर कुछ खबरों के साथ वापस लिख सकते हैं। – Matteo

+0

धन्यवाद, मदद की सराहना करें :) मुझे यकीन है कि हम इस मुद्दे को हल करने में सक्षम होंगे। – mattpark22

0

मुझे पता है कि इस सवाल का जवाब दिया गया है और स्वीकार किए जाते हैं, लेकिन मैं बिना यह करने के लिए एक तरीका प्रदान करना चाहते हैं प्रोग्रामिंग, या कोर फाइलों को बदलना यदि संभव हो तो

यदि आप अपना आइटम "आभासी" आइटम के रूप में बनाना चाहते हैं, तो आप वर्चुअल आइटम को बाहर कर सकते हैं f रॉम शिपिंग शुल्क

आइटम पहले से ही हैं आइटम नहीं है phpMyAdmin की तरह एक प्रोग्राम के साथ अपने डेटाबेस के लिए

जाओ बनाया है और catalog_product_entity पर जाएँ, अपने उत्पाद SKU खोजने के लिए और type_id को virtual

बदल गया है, तो बनाया गया

उत्पाद निर्माण के पहले चरण के दौरान के रूप में आइटम बनाएं (Simple Product याके बजायVirtual Products, आदि)

बाहर करने के लिए शिपिंग शुल्क

नेविगेट System > Configuration > Shipping Methods करने और Table Rates हैडर सेट के नीचे से Include Virtual Products in Price Calculationकरने के लिए कोई

  • कृपया ध्यान दें, यह केवल के लिए काम करेंगे, और केवल Table Rates शिपिंग विधि
  • यूपीएस, यूएसपीएस, फेडेक्स और डीएच के लिए आवश्यक है एल, वजन द्वारा निर्धारित इतना के बाद से आभासी उत्पाद प्रकार 0 से उत्पाद वजन यह इन तरीकों
संबंधित मुद्दे