Jump to content

Rendre prix spéciques modifiables en 1.4


Recommended Posts

bonjour a tous

 

Dans le fichier Adminproduct.php j'ai bien trouvé la ligne 1709 pour delete specific price et pour afficher modifier le prix j'ai ajouter en 1710 :

 

<th class="cell border" style="width: 2%;">'.$this->l('Modified').'</th>

 

 

en ligne 1744 j'ai trouver la fonction qui supprimer le prix specifique, j'ai donc ajouter en 1745 cette ligne afin de rendre le prix modifiable :

 <td class="cell border"><a href="'.$currentIndex.(Tools::getValue('id_category') ? '&id_category='.Tools::getValue('id_category') : '').'&id_product='.(int)(Tools::getValue('id_product')).'&updateproduct&editSpecificPrice&id_specific_price='.(int)($specificPrice['id_specific_price']).'&token='.Tools::getValue('token').'"><img src="../img/admin/edit.gif" alt="'.$this->l('Edit').'" /></a></td>

Malheureusement cela me renvoi a la fiche produit sans edition du prix spécifique, j'ai du oublier quelque chose ou complètement planté.

 

Merci de votre aide

Link to comment
Share on other sites

Bonjour.

 

Je n'ai rien compris à votre message. Je vous conseil donc d’éditer ou de poster un nouveau message clair, définissant :

- votre objectif,

- vos modifications (en mettant le code original)

- les références au code que vous affichez

- votre problème

Et pensez à vous relire car j'ai vraiment rien compris...

Link to comment
Share on other sites

bonsoir

 

dans la version de prestashop 1.4.5.1 comme dans la 1.3 si l'on fait la création d'un prix specifique, on ne peut modifier

celui-ci, obligation de le detruire et dans refaire un autre.

 

Mon objectif est de rendre modifiable ce prix au lieu de le supprimer et dans créer un autre.

 

En espérant etre plus clair

 

merci d'avance

Link to comment
Share on other sites

D'accord, je vois de quoi vous parlez.

 

Je vais bientôt partir du taff, je ne pourrais donc vous aider ce soir. Néanmoins, il me semble que du JavaScript + AJAX vous aiderait peut être, et d'une façon beaucoup plus simple.. Un bouton "Modifier" ou une îcone, as you want, avec l'id du prix specifique dans l'attribut "id" du bouton ou de l'îcone, un appel AJAX envoyant cet ID et une modification en retour. Je dis ça à froid, je n'ai pas analyser plus en détail le problème. Il y a peut être une meilleur solution.

 

Je verrais ça en détail demain matin, à moins qu'on vous aide entre-temps.

Link to comment
Share on other sites

Bon, je viens de regarder le code en détail.

 

Premièrement, vous n'avez pas besoin de votre nouvelle colonne "Modifier". C'est mon avis personnel, mais la colonne "Action" parle d'elle-même.

 

Pour rajouter votre "edit.gif", il vous suffit de remplacer ça :

 

Ligne 1743 de mon AdminProducts.php

<td class="cell border"><a href="'.$currentIndex.(Tools::getValue('id_category') ? '&id_category='.Tools::getValue('id_category') : '').'&id_product='.(int)(Tools::getValue('id_product')).'&updateproduct&deleteSpecificPrice&id_specific_price='.(int)($specificPrice['id_specific_price']).'&token='.Tools::getValue('token').'"><img src="../img/admin/delete.gif" alt="'.$this->l('Delete').'" /></a></td>

 

par quelque chose comme ça :

 

<td class="cell border">
  <a href="'.$currentIndex.(Tools::getValue('id_category') ? '&id_category='.Tools::getValue('id_category') : '').'&id_product='.(int)(Tools::getValue('id_product')).'&updateproduct&deleteSpecificPrice&id_specific_price='.(int)($specificPrice['id_specific_price']).'&token='.Tools::getValue('token').'"><img src="../img/admin/delete.gif" alt="'.$this->l('Delete').'" /></a>
  <a href="'.$currentIndex.(Tools::getValue('id_category') ? '&id_category='.Tools::getValue('id_category') : '').'&id_product='.(int)(Tools::getValue('id_product')).'&updateproduct&editSpecificPrice&id_specific_price='.(int)($specificPrice['id_specific_price']).'&token='.Tools::getValue('token').'"><img src="../img/admin/edit.gif" alt="'.$this->l('Edit').'" /></a>
 </td>

 

