Jump to content

Faire Un Requette Spécifique Sur L'id_Order


Recommended Posts

Bonsoir,

 

Je souhaite ajouter un fichier .csv contenant le récap d'une commande au mail envoyé par le fichier mailalerts.php

J'ai donc modifié le fichier mailalerts.php en ajoutant le code suivant :

$sqlE = "SELECT o.id_order, SUBSTR(c.email, 1, 5), fm.field_value FROM
			ps_orders o, ps_customer c, ps_fmm_custom_userdata fm
			WHERE c.id_customer = o.id_customer AND o.id_order = fm.id_order AND o.id_order = ".(int)$order->id;

			$orderlist = Db::getInstance()->ExecuteS($sqlE);

			$file = fopen(_PS_ROOT_DIR_.'/archives/export.csv', 'w');
			$firstline = "E;Num commande;Num Client AD;Commande interne;".$id_order;
			$secondline = "L;Ref produit;Nom produit;Quantité;Prix;Date;Message";
			fwrite($file, $firstline."\r\n");
			fwrite($file, $secondline."\r\n");
			// 1ere Boucle d'affichage des informations de la ligne d'entête L
			foreach($orderlist AS $orderline){
				fwrite($file, "E;");
				fwrite($file, implode(';', $orderline)."\r\n");


					/****** Sélection des champs pour les secondes lignes *****/
					$sqlL = "SELECT DISTINCT od.product_reference as Reference, od.product_name, od.product_quantity, od.product_price, o.date_add, me.message as message_name

					FROM
					ps_orders o,
					ps_customer c,
					ps_order_detail od,
					ps_product p,
					ps_customer_thread th,
					ps_customer_message me,
					ps_fmm_custom_userdata fm

					WHERE
					o.id_order = $id_order AND o.id_customer = c.id_customer
					AND o.id_order = od.id_order
					AND od.product_id = p.id_product
					AND o.id_order = th.id_order
					AND th.id_customer_thread = me.id_customer_thread
					AND o.id_order = fm.id_order
						";

					$orderlistL = Db::getInstance()->ExecuteS($sqlL);
					// 2nd Boucle d'affichage des informations de la ligne d'entête E correspondant à la ligne L
					foreach($orderlistL AS $orderlistL){
						fwrite($file, "L;");
						fwrite($file, implode(';', $orderlistL)."\r\n");
						}

			}
			fclose($file);

			$fileAttachment['content'] = file_get_contents(_PS_ROOT_DIR_.'/archives/export.csv'); //File path
	    $fileAttachment['name'] = 'Export'; //Attachment filename
	    $fileAttachment['mime'] = 'application/vnd.ms-excel'; //mime file type

			if ($dir_mail)
				Mail::Send(
					$mail_id_lang,
					'new_order',
					sprintf(Mail::l('Nouvelle commande : #%d - %s', $mail_id_lang), $order->id, $order->reference),
					$template_vars,
					$merchant_mail,
					null,
					$configuration['PS_SHOP_EMAIL'],
					$configuration['PS_SHOP_NAME'],
					$fileAttachment,
					null,
					$dir_mail,
					null,
					$id_shop
				);

L'envoie du mail et de la pièce jointe fonctionne mais je bloque sur la requette que ne me renvoie rien : je n'arrive pas à lui passer l'id_order dans la clause WHERE... si je force l'id_order en indiquant un chiffre cela fonctionne... c'est certainement un détail mais il ne me saute pas au yeux...

Link to comment
Share on other sites

Bonjour Franckm100,

 

Oui ma variable est bien vide (!!) lorsque je l'utilise dans ma requette (ici :avec (int)$order->id; mais aussi essayé avec $id_order).

Par contre, plus bas, elle contient bien mon id recherché dans la ligne

$firstline = "E;Num commande;Num Client AD;Commande interne;".$id_order;

Qu'enttends-tu par

 

Fais-tu un var_export de ton objet $order pour voir si il est bien rempli ?

 

Merci de ton aide

Link to comment
Share on other sites

Attention $id_order et $order->id n'est pas la même chose...

 

Manifestement, dans le script, en amont est défini une variable $id_order qui est un entier définissant l'ID de la commande.

 

$order->id est un appel à la valeur de la variable id dans l'instance en cours de l'objet Order. Ici, manifestement l'objet $order n'est pas défini

 

Vu que par contre tu as bien l'id via $id_order, tu peux très bien faire au départ de ton script une nouvelle instance de ta classe Order :

$order = new Order($order_id);

Et à ce moment, $order sera un objet possédant toutes les valeurs de la commande et notamment bien sûr sont ID. Et à ce moment $order->is existera bien.

 

 

Fais-tu un var_export de ton objet $order pour voir si il est bien rempli ?

Faire simplement var_export($order) pour voir ce qu'il y a dans ton objet

Edited by franckm1000 (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...