0

Magento の隣のフォルダーにコードが少しあります。私はMage.phpいくつかのことをするために引っ張っています。ある種の配送見積もりをコードに取り込めるようにしたいと考えています。私はウェブを見回してきましたが、それを理解できる場所を見つけるのに苦労しています。

これを達成するための最も効率的な方法を教えてください。

レートを取得するために渡すために利用できる情報は次のとおりです。

Product ID eg, 123
Quantity eg, 1020
Country Code eg, GB
Zip code if needed eg, SY12 6AX

そして、次の情報を取得したいと思います。

Rate eg, £2.50
Title eg, Royal Mail Special Delivery
ID eg, 6

次に、コードのオプションをラジオリストに入力して、選択できるようにしたいと思います。

どうもありがとう

4

2 に答える 2

5

OK、私はそれを働かせました。これは、magento から送料見積もりをプログラムで取得するための最終的なコードです。

この関数は、特定の製品、数量、国、郵便番号に対して利用可能なすべての配送料を返します。コードは送料無料を除外しています。これは削除することで元に戻すことができますif($_rate->getPrice() > 0) { ...

<?php
require_once("Mage.php");
umask(0);
ini_set('display_errors',true); Mage::setIsDeveloperMode(true);
Mage::app();


function getShippingEstimate($productId,$productQty,$countryId,$postcode ) {

    $quote = Mage::getModel('sales/quote')->setStoreId(Mage::app()->getStore('default')->getId());
    $_product = Mage::getModel('catalog/product')->load($productId);

    $_product->getStockItem()->setUseConfigManageStock(false);
    $_product->getStockItem()->setManageStock(false);

    $quote->addProduct($_product, $productQty);
    $quote->getShippingAddress()->setCountryId($countryId)->setPostcode($postcode); 
    $quote->getShippingAddress()->collectTotals();
    $quote->getShippingAddress()->setCollectShippingRates(true);
    $quote->getShippingAddress()->collectShippingRates();

    $_rates = $quote->getShippingAddress()->getShippingRatesCollection();

    $shippingRates = array();
    foreach ($_rates as $_rate):
            if($_rate->getPrice() > 0) {
                $shippingRates[] =  array("Title" => $_rate->getMethodTitle(), "Price" => $_rate->getPrice());
            }
    endforeach;

    return $shippingRates;

}
echo "<pre>";
// product id, quantity, country, postcode
print_r(getShippingEstimate(1098,100,"GB","SY21 7NQ"));
echo "</pre>";

これは、次のようにドロップダウン リストに入れることができます。

$results = getShippingEstimate(1098,100000,"GB","SY21 7NQ");
$count = -1;
echo "<select>";
foreach ($results as $result):
$count++;
?>
<option value="<?=$count?>"><?=$result["Title"]." - £".$result["Price"]?></option>
<?php
endforeach;
echo "</select>"
于 2012-10-23T12:23:38.553 に答える
3

配送見積もりの​​場合、実際の見積もりが存在し、必須の住所データ (国、地域、郵便番号) が請求先住所と配送先住所に入力されている必要があります。その後、料金を尋ねることができます。

$quote()->getShippingAddress()->getGroupedAllShippingRates();

これは配送方法にも依存することに注意してください。また、見積もりがすでに計算されているか、計算されようとしているときに料金を指定できるかどうかも事実です。

于 2012-10-18T11:28:54.663 に答える