Plugin PDF | mode paiement/livraison + numéro fact

  • Posts: 57
  • Thank you received: 1
11 years 5 months ago #110526

Bonjour,

J'ai acheté le Plugin PDF. J'ai 4 problèmes auxquels je n'arrive pas à trouver les solutions.

1. Au lieu de facture.pdf, je souhaite que le client reçoive le numéro de facture complet (ex: FactureF1L24.pdf)
j'ai changé la ligne 188 du fichier attachinvoice.php comme suit
$mailer -> AddAttachment ( $invoiceFolder . DS . $invoiceFile , JText :: _ ( 'INVOICE' ) . str_pad ( $orderId , 4 , "0" , STR_PAD_LEFT ) . '.pdf' ) ;
mais cela envoie au client le numéro ID de la commande (ex: Facture0124.pdf). Quel code insérer ?

2. Je souhaite intégrer à la facture le mode de paiement et le mode de livraison choisi. Cela est-il possible ?

3. Dans l'adresse du magasin, j'ai inséré une balise image <img src=" sous.domaine.com/images/logo.jpg " width="100" height="142">
pour l'afficher sur les factures et les bons de livraison.
Cela fonctionne pour les bons de livraison mais sur la facture j'obtiens l'erreur ERROR n°6 : Impossible to load the image sous.domaine.com/images/logo.jpg . J'ai essayé les balises src="sous.domaine.com/images/logo.jpg" et src="../images/logo.jpg", mais cela ne fonctionne pas. Est-ce à cause de l’utilisation d'un sous-domaine ? Comment y remédier ?

4. J'aimerai que les clients puissent télécharger la facture pdf depuis le frontend en accédant à "Mon compte" puis "Voir vos commandes". Cela est-il possible ?


Merci d'avance de vos réponses. J’espère pas vous ennuyer avec des questions mille fois posées. Mais je cherche les solutions dans ce forum depuis plusieurs soirs sans les trouver !

Cordialement

Last edit: 11 years 5 months ago by Modepiko.

Please Log in or Create an account to join the conversation.

  • Posts: 2334
  • Thank you received: 403
11 years 5 months ago #110544

Bonjour,

1. Je pense que vous devez utiliser $data->data->order_number plutôt que $orderId (à tester, vous pouvez aussi faire un var_dump($data); pour visualiser les informations contenu dans la variable).
2. Il faut que vous modifiez la vue invoice du plugin, ajoutez ensuite ce code là où vous voulez voir apparaitre les méthode de livraison et de paiement:

<tr>
			<td>
			<?php if(!empty($this->shipping)){
				echo JText::_('HIKASHOP_SHIPPING_METHOD').' : '.$this->shipping->getName($this->order->order_shipping_method,$this->order->order_shipping_id).'<br/>';
			}?>
			<?php if(!empty($this->payment)){
				echo JText::_('HIKASHOP_PAYMENT_METHOD').' : '.$this->payment->getName($this->order->order_payment_method,$this->order->order_payment_id);
			}?>
			</td>
		</tr>
3. Vous devriez essayer d'uploader cette image sur le main si c'est possible, résoudre ce problème ne parait pas aisé.
4. Cela demande des connaissances en php, c'est une customisation un peu complexe.

The following user(s) said Thank You: Modepiko

Please Log in or Create an account to join the conversation.

  • Posts: 57
  • Thank you received: 1
11 years 5 months ago #110557

Merci Eliot pour la réponse rapide.

J'ai fait suivant vos conseils :

1. Fonctionne très bien, merci !
2. J'ai insérer le code en testant différent endroit / notamment ligne 283 après <fieldset class="hikashop_order_custom_fields_fieldset">
<tr> . Malheureusement, la facture arrive mais sans afficher ces lignes de code. Pourtant cela semble correct.
3. J'ai uploader sur le main, mais cela ne fonctionne toujours pas (même erreur 6). Ce qui me semble étrange, c'est que l'image s'affiche correctement sur le bon de livraison et sur la visualisation de la commande en front par le client.
4. J'abandonne alors cette idée.

