Jump to content

[1.6.1.x] Override un module


Recommended Posts

Bonjour,

 

J'ai un module qui permet de générer des bons de réductions. Je souhaite mettre une priorité sur les bons générés. Le module utilise bien la class CartRule(), j'ai donc ajouter dans le module :

$cartRule->priority = 10; // priorité à 10

Le problème ce que je tape directement dans le fichier du module et en cas de mise à jour du module, faut  penser à le remettre (pas top).

Je souhaite donc faire un override du ficher php du module mais ce fichier est en fait un modèle, il se trouve dans /modules/mon_modules/models/MonModel.php.

 

J'ai tenté dans faire un override dans /override/modules/mon_module/models/MonModel.php (qui contient la modification cité plus haut).
Mon override n'est pas pris en compte et garde celui du module.

 

Ma question est donc comment faire un override d'un modèle d'un module sous un prestashop 1.6.1.x ?

 

 

Link to comment
Share on other sites

Merci pour ton retour.

 

Oui j'ai tenté ça et ensuite j'ai mis la méthode que je souhaite override.

 

Voici le code :

<?php
/**
 * Mon Override
 *
 */

if (!defined('_PS_VERSION_'))
	exit;


class RewardsModelOverride extends RewardsModel
{
	public static function createDiscount($credits)
	{
		$context = Context::getContext();
		$id_template = (int)MyConf::getIdTemplate('core', (int)$context->customer->id);

		/* Generate a discount code */
		$code = NULL;
		do $code = MyConf::get('REWARDS_VOUCHER_PREFIX', null, $id_template).Tools::passwdGen(6);
		while (CartRule::cartRuleExists($code));

		/* Voucher creation and affectation to the customer */
		$cartRule = new CartRule();
		$cartRule->id_customer = (int)$context->customer->id;
		$cartRule->date_from = date('Y-m-d H:i:s', time() - 1); /* remove 1s because of a strict comparison between dates in getCustomerCartRules */
		$cartRule->date_to = date('Y-m-d H:i:s', time() + (int)MyConf::get('REWARDS_VOUCHER_DURATION', null, $id_template)*24*60*60);
		$cartRule->description = MyConf::get('REWARDS_VOUCHER_DETAILS', (int)$context->language->id, $id_template);
		$cartRule->quantity = 1;
		$cartRule->quantity_per_user = 1;
		$cartRule->highlight = (int)MyConf::get('REWARDS_DISPLAY_CART', null, $id_template);
		$cartRule->partial_use = (int)MyConf::get('REWARDS_VOUCHER_BEHAVIOR', null, $id_template);
		$cartRule->code = $code;
		$cartRule->active = 1;
		$cartRule->priority = 20;// <-------------- Ma modification
		$cartRule->reduction_amount = self::getCurrencyValue($credits, $context->currency->id);
		$cartRule->reduction_tax = 1;
		$cartRule->reduction_currency = (int)$context->currency->id;
		$cartRule->minimum_amount = (float)MyConf::get('REWARDS_MINIMAL', null, $id_template);
		$cartRule->minimum_amount_tax = (int)MyConf::get('REWARDS_MINIMAL_TAX', null, $id_template);
		$cartRule->minimum_amount_currency = (int)Configuration::get('PS_CURRENCY_DEFAULT');
		$cartRule->minimum_amount_shipping = (int)MyConf::get('REWARDS_MINIMAL_SHIPPING', null, $id_template);
		$cartRule->cart_rule_restriction = (int)(!(bool)MyConf::get('REWARDS_VOUCHER_CUMUL_S', null, $id_template));
		
		// ..... quelqes lignes de code

	}
}
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...