2012-09-17 6 views

Respuesta

6

sí, podemos desactivar esta Cant disminución pragmáticamente

¿Cómo?

Extender Mage_Checkout_Model_Type_Onepage y reescritura el método saveOrder

Cambios

antes de que las siguientes líneas en el método anterior, será de alrededor de # 740 a # 742

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

Añadir

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

Esto informará Magento eso No inventario de proceso para la cita, por lo que suele disminuir el Cant incluso si está configurado para hacerlo.

+0

¡Muchas gracias! Funciona ! –

+1

@Manaf PM, @ Bijeesh K G Esto no funcionó para mí ... cualquier otra solución que estoy usando autorice el módulo de pago .net y no quiero disminuir la cantidad cuando el pago falló ... – ravisoni

5

Sistema> Configuración> Catálogo> Inventario> Opciones de Acciones

Disminución de archivo Cuando se hace el pedido> Sin

+1

sin duda la forma más sencilla de hacerlo :) – Andrew

+1

Niza, gracias. ¿Alguien sabe caliente para luego deducir cantidad solo cuando se crea un envío? (Entonces, cuando un producto entra en estado de procesamiento). Gracias – Simbus82

0

Se podía desactivar la gestión de stocks en el administrador, a menos que haya una razón particular que necesita para hacerlo ¿de esta manera?

usted puede configurar un observador para añadir a la Cantidad después del pago exitoso: Puede comprobar aquí para obtener una lista de eventos de Magento puede engancharse en: 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> 

Y entonces su observador añadir el Cantidad de nuevo ...

<?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; 
    } 
} 

Probablemente no funcionará como está, pero ya se ha hecho. Debe tener cuidado con los eventos de tipo magento y tipo de pago, ya que los diferentes módulos de pago pueden manejar esos eventos de forma ligeramente diferente.

+0

Hola, gracias por la respuesta. Tengo tres sitios web en mi instalación de magento Así que no quiero cambiar la configuración de opciones de stock, ya que necesito esta configuración para otro sitio web. Necesitaría detener programáticamente la cantidad decreciente cuando se realiza el pedido. –

1

Para cualquier persona que desea encontrar más información sobre la sustracción de poner orden, sólo tiene que estudiar este evento, tanto en Magento EE/CE

sales_model_service_quote_submit_before 
Cuestiones relacionadas