2012-09-17 8 views

risposta

6

Sì, possiamo disabilitare questa diminuzione qty pragmaticamente

Come?

Estendere Mage_Checkout_Model_Type_Onepage e Rewrite il metodo saveOrder

Modifiche

prima che le seguenti righe nel metodo di cui sopra, sono intorno a # 740 a # 742

$service = Mage::getModel('sales/service_quote', $this->getQuote()); 
    $service->submitAll(); 

Aggiungi

$quote = $this->getQuote(); 
    # Ref: Mage_CatalogInventory_Model_Observer::subtractQuoteInventory 
    $quote->setInventoryProcessed(true); 

Questo informerà Magento che dont l'inventario di processo per la citazione, quindi non ci vorrà diminuire il qty, anche se è configurato per farlo.

+0

Grazie mille! Funziona ! –

+1

@Manaf PM, @ Bijeesh K G Questo non ha funzionato per me .... qualsiasi altra soluzione sto usando il modulo di pagamento autorizza .net e non voglio diminuire la quantità quando il pagamento fallisce ... – ravisoni

5

Sistema> Configurazione> Catalogo> Inventario> Opzioni su Azioni

Diminuzione archivio al momento dell'ordine> Nessun

+1

sicuramente il modo semplice di farlo :) – Andrew

+1

Nizza, grazie. Qualcuno sa caldo per poi decifrare qty solo quando viene creata una spedizione? (quindi quando un prodotto entra nello stato di elaborazione). Grazie – Simbus82

0

Si potrebbe semplicemente disattivare la gestione del magazzino in admin, a meno che non ci sia un motivo particolare è necessario per farlo per di qua?

si potrebbe configurare un osservatore da aggiungere alla Qtà dopo il pagamento di successo: È possibile controllare qui per un elenco di eventi di Magento è possibile agganciare: http://www.nicksays.co.uk/magento_events_cheat_sheet/

<events> 
    <sales_order_payment_pay> 
     <observers> 
     <my_observer> 
      <type>singleton</type> 
      <class>my/observer</class> 
      <method>addQty</method> 
     </my_observer> 
     </observers> 
    </sales_order_payment_pay>  
</events> 

E poi il tuo osservatore avrebbe aggiungere il Qtà di nuovo su ..

<?php 
class Company_My_Model_Observer 
{ 
    public function addQty($event) 
    { 
     $order = $event->getInvoice()->getOrder(); // Mage_Sales_Model_Order 
     $items = $order->getAllVisibleItems(); 

     foreach($items as $item) { 
      $qty = $item->getQtyOrdered(); // Amount to add back on 
      $product = Mage::getModel('catalog/product')->load($item->getProductId()); 
      /** 
       * Here you would load the product and add this amount back on 
       */ 
     } 

     return $this; 
    } 
} 

Che probabilmente non funzionerà come è, ma si ottiene l'idea. È necessario fare attenzione con Magento e gli eventi del tipo di pagamento, poiché i diversi moduli di pagamento possono gestire questi eventi in modo leggermente diverso.

+0

Ciao, grazie per la risposta. In realtà ho tre siti Web nell'installazione di Magento Quindi non desidero modificare la configurazione di stock option, poiché ho bisogno di questa configurazione per altri siti Web. Avrei bisogno di interrompere programmaticamente la diminuzione della quantità quando viene effettuato l'ordine. –

1

Per tutti coloro che vogliono trovare ulteriori informazioni riguardanti la sottrazione su ordinare, solo bisogno di studiare questo evento sia in Magento EE/CE

sales_model_service_quote_submit_before 
Problemi correlati