Uno de nuestros clientes nos ha pedido que para premiar a aquellos usuarios que se subscriban a las newsletter creemos un cupón descuento de 2 euros y se lo enviemos al correo con el que se han subscrito. Os dejo el código que genera la regla si no existe y a continuación crea un cupón descuento, el resto os lo dejo a vosotros pero como podéis ver es extensible a cualquier otra situación similar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
function getCuponDescuento($ruleName = 'NEWSLETTER_SUBSCRIPTION', $ruleDescription = ''){ $now = Mage::getModel('core/date')->timestamp(time()); $rule = Mage::getModel('salesrule/rule')->load($ruleName, 'name'); /** * Si no existe la regla la creamos. */ if(!$rule->getData('rule_id')){ $fechaDesde = date('Y-m-d H:i:s', $now); $fechaHasta = date('Y-m-d H:i:s', strtotime('+50 year', $now)); $rule = Mage::getModel('salesrule/rule'); $rule->setName($ruleName) ->setDescription($ruleDescription) ->setIsActive(1) ->setIsAdvanced(1) ->setUsesPerCoupon(1) ->setUsesPerCustomer(1) ->setWebsiteIds(array(1)) ->setCustomerGroupIds(array(0,1)) ->setFromDate($fechaDesde) ->setToDate($fechaHasta) ->setSortOrder('') ->setSimpleFreeShipping('0') ->setApplyToShipping('0') ->setSimpleAction('cart_fixed') ->setDiscountAmount(2) ->setDiscountQty(null) ->setDiscountStep(0) ->setStopRulesProcessing(0) ->setCouponType(2) ->setUseAutoGeneration(1); try { $rule->save(); } catch (Exception $e) { return json_encode(array('status' => 0, 'error' => $e->getMessage())); } } /** * Generador de cupones. */ $generator = Mage::getModel('salesrule/coupon_massgenerator'); $generator ->setFormat(Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_ALPHANUMERIC) ->setDash(4) ->setLength(8) ->setPrefix('NEWS-') ->setSuffix(''); $rule->setCouponCodeGenerator($generator); $rule->setCouponType(Mage_SalesRule_Model_Rule::COUPON_TYPE_AUTO); $coupon = $rule->acquireCoupon(); // Nuestro cupón caducará a las 24 horas. $fechaCaducidad = strtotime('+24 hours', $now); $coupon->setExpirationDate($fechaCaducidad); $coupon->setIsDispatched(1); try { $coupon->save(); } catch (Exception $e) { return json_encode(array('status' => 0, 'error' => $e->getMessage())); } $couponCode = $coupon->getCode(); return json_encode(array('status' => 1, 'coupon' => $couponCode)); } |
Algunas de las posibles opciones del generador de cupones son:
- Generator->setFormat(): Tipo de cupón que vamos a generar, hay tres posibilidades, a saber:
- Letras y Números – Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_ALPHANUMERIC
- Solo Números – Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_NUMERIC
- Solo Letras – Mage_SalesRule_Helper_Coupon::COUPON_FORMAT_ALPHABETICAL
- setDash(int): Cada cuantos digitos queremos un guión.
- setLength(int): Longitud del cupón generado.
- setprefix(string): Cadena con la que va a comenzar nuestru cupón.
- setSufix(string): Si queremos que termine con una cadena en particular.
Para más información puedes consultar el modelo: Mage_SalesRule_Model_Coupon_Massgenerator
Comments are closed.