php - Creando un solo cupón de Magento al azar
automation auto-generate (1)
Estoy teniendo algunos problemas. Lo que quiero hacer es generar automáticamente un único código de cupón aleatorio en Magento cada vez que alguien se suscriba a nuestro boletín informativo. El cupón cuesta 10 dólares y tendrá una exp. fecha de dos semanas después de la suscripción.
Por lo tanto, estoy tratando de escribir un guión simple que se dispare cuando se envíe el formulario "suscribirse a nuestro boletín" que hablará con Magento, pedirle a Magento un código de cupón individual, establecer algunas reglas básicas de precios (10 dólares de cualquier cosa) , un uso por cliente, un uso por cupón, caduca dos semanas después de la generación) y luego devuelve un código de cupón aleatorio (por ejemplo: WELCOME5798) que puede almacenarse en una variable que se aprobará junto con el primer nombre + apellido y e -mail a MailChimp a través de la API de MailChimp. Tengo todo esto resuelto EXCEPTO por cómo hacer que Mage genere dicho código a través de un script PHP y luego devolver dicho código (es decir, tengo mi formulario y sé cómo pasar los valores a MailChimp).
Soy nuevo en Magento, así que estoy teniendo un momento difícil. He visto el código en Mage / SalesRule / Model / Coupon y he visto algunos ejemplos de personas que resuelven preguntas algo similares, como aquí: Magento : crea códigos de cupón únicos a través del código y envíalos por correo al cliente
Pero realmente no sé por dónde empezar a hacer esto para mis propios fines. Podría usar algo de ayuda / ajuste directo. :( Gracias amigos.
Entonces, ¿cuál es tu pregunta? ¿Cómo generar un cupón para sus necesidades? ¿O cómo organizarlo en el módulo?
Puede usar event newsletter_subscriber_save_after para inyectar sus acciones personalizadas en el proceso de suscripción.
Aquí hay un ejemplo de creación de cupones según sus necesidades
<?php
/**
* Create coupon for fixed price discount
*
* @param int $customer_id
* @param float $discount
*/
public function createCoupon($customer_id, $discount)
{
$customer = Mage::getModel(''customer/customer'')->load($customer_id);
$customerGroupIds = Mage::getModel(''customer/group'')->getCollection()->getAllIds();
$websitesId = Mage::getModel(''core/website'')->getCollection()->getAllIds();
$customer_name = $customer->getName();
$couponCode = Mage::helper(''core'')->getRandomString(9);
$model = Mage::getModel(''salesrule/rule'');
$model->setName(''Discount for '' . $customer_name);
$model->setDescription(''Discount for '' . $customer_name);
$model->setFromDate(date(''Y-m-d''));
$model->setToDate(date(''Y-m-d'', strtotime(''+2 days'')));
$model->setCouponType(2);
$model->setCouponCode($couponCode);
$model->setUsesPerCoupon(1);
$model->setUsesPerCustomer(1);
$model->setCustomerGroupIds($customerGroupIds);
$model->setIsActive(1);
$model->setConditionsSerialized(''a:6:{s:4:/"type/";s:32:/"salesrule/rule_condition_combine/";s:9:/"attribute/";N;s:8:/"operator/";N;s:5:/"value/";s:1:/"1/";s:18:/"is_value_processed/";N;s:10:/"aggregator/";s:3:/"all/";}'');
$model->setActionsSerialized(''a:6:{s:4:/"type/";s:40:/"salesrule/rule_condition_product_combine/";s:9:/"attribute/";N;s:8:/"operator/";N;s:5:/"value/";s:1:/"1/";s:18:/"is_value_processed/";N;s:10:/"aggregator/";s:3:/"all/";}'');
$model->setStopRulesProcessing(0);
$model->setIsAdvanced(1);
$model->setProductIds('''');
$model->setSortOrder(1);
$model->setSimpleAction(''by_fixed'');
$model->setDiscountAmount($discount);
$model->setDiscountStep(0);
$model->setSimpleFreeShipping(0);
$model->setTimesUsed(0);
$model->setIsRss(0);
$model->setWebsiteIds($websitesId);
try {
$model->save();
} catch (Exception $e) {
Mage::log($e->getMessage());
}
}