Jump to content

Incohérence suite update fichier d'un produit dématérialisé


Recommended Posts

Bonjour,

 

On peut attacher un fichier à un produit dématérialisé.

Ce fichier dématérialisé peut avoir une durée dans le temps ou par nombre de téléchargement.

On peut activer l'envoi d'un mail avec lien de téléchargement lors de l'achat d'un produit dématérialisé.

L'admin permet de modifier le fichier du produit dématérialisé.

 

Exemple 1 :

=========

1) La personne achète un produit dématérialisé (v1) le 02/02/2014 et reçoit un mail avec lien de téléchargement.

2) Le 15/02/2014 le marchand modifie le fichier du produit (v2)

3) Si la personne clique sur le lien de téléchargement du fichier le 30/02/2014 elle a comme message "Ce produit n'existe plus"
4) L'accès aux fichiers depuis leur détail de commande n'est pas intuitif, résultat les gens appellent.

 

Résultat attendu :

- Soit renvoyer le fichier v1 ou un message d'erreur "Le produit a été mis à jour"

- Soit et je pense plus souhaitable renvoyer le fichier v2

 

Je ne maitrise pas encore github, maitrise mal les hooks/surcharges de méthodes et je suis pas expert prestashop mais grosso modo voici ce que j'ai modifié pour avoir un comportement plus normal.

j'ai modifié

 

 

clases/order/orderdetail.php

 

Ajout de :

 public static function getDownloadFromOrder($order) {
        if ($order == '')
            return false;
        $sql = 'SELECT *
		FROM `' . _DB_PREFIX_ . 'order_detail` od
		LEFT JOIN `' . _DB_PREFIX_ . 'product_download` pd ON (od.`product_id`=pd.`id_product`)
                WHERE od.`id_order` =' . $order . '		
                AND pd.`active` = 1';
        return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql);
    }

/controllers/getFileController.php

 

J'ai remplacé

if (!($info = OrderDetail::getDownloadFromHash($hash)))
				$this->displayCustomError('This product does not exist in our store.');

par

if (!($info = OrderDetail::getDownloadFromOrder(Tools::getValue('id_order'))))
   $this->displayCustomError('This product does not exist in our store.');
 $order_details = OrderDetail::getDownloadFromOrder(Tools::getValue('id_order'));
 $filename = $order_details['filename'];  
Edited by Anak1Dev (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...