Non so davvero se questo possa aiutare in qualche modo, ma qualcosa da esaminare.
È possibile che il tuo collecttotals
ordine modello sia diverso e che la tassa sia ordinata / applicata dopo grand_total
È possibile verificare se questo è il problema come segue. (nota che ciò comporta la regolazione di un file core per ottenere alcune informazioni di debug, non provarlo su un sito live!)
Modifica il metodo che si trova in:
Mage_Sales_Model_Quote_Address::collecttotals
e aggiungi una riga al metodo, che ti permetterà di produrre i modelli mentre vengono elaborati.
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;
}
assicurarsi che la registrazione sia abilitata.
coda il file di registro tramite la console: tail -f system.log
Riprodurre il problema tramite il frontend.
Otterrai le voci come segue nel tuo registro (questo da una versione 1.9.2.2 vanilla - potresti avere altre voci)
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
Lo vedrai ripetersi, quindi basta vedere dove inizia e finisce, dovrebbe essere facile vedere lo schema
Nota le ultime due voci sopra: La tassa viene prima di grand_total. Esso può essere possibile questo ordinamento è fuori di colpo, e l'imposta viene visualizzato dopo grand_total, quindi grand_total non avrà tasse applicate.
MODIFICARE:
Ok, quindi non ho visto la domanda sottoposta in realtà indica che l'ordinamento dei collettivi è il problema. Sospettavo che potesse trattarsi del problema, ma non l'ho provato io stesso in PHP7
C'è una soluzione, ma non è molto bella. Ogni nuova estensione inserita nel negozio, che inserisce i modelli nel raccoglitore, dovrebbe essere annotata e aggiunta ulteriormente allo smistamento, altrimenti le cose potrebbero andare ancora più male. In futuro può essere un po 'un problema di manutenzione.
Forzare semplicemente l'ordinamento inserendo uno specifico <sort_order>
nella configurazione dei totali. Puoi farlo tramite la tua estensione, che avrebbe solo un file config.xml, dove specifichi l'ordine per ciascun collezionista.
in config.xml, avere la direttiva come tale:
<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>
Utilizzare ampi spazi tra ogni direttiva di ordinamento, per consentire lo spazio per inserire ulteriori andando avanti.
Come accennato, non molto elegante, ma può risolvere il tuo problema immediato.
Si noti inoltre che ci sono altre direttive per i collezionisti nel sistema, quindi potrebbero anche essere sbagliate / necessitando di modifiche
Controlla l'estensione di vendita principale config.xml e cerca <totals>
Lì troverai:
<order_invoice>
<order_creditmemo>
<pdf>
Potrebbero essercene altri in altre estensioni, sia esso core / di terze parti
Spero possa aiutare.
PS: Non ho provato nulla di tutto ciò in PHP7. So che il posizionamento della direttiva sort_order funziona sotto php5.x