Pregunta

Estoy buscando qué observador de coleccionistas puedo usar.Hay dos observadores, sales_quote_collect_totals_before y sales_quote_address_collect_totals_before .

Se pueden encontrar en /app/code/core/Mage/Sales/Model/Quote.php y generacodiCodeGode.

Me pregunto cuál es la diferencia entre los dos archivos, ya que ambos archivos tienen las funciones totales de recolección?

¿Fue útil?

Solución

/app/code/core/mage/sales/model/quote.php

es la clase de cotización para el objeto de cotización

/app/code/core/Mage/Sales/Model/Quote/Address.php

es la clase de dirección de cotización para cualquier objeto de dirección de cotización

Un objeto de cotización normalmente contendría 2 objetos de dirección, pero puede contener más si hay múltiples direcciones de entrega.

En lo que respecta al (los) método (s) de 'coleccionales': Permite entender por primera vez cada método y su propósito:

El método en Mage_Sales_Model_Quote, es el punto de entrada inicial para el subsistema de Totals Collector, y se inicia mediante un carro, ahorre,

(Esto le permite inyectar métodos de clase en los cálculos del carrito, para afectar el resultado de los totales del carro, ejemplo: cálculos de los descuentos del carrito)

Flujo de código de la siguiente manera:

Mage_Checkout_Model_Cart::save()

Mage_Sales_Model_Quote::collectTotals() <--- Punto de entrada del subsistema de colector

Mage_Sales_Model_Quote_Address::collectTotals() <- Se llama cada dirección adjunta al objeto de la cotización, a través de un bucle en la cotización.

Ahora, en el método de recopilación de direcciones, se realiza un bucle, utilizando todos los 'colectores' definidos por el sistema, llamando a cada clase / método, lo que permite que los totales se ajusten a los cálculos adicionales (recuerde que todos los totales cuelgan fuera del (los) objeto (s) de direcciones, no el objeto de cotización real, que le permite a Magento realizar un checkout a varias direcciones)

foreach ($this->getTotalCollector()->getCollectors() as $model) {
            $model->collect($this);
} 

Una lista de los posibles 'coleccionistas' sería:

ingrese la descripción de la imagen aquí

Puede inyectar su propio colector de totales a través de una configuración de módulo como tal, y debe tener un método collect como punto de entrada.

<sales>
   <quote>
      <totals>
         <giftpromo>
           <class>giftpromo/promo_gift</class>
           <after>discount</after>
           <before>tax,grand_total</before>
           <sort_order>12410</sort_order>
         </giftpromo>
      </totals>
    </quote>
</sales>

Ahora, considerando toda esa información, y los eventos disparados:

sales_quote_collect_totals_before : se despide Antes de cargar cualquier objeto de dirección, y el colector de totales se acciona

sales_quote_address_collect_totals_before : se enciende dentro de los objetos de la dirección de la cotización, antes de que cada objeto de dirección ejecute la lista de posibles objetos colector.

No sabiendo su juego final, no podría determinar cuál es el adecuado para usted, sin embargo, también sugeriría considerar que ninguno de los dos es correcto, y que sería más adecuado para agregar un nuevo COLECTOR PARA EL SISTEMA DE COLECTOR DE TOTALES

Espero que esta información le ayude a determinar la forma correcta de extender la funcionalidad y la entrega de una solución estable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top