對於未來的項目,我們已分配給創造一個簡單的概念(內Magento的),它應該具有執行以下操作:Magento的預付款
一位顧客有一個不同的運輸方式之間進行選擇的能力,他們是「Ship2Shop」,它將產品發送到選擇的實體商店,客戶必須撿起它。 當客戶選擇這種「ship2shop」運輸方式時,總金額的某個百分比(例如:25%)必須在線支付(通過預定義的付款方式),其餘75%必須在實體店,當顧客去拿他訂購的產品時。
你會怎麼做呢?
我們的想法是修改結帳/訂單會話並修改「總計」金額(在課程中保存原文)。當客戶被髮送到外部支付處理器時,「修改總計」被髮送。一旦客戶在magento平臺上返回,我們將通過恢復原來的總價格並更新總付款總額和總到期金額來修改訂單。
任何人有任何其他想法?
編輯: 從安東S下面的反饋後,我設法增加了「預付款總額」。但進出口仍然有問題 在config.xml我添加的標籤以下內容:
acsystems_advancepayment/total_custom grand_total
我希望我的預付款到演出結束後總計,由於某種原因,magento不會這麼做...
EDIT2:收集方法
public function collect(Mage_Sales_Model_Quote_Address $address)
{
parent::collect($address);
$quote = $address->getQuote();
$advancePaymentAmount = 0;
$baseAdvancePaymentAmount = 0;
$items = $address->getAllItems();
if (!count($items)) {
$address->setAdvancePaymentAmount($advancePaymentAmount);
$address->setBaseAdvancePaymentAmount($baseAdvancePaymentAmount);
return $this;
}
$address->setBaseAdvancePayment($address->getGrandTotal()*(0.25));
$address->setAdvancePayment($address->getGrandTotal()*(0.25));
$address->setAdvancePaymentAmount($address->getGrandTotal()*(0.25));
$address->setBaseAdvancePaymentAmount($address->getGrandTotal()*(0.25));
$address->setGrandTotal($address->getGrandTotal() - $address->getAdvancePaymentAmount());
$address->setBaseGrandTotal($address->getBaseGrandTotal()-$address->getBaseAdvancePaymentAmount());
return $this;
}
那麼這是做什麼$ address-> setAdvancePayment($ calculatedAmount); ? –
如果我沒有設置,那麼我的「預付款」行不會顯示在購物車概覽/檢查結帳中。 (我猜這是相同的 - > setData(「advance_payment」) – Kenny
確定你的問題是baseAmount和金額在你的收藏期間不會被清除,如果它連續被多次調用,那就是什麼paretn :: collect($地址);正在做你的方法的頂部。但是你必須確保你的calculateAmount總是從0開始計算 –