Jump to content

Générer automatiquement 15 000 bons de réduction uniques


Recommended Posts

Bonjour,

Comme le titre l'indique, je cherche une solution pour créer 15 000 bons de réduction (ils auront tous le même effet sur le prix du produit... Réduction de X% sur le prix)
Mais j'ai besoin que chaque code soit unique!

Est ce que quelqu'un a déjà eu ce besoin? Connait une solution?

Link to comment
Share on other sites

Alors voici ce qui arrive...
Si je ne met pas de nom dans le "nom code"

Et j'ai l'érreur suivante:
"1. le champ code est requis
2. le champ code est invalide"

si je met quelque chose dans le champs "code" ca me met l'erreur suivante:
The filed code should be empty.

Est ce que tu as une idée de comment régler ce problème?

EDIT: Je suis sur Prestashop 1.3.1.1

Link to comment
Share on other sites

Effectivement j'ai copier tes fichiers directement sur mon serveur...
Mais heureusement j'ai sauvegardé mes fichiers.

Donc il faut que je copie qu'une partie du code?

Est ce que quelqu'un peut me dire ce qu'il faut copier et ou?


Ci dessous j'ai uploadé les deux versions:

Mes fichiers de base:
1discount.php
1AdminDiscounts.php

Les fichiers de benscasi:
discount.php
AdminDiscounts.php

1AdminDiscounts.php

1discount.php

Discount.php

AdminDiscounts.php

Link to comment
Share on other sites

Ca fait longtemps que j'ai fait ca mais bon :
Dans discount.php :

$fieldsRequired enlever 'name'
$fieldsValidate enlever 'name' => 'isDiscountName'
Je pense que c'est tout

Dans AdminDiscount.php :

fonction postProcess
Remplace ca :

