Estás leyendo la publicación: Cómo restaurar el código de cupón después de la cancelación del pedido en Magento 2
espacio de nombres Proveedor\Extensión\Observador;
use Magento\SalesRule\Model\Coupon;
use Magento\SalesRule\Model\RuleFactory;
observador de clase
{
modelo de cupón de $ protegido;
regla protegida $;
función pública __construir(
Cupón $cupónModelo,
RuleFactory $regla
)
{
$this->couponModel = $couponModel;
$esta->regla = $regla;
}
función pública ejecutar ($ observador)
{
$evento = $observador->getEvent();
$pedido = $evento->getPayment()->getOrder();
if ($pedido->canCancelar()) {
if ($código = $pedido->getCouponCode()) {
$cupón = $este->modelo_cupón->crear()->cargar($código, ‘código_cupón’);
$cupón->setTimesUsed($cupón->getTimesUsed() – 1);
$cupón->guardar();
if ($clienteId = $pedido->getClienteId()) {
if ($clienteCupón = $este->regla->crear()->cargar($cupón->getId())) {
$CupónCliente->setTimesUsed($CupónCliente->getTimesUsed() – 1);
$clienteCupón->guardar();
}
}
}
}
$urlInterface = \Magento\Framework\App\ObjectManager::getInstance()->get(‘Magento\Framework\UrlInterface’);
return $urlInterface->getCurrentUrl();
}
}