Realmente no sé si esto ayudará de alguna manera, pero hay algo que considerar.
Es posible que su collecttotals
orden modelo esté ordenando de manera diferente, y que el impuesto se ordene / aplique después de grand_total
Puede probar si este es el problema de la siguiente manera. (tenga en cuenta que esto implica ajustar un archivo central para obtener información de depuración, ¡no intente esto en un sitio en vivo!)
Edite el método ubicado en:
Mage_Sales_Model_Quote_Address::collecttotals
y agregue una línea al método, lo que le permitirá generar los modelos a medida que se procesan.
public function collectTotals()
{
Mage::dispatchEvent($this->_eventPrefix . '_collect_totals_before', array($this->_eventObject => $this));
foreach ($this->getTotalCollector()->getCollectors() as $model) {
mage::log($model->getCode()); // <===== ADD THIS LINE
$model->collect($this);
}
Mage::dispatchEvent($this->_eventPrefix . '_collect_totals_after', array($this->_eventObject => $this));
return $this;
}
asegúrese de que el registro esté habilitado.
seguir el archivo de registro a través de la consola: tail -f system.log
Reproduzca el problema a través de la interfaz.
Obtendrá entradas de la siguiente manera en su registro (esto de un vainilla 1.9.2.2 - puede tener otras entradas)
2015-12-21T05:54:12+00:00 DEBUG (7): nominal
2015-12-21T05:54:12+00:00 DEBUG (7): subtotal
2015-12-21T05:54:12+00:00 DEBUG (7): msrp
2015-12-21T05:54:12+00:00 DEBUG (7): freeshipping
2015-12-21T05:54:12+00:00 DEBUG (7): tax_subtotal
2015-12-21T05:54:12+00:00 DEBUG (7): weee
2015-12-21T05:54:12+00:00 DEBUG (7): shipping
2015-12-21T05:54:12+00:00 DEBUG (7): tax_shipping
2015-12-21T05:54:12+00:00 DEBUG (7): discount
2015-12-21T05:54:12+00:00 DEBUG (7): tax
2015-12-21T05:54:12+00:00 DEBUG (7): grand_total
Verá que se repite, así que solo vea dónde comienza y termina, debería ser fácil ver el patrón
Tenga en cuenta las dos últimas entradas anteriores: el impuesto viene antes de grand_total. Se puede ser posible este orden está fuera de control, y el impuesto está apareciendo después grand_total, por lo que no tendrá grand_total impuestos aplicada.
EDITAR:
Ok, entonces no vi que la pregunta referida en realidad apunta a la clasificación de los colectivos como el problema. Sospeché que ese podría ser el problema, pero no lo he probado yo mismo en PHP7
Hay una solución, pero no es muy agradable. Cualquier nueva extensión colocada en la tienda, que inserte modelos en el colector, debería anotarse y agregarse adicionalmente a la clasificación, de lo contrario, las cosas podrían salir aún más mal. Puede ser un problema de mantenimiento en el futuro.
Simplemente fuerce el orden de clasificación colocando un específico <sort_order>
en la configuración de totales. Puede hacerlo a través de su propia extensión, que solo tendría un config.xml, donde puede especificar el orden de cada recopilador.
en config.xml, tenga la directiva como tal:
<sales>
<quote>
<totals>
<nominal>
<sort_order>100</sort_order>
</nominal>
<subtotal>
<sort_order>200</sort_order>
</subtotal>
<msrp>
<sort_order>300</sort_order>
</msrp>
<freeshipping>
<sort_order>400</sort_order>
</freeshipping>
......
insert each collector model with a sort directive
......
</totals>
</quote>
Use espacios grandes entre cada directiva de clasificación, para permitir espacio para insertar más en el futuro.
Como se mencionó, no es muy elegante, pero puede resolver su problema inmediato.
También tenga en cuenta que hay otras directivas de recopiladores en el sistema, por lo que también pueden estar equivocadas / necesitan un ajuste
Compruebe la extensión de ventas principal config.xml y busque <totals>
Allí encontrarás:
<order_invoice>
<order_creditmemo>
<pdf>
Puede haber otros en otras extensiones, ya sea núcleo / tercero
Espero que ayude.
PD: no he probado nada de esto en PHP7. Sé que la colocación de la directiva sort_order funciona en php5.x