Est-ce que pour les points 2 et 3, quelqu'un a réussi à le résoudre par un autre moyen ?

Merci à tous.

Last edit: 11 years 5 months ago by Modepiko.

Please Log in or Create an account to join the conversation.

  • Posts: 82868
  • Thank you received: 13378
  • MODERATOR
11 years 5 months ago #110563

2. Estes vous sure d'éditer le fichier plugins/hikashop/attachinvoice/attachinvoice/invoice.php ? Car c'est là qu'il faut faire la modification.
Aussi, il faut changer :
if(!empty($this->shipping)){
et:
if(!empty($this->payment)){
en :
if(true){

3. Il faut spécifier le chemin absolue ou l'url absolue pour que la library de conversion en PDF arrive à récupérer l'image.

4. Pas de modification de code nécessaire. Il suffit d'activer l'option "Allow users to print invoices on the front end" dans l'onglet Affichage de la configuration.

The following user(s) said Thank You: Modepiko

Please Log in or Create an account to join the conversation.

  • Posts: 57
  • Thank you received: 1
11 years 5 months ago #110602

2. Oui et je désespère d'arriver à ce que je veux ! La facture s'affiche mais toujours sans les modes de livraison et de payement ! J'ai modifié les lignes 281 à 290 du fichier annexé.

3. Là aussi, est-ce que je fais une erreur sur le chemin absolu ? J'ai mis l'image directement à la racine du site et également dans le dossier images du sous domaine et du domaine principal. J'ai essayé avec ce code dans "Adresse de votre magasin" = <img src="/images/logo_facture.jpg" width="200" height="66" /> et <img src="/logo_facture.jpg" width="200" height="66" /> mais toujours erreur ERROR n°6 : Impossible to load the image miel.apiculteur.ch/images/logo_facture.jpg

4. Merci, je vais passer à la version commerciale !

File Attachment:

File Name: invoice.txt
File Size:11 KB

Attachments:

Please Log in or Create an account to join the conversation.

  • Posts: 82868
  • Thank you received: 13378
  • MODERATOR
11 years 5 months ago #110606

1. Mettez votre code juste avant:

</table>
	<?php if(hikashop_level(2) && !empty($fields['order'])){?>

2. /logo_facture.jpg et /images/logo_facture.jpg sont tous les deux des chemins relatifs. Comme je l'ai dit, il faut mettre un chemin absolu genre miel.apiculteur.ch/images/logo_facture.jpg ou alors le chemin absolu du fichier depuis la racine de votre serveur.

Last edit: 11 years 5 months ago by nicolas.

Please Log in or Create an account to join the conversation.

  • Posts: 57
  • Thank you received: 1
11 years 5 months ago #110615

Merci à nouveau !

1. Si je le mets avant
</table>
<?php if(hikashop_level(2) && !empty($fields)){?>, il y a

Fatal error: Call to a member function getName() on a non-object in /home/httpd/vhosts/apiculteur.ch/subdomains/miel/httpdocs/plugins/hikashop/attachinvoice/attachinvoice/invoice.php on line 280.

2. en mettant miel.apiculteur.ch/images/logo_facture.jpg ou miel.apiculteur.ch/images/logo_facture.jpg, toujours pas d'affichage sur le pdf mais seulement sur le bon de livraison

Je vais encore essayer de chercher d'autres solutions, sinon je m'en contenterai pour l'instant.

Please Log in or Create an account to join the conversation.

  • Posts: 82868
  • Thank you received: 13378
  • MODERATOR
11 years 5 months ago #110642

1. Parfait, on avance.
Rajoutez le code:

<?php
$this->payment = hikashop_get('type.plugins');
$this->payment->type='payment';
$this->shipping = hikashop_get('type.plugins');
$this->shipping->type='shipping';
?>
juste avant votre code et cela fonctionnera.

2. Essayez avec un chemin de fichier absolu alors. Genre C:/wamp/www/monsite/images/logo.png

The following user(s) said Thank You: Modepiko

Please Log in or Create an account to join the conversation.

  • Posts: 57
  • Thank you received: 1
11 years 5 months ago #110662

Merci on avance à petit pas !

1. Ok maintenant les champs "livraisons" et "payement" figurent sur la facture... mais ils n'affichent pas les moyens choisis (les cases restent vides) :S !

<tr>
			<td>
            <?php
			$this->payment = hikashop_get('type.plugins');
			$this->payment->type='payment';
			$this->shipping = hikashop_get('type.plugins');
			$this->shipping->type='shipping';
			?>
			<?php if(true){
				echo JText::_('HIKASHOP_SHIPPING_METHOD').' : '.$this->shipping->getName($this->order->order_shipping_method,$this->order->order_shipping_id).'<br/>';
			}?>
			<?php if(true){
				echo JText::_('HIKASHOP_PAYMENT_METHOD').' : '.$this->payment->getName($this->order->order_payment_method,$this->order->order_payment_id);
			}?>
			</td>
		    </tr>


2. Pour le chemin absolu, je finirai par le trouver ! Mais cela ne fonctionne toujours pas pour le moment.

Avec /C:/wamp/www/apiculteur/images/logo_facture.jpg affiche correctement sur le bon de livraison mais toujours "Impossible to load the image miel.apiculteur.ch/C:/wamp/www/apiculteu...ges/logo_facture.jpg " pour le pdf

Avec C:/wamp/www/apiculteur/images/logo_facture.jpg pas d'affichage sur le bon de livraison et toujours erreur 6 pour le pdf

Merci infiniment pour le soutien ! Bonne journée

Please Log in or Create an account to join the conversation.

  • Posts: 2334
  • Thank you received: 403
11 years 5 months ago #110713

1. Pourriez vous essayer quelque chose comme var_dump($this->order); au dessous de $this->shipping->type='shipping'; et voir ce que cela affiche dans la facture?
Cela permettra de visualiser les valeurs contenues dans l'objet.

Please Log in or Create an account to join the conversation.

  • Posts: 57
  • Thank you received: 1
11 years 5 months ago #110799

1. Après avoir inséré le code, voilà ce que j'obtiens du côté de la facture PDF :

NULL Mode de livraison :
Mode de paiement :


2. Pour afficher l'image dans le pdf, je n'arrive pas à trouver la solution

Avec /C:/wamp/www/apiculteur/images/logo_facture.jpg le logo s'affiche correctement sur le bon de livraison mais toujours "Impossible to load the image miel.apiculteur.ch/C:/wamp/www/apiculteu...ges/logo_facture.jpg " pour le pdf

Pourquoi est-ce ok sur le bon de livraison et pas sur le pdf ? Est-ce que je devrais faire un changement de configuration de mon serveur (chmod) ? Est-ce que le sous-domaine pourrait poser le problème ?

Encore mille mercis

Last edit: 11 years 5 months ago by Modepiko.

Please Log in or Create an account to join the conversation.

  • Posts: 2334
  • Thank you received: 403
11 years 5 months ago #110843

1. Alors essayez un var_dump($order); et si cela marche remplacez les $this->order par $order
2. Pour l'image je n'ai malheureusement pas d'idée, Nicolas saura peut être mieux vous renseigner

Please Log in or Create an account to join the conversation.

  • Posts: 57
  • Thank you received: 1
11 years 5 months ago #110848

1. Malheureusement toujours pas la bonne solution :

Voilà le code :

<tr>
			<td>
            <?php
			$this->payment = hikashop_get('type.plugins');
			$this->payment->type='payment';
			$this->shipping = hikashop_get('type.plugins');
			$this->shipping->type='shipping';
			var_dump($order)
			?>
			<?php if(true){
				echo JText::_('HIKASHOP_SHIPPING_METHOD').' : '.$this->shipping->getName($order->order_shipping_method,$order->order_shipping_id).'<br/>';
			}?>
			<?php if(true){
				echo JText::_('HIKASHOP_PAYMENT_METHOD').' : '.$this->payment->getName($order->order_payment_method,$order->order_payment_id);
			}?>
			</td>
		    </tr>

et j'obtiens avec vos deux propositions : ERROR n°7 : The content of a TD tag does not fit on only one page


2. Si quelqu'un à une idée dans ce forum ?


Je sens qu'on va bientôt arriver à finir à clôturer ce post !

Last edit: 11 years 5 months ago by Modepiko.

Please Log in or Create an account to join the conversation.

  • Posts: 2334
  • Thank you received: 403
11 years 5 months ago #111034

A quel moment placez-vous ce code? Car après avoir jeté un oeil au code, la variable $order devrait fonctionner.
Essayez sans le var_dump avant les echo.

Please Log in or Create an account to join the conversation.

  • Posts: 57
  • Thank you received: 1
11 years 5 months ago #111177

Hélas, ce n'est encore pas la bonne solution.

Il s'affiche toujours sur la facture :

Mode de livraison :
Mode de paiement :


Mais rien ne s'affiche à côté !

Le code est placé suite à la réponse de Nicolas #110606 :

1. Mettez votre code juste avant:

</table>
<?php if(hikashop_level(2) && !empty($fields)){?>

Last edit: 11 years 5 months ago by Modepiko.

Please Log in or Create an account to join the conversation.

  • Posts: 2334
  • Thank you received: 403
11 years 4 months ago #111300

Etes vous sur que commande possède bien ces informations?
Si c'est le cas un accès à votre backend pourrait nous permettre d'aller jeter un oeil.
Vous pouvez nous envoyer ces informations par MP.

Please Log in or Create an account to join the conversation.

  • Posts: 2334
  • Thank you received: 403
11 years 4 months ago #111715

Bonjour,

Votre facture affiche bien la méthode de livraison et de paiement, c'était bien la solution que je vous avait donné avec $order.
Pour l'image en revanche je ne peux pas vous aider.

The following user(s) said Thank You: Modepiko

Please Log in or Create an account to join the conversation.

  • Posts: 57
  • Thank you received: 1
11 years 4 months ago #111824

Merci infiniment pour le support dévoué et efficace. Ça marche nickel !

Pour les prochains si les mêmes questions, je remets les codes complets :

1. Afficher le numéro de la facture sur le nom de fichier PDF

Modifier le fichier /plugins/hikashop/attachinvoice/attachinvoice.php
en insérant le code :

$mailer -> AddAttachment ( $invoiceFolder . DS . $invoiceFile , JText :: _ ( 'INVOICE' ) . str_pad ( $data->data->order_number, 4 , "0" , STR_PAD_LEFT ) . '.pdf' ) ;

après //Ok let's add the invoice to the mail now! The path is $invoiceFolder.DS.'invoice_'.$order->order_id.'.pdf
//STUPID J1.5 which does not let me access the phpMailer library directly and does not handle the name parameter for the attachment... GRRR


2 . Afficher le moyen de paiement et le mode de livraison sur la facture PDF

Modifier le fichier /plugins/hikashop/attachinvoice/attachinvoice/invoice.php
en insérant le code :
<tr>
			<td>
            <?php
			$this->payment = hikashop_get('type.plugins');
			$this->payment->type='payment';
			$this->shipping = hikashop_get('type.plugins');
			$this->shipping->type='shipping';
			?>
			<?php if(true){
				echo JText::_('HIKASHOP_SHIPPING_METHOD').' : '.$this->shipping->getName($order->order_shipping_method,$order->order_shipping_id).'<br/>';
			}?>
			<?php if(true){
				echo JText::_('HIKASHOP_PAYMENT_METHOD').' : '.$this->payment->getName($order->order_payment_method,$order->order_payment_id);
			}?>
			</td>
		    </tr>

avant :
</table>
	<?php if(hikashop_level(2) && !empty($fields['order'])){?>

Et pour l'image sur la facture PDF, je vais essayer de me débrouiller. Sinon tant pis, cela sera sans logo. Mais si quelqu'un a rencontré le même problème, merci de compléter ce post.

Last edit: 11 years 4 months ago by Modepiko.
The following user(s) said Thank You: Xavier

Please Log in or Create an account to join the conversation.

Time to create page: 0.096 seconds
Powered by Kunena Forum