if ($discountName = Tools::getValue('name') AND Validate::isDiscountName($discountName) AND Discount::discountExists($discountName, Tools::getValue('id_discount')))
$this->_errors[] = Tools::displayError('A voucher of this name already exists. Please choose another name.');
if (Tools::getValue('submitAdd'.$this->table))
{
/* Checking fields validity */



par ca


//récupere la valeur de la checkbox generateur
$gene = Tools::getValue('generateur');
//Si enregistrer alors soit mettre a jour soit creer bon
if (Tools::getValue('submitAdd'.$this->table))
{
//teste si la case generateur est coché
if (!$gene)
{
//pas de generation donc verif du nom entré
if ($discountName = Tools::getValue('name') AND Validate::isDiscountName($discountName) AND Discount::discountExists($discountName, Tools::getValue('id_discount')) or $discountName==false)
$this->_errors[] = Tools::displayError('A voucher of this name already exists or the field code is empty. Please choose another name.');
}
else
{
//generation, verif que le champs code pas rempli
if ($discountName = Tools::getValue('name') and $discountName!='')
$this->_errors[] = Tools::displayError('The filed code should be empty.');
}
/* Checking fields validity */


Ensuite :
ca :


/* Object creation */
else
{
if ($this->tabAccess['add'] === '1')
{
$object = new $this->className();
$this->copyFromPost($object, $this->table);
$categories = Tools::getValue('categoryBox', null);
if (!$object->add(true, false, $categories))
$this->_errors[] = Tools::displayError('an error occurred while creating object').' '.$this->table.'';
elseif (($_POST[$this->identifier] = $object->id /* voluntary */) AND $this->postImage($object->id) AND $this->_redirect)
Tools::redirectAdmin($currentIndex.'&'.$this->identifier.'='.$object->id.'&conf=3&token;='.$token);
}


par


/* Object creation */
else
{
if ($this->tabAccess['add'] === '1')
{
$object = new $this->className();
$this->copyFromPost($object, $this->table);
$nb=intval($object->quantity);
//Si generateur coché faire boucle
if ($gene)
{
for ($i=1; $i<=$nb; $i++)
{
$nameGenere = self::genereDiscountName(6);
//teste si le bon existe deja
while (Discount::discountExists($nameGenere, Tools::getValue('id_discount')))
$nameGenere = self::genereDiscountName(6);
$object->name=$nameGenere;
//disponible une seule fois
$object->quantity=1;
$categories = Tools::getValue('categoryBox', null);
if (!$object->add(true, false, $categories))
$this->_errors[] = Tools::displayError('an error occurred while creating object').' '.$this->table.'';
}
if (($_POST[$this->identifier] = $object->id /* voluntary */) AND $this->postImage($object->id) AND $this->_redirect)
Tools::redirectAdmin($currentIndex.'&'.$this->identifier.'='.$object->id.'&conf=3&token;='.$token);
}
else//generateur pas coche un seul passage
{
$categories = Tools::getValue('categoryBox', null);
if (!$object->add(true, false, $categories))
$this->_errors[] = Tools::displayError('an error occurred while creating object').' '.$this->table.'';
elseif (($_POST[$this->identifier] = $object->id /* voluntary */) AND $this->postImage($object->id) AND $this->_redirect)
Tools::redirectAdmin($currentIndex.'&'.$this->identifier.'='.$object->id.'&conf=3&token;='.$token);
}
}


enleve :
* pour le name

Link to comment
Share on other sites

ensuite ajoute apres ca :


<input type="text" size="30" maxlength="32" name="name" value="'.htmlentities($this->getFieldValue($obj, 'name'), ENT_COMPAT, 'UTF-8').'" style="text-transform: uppercase;" id="code" />
*
news-new.gif
'.$this->l('Invalid characters: numbers and').' !<>,;?=+()@#"�{}_$%: 

'.$this->l('The voucher\'s code, at least 3 characters long, which the customer types in during check-out').'





ajoute :

'.$this->l('Automatic generator of discounts :').'


<input type="checkbox" name="generateur"'.(($this->getFieldValue($obj, 'generateur') == 1) ? ' checked="checked"' : '').' id="generateur" value="1" /> '.$this->l('Do not enter name of code').'





Pour finir ajoute cette fonction :

function genereDiscountName($size)
{
// Initialisation des caractères utilisables
$characters = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z");
for($i=0;$i<$size;$i++)
{
$password .= strtoupper($characters[array_rand($characters)]);
}
return $password;
}


Teste en local et dis moi !
Link to comment
Share on other sites

Pour info ça a marché pour moi sur une V 1.2.5

Mettre le fichier de Pierre Yves dans admin tabs... (faire une BU avant).

Aller dans le BO onglet Outils puis Imports. Pour voir les champs dispo pour le CSV, cliquer sur le menu déroulant et sélectionner VOUCHERS. La liste des champs est affichée sur la droite.

Peu importe l'ordre des colonnes du csv, les valeurs obligatoires sont:

Nom * Value Minimum amount Date START Date STOP Description

avec date en format américain.

Merci à Pierre Yves pour ses explications.

Link to comment
Share on other sites

Hello,
J'essaye de charger les données mais voici les codes erreurs que j'ai

# Voucher not valid (0/4976)
# Discount -> date_from = 12/01/2010
# Voucher not valid (1/8206)
# Discount -> date_from = 12/01/2010
# Voucher not valid (10/4475)
# Discount -> date_from = 12/01/2010
# Voucher not valid (11/2021)
# Discount -> date_from = 12/01/2010
# Voucher not valid (12/9420)
# Discount -> date_from = 12/01/2010


Voici un imprime écran des données que j'ai affiché, et de la dénomination que j'ai choisi!
est ce qu'il y a une erreur?

http://tomytomy.free.fr/print/print.png
Link to comment
Share on other sites

  • 2 weeks later...
  • 4 months later...

Bonjour,

Voici donc les fichiers utilisés pour un import de bons de réduction. Je l'ai utilisé avec la liste des bons fournie par Groupon.

Je remets le fichier de PY en PJ (compatible 1.2.5 & 1.3) ainsi que le csv

EDIT: Format Date & Heure doit impérativement être de cette forme: 2011-06-18 00:01:00
aaaa-mm-jj hh:mm:ss

A très vite.

AdminImport.php

csv import groupon.csv

Link to comment
Share on other sites

Encore bonjour Fab,

J'ai essayé l'import, le problème est la date, j'ai beau la mettre dans tt les formats (jj/mm/aa hh:hh ou jj/mm/aaaa hh:hh ou mm/jj/aa hh:hh ou mm/jj/aaaa hh:hh) mais rien ne change l'import ne marche pas.

PS : ma version de prestahsop 1.3.7

merci

45368_zwDGbOeLVbLSEjphHe7M_t

Link to comment
Share on other sites

Bonjour,

Je suis sur prestashop 1,4 et je n'arrive pas à faire fonctionner le fichier.
En fait au moment ou il me demande d'import les codes, il s'ouvre sur une demi page et plus moyen de rien faire.

est ce qu'il y aurait une solution ??

Merci d'avance,

Sophie

Link to comment
Share on other sites

  • 4 weeks later...

Bonjour à tous.

J'ai un soucis avec excel car lorsque je sauvegarde il y a un soucis avec le format csv car les dates aaaa-mm-jj comportent des tirés et si jeclique ok pour conserver le format actuel lorsque je le re-ouvre les dates ne sont plus au bon format mais au format français. Quelqu'un aurait-il une idée ???

Stephane.

www.lesruesaixoises.com

Link to comment
Share on other sites

  • 8 months later...

Bonjour a tous

j’utilise le patch sur une boutique version 1.4.7 prestashop

Jusqu'à la tout va bien

mais mon problème que lors de l'import il attribut directement les bons de réduction pour toute catégorie de produits mais je veux pouvoir les attribuer à une cathegorie precise

AIDEZ MOI SVP URGENT merci d'avance à tout le monde pour votre aide

Link to comment
Share on other sites

  • 1 month later...
  • 5 months later...

comment ça fonctionne au juste la génération de multi code promo automatique (unique) sous presta ?

si tu veux gérer tes bons de réductions en masse il faut soit passer par un module (tel que http://addons.prestashop.com/fr/edition-rapide-modules-prestashop/2020-gestionnaire-de-bons-de-reductions---manager-vouchers-.html) soit le faire manuellement (ce qui est impossible pour des milliers de bons, ou même des centaines...

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 months later...

@ coeos.pro

 

Le lien ne fonctionne pas, pouvez-vous donner un lien qui fonctionne ?

Le module fonctionne avec la version 1.5.2 ?

Cdlt

C'est bizarre il est "en ligne" depuis mon compte prestashop et pas moyen d'y acceder sur addons...

Pour l'instant le module n'est pas compatible 1.5.x, mais seulement 1.4 (dispo sur ma boutique : http://www.coeos.pro/boutique/fr/modules-prestashop/62-gestionnaire-de-bons-de-reductions.html) je verrai le problème avec addons la semaine prochaine

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...