Vous étiez bien parti, mais la variable editSpecificPrice n'existe pas pour Prestashop, il faut donc la vérifier et, si elle existe, faire une action ! Avec un petit CTRL + F, j'ai trouvé ou se faisait l'action de suppression :

 

Ligne 749 de mon AdminProducts.php

elseif (Tools::isSubmit('deleteSpecificPrice'))

 

Il vous suffit simplement de mettre un autre elseif en verifiant si editSpecificPrice existe et d'effectuer une requête SQL. Vous aurez toutes les informations nécessaires pour faire une requête. Je vous laisse le soin de chercher un peu.

 

PS: d'après ce que j'ai vu, il est simple de surcharger la fonction postProcess() (celle qui s'occupe de tout ça). Mais si vous n'avez pas les connaissances nécessaires, alors modifier le code mais au moins je vous aurais averti O:

Link to comment
Share on other sites

bonjour

 

Merci, en effet pas de besoin de faire une autre colonne.

 

J'ai trouvé une partie mais même en mettant une nouvelle ligne elseif cela ne fonctionne pas de plus aucune commande edit ou autre pour specificprice

 

je pense que cette modification est possible mais a condition de faire enormement de changement et sans sécurité complète de la bonne prise en charge pa la suite de ces prix.

 

merci quand meme

Link to comment
Share on other sites

  • 11 months later...

Bonjour,Je cherche aussi une solution à ce problème et je pense que l'on peut utiliser une autre solution.En regardant les déclinaisons il y a une option qui permet de les modifier.J'ai donc le lien qui appel un petit bout de js :

[url=""]	 [img=../img/admin/edit.gif][/url]

Ensuite le js :

function fillSpecificprice(sp_id_specific_price,sp_id_product,sp_id_shop,sp_id_currency,sp_id_country,sp_id_group,sp_price,sp_from_quantity,sp_reduction,sp_reduction_type,sp_from,sp_to){init_elemspec();getE('sp_id_specific_price').value = sp_id_specific_price;getE('sp_id_product').value = sp_id_product;getE('sp_id_shop').value = sp_id_shop;getE('sp_id_currency').value = sp_id_currency;getE('sp_id_country').value = sp_id_country;getE('sp_id_group').value = sp_id_group;getE('sp_price').value = sp_price;getE('sp_from_quantity').value = sp_from_quantity;getE('sp_reduction').value = sp_reduction;getE('sp_reduction_type').value = sp_reduction_type;getE('sp_from').value = sp_from;getE('sp_to').value = sp_to;  if (sp_id_currency == 0)  {  getE('sp_id_currency').options[getE('sp_id_currency').selectedIndex].value = 0;  getE('sp_id_currency').selectedIndex = 0;  }   else if (sp_id_currency == 1)  {  getE('sp_id_currency').options[getE('sp_id_currency').selectedIndex].value = 1;  getE('sp_id_currency').selectedIndex = 1;  }   else if (sp_id_currency == 2)  {  getE('sp_id_currency').options[getE('sp_id_currency').selectedIndex].value = 2;  getE('sp_id_currency').selectedIndex = 2;  }   else if (sp_id_currency == 3)  {  getE('sp_id_currency').options[getE('sp_id_currency').selectedIndex].value = 3;  getE('sp_id_currency').selectedIndex = 3;  }  if (sp_id_country == 0)  {  getE('sp_id_country').options[getE('sp_id_country').selectedIndex].value = 0;  getE('sp_id_country').selectedIndex = 0;  }  if (sp_id_group == 0)  {  getE('sp_id_group').options[getE('sp_id_group').selectedIndex].value = 0;  getE('sp_id_group').selectedIndex = 0;  [spam-filter]function init_elemspec(){if (elem.length)  for (i = elem.length - 1; i >= 0; i--)   if (elem[i])	elem.remove(i);getE('sp_id_currency').selectedIndex = 0;getE('sp_id_country').selectedIndex = 0;getE('sp_id_group').selectedIndex = 0;}

 

Et je supprime le display:none sur display:none sur <div id="add_specific_price" style="display: none;">

 

Mais comme je n'ai pas une grande connaissance en js je cherche ce qui ne va pas.

Ckarone

Edited by ckarone (see edit history)
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...