How to fix «Call to undefined method processAdditionalValidation()» after upgrading Magento to 2.2.6?

(Dmitry Fedyuk) #1

Magento <= 2.2.6 uses a misspelled method \Magento\Shipping\Model\Carrier\AbstractCarrier::proccessAdditionalValidation():

Notice the misspelled word «proccess».

Magento 2.2.6 tries to fix it with the following commit:

But the fix is low-quality because it did not update the \Magento\Shipping\Model\Carrier\AbstractCarrierInterface interface: the interface still uses the proccessAdditionalValidation misspelling:

That is why a third-party shipping method will fail if it just implements the \Magento\Shipping\Model\Carrier\AbstractCarrierInterface interface: the \Magento\Shipping\Model\Shipping::collectCarrierRates() metod violates the interface and calls the processAdditionalValidation() method which is absent in the interface.

How to fix

You should implement the processAdditionalValidation() metod in your third-party shipping module. You can do it by analogy with the \Magento\Shipping\Model\Carrier\AbstractCarrier class:


How did I upgrade from Magento 2.1.9 to 2.3.0?