Ajouter une ligne spécifique au-dessus du produit dans la facture/commande

  • Posts: 35
  • Thank you received: 4
  • Hikashop Business
8 months 1 week ago #354606

-- url of the page with the problem -- : lise-whales.com/boutique
-- HikaShop version -- : 4.7.5
-- Joomla version -- : 4.3.3
-- PHP version -- : 8.0
-- Browser(s) name and version -- : firefox

Bonjour,

je vends deux types de produits :
- des prestations de services (mes romans)
- de la vente de marchandise (marque-pages, peluches, etc.)

Sur les commandes et les factures, seul le nom du produit apparaît dans la colonne "produit"

Or je voudrais pouvoir ajouter une caractéristique avant le nom du produit pour le définir, soit en prestation de service, soit en vente de marchandise.

exemple :
Prestation de service
Roman....
Vente de marchandise
Marque-page Séquoia
Vente de marchandise
Marque-page redwood

Est-il possible de le faire ?

Merci

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

  • Posts: 81604
  • Thank you received: 13082
  • MODERATOR
8 months 1 week ago #354611

Bonjour,

Si vous créez un champ personnalisé de la table "produit" avec les valeurs "Prestation de service" et "Vente de marchandise" et de type "single dropdown", alors dans chaque produit, vous pourrez sélectionner son type avec ce champ.
De plus, dans les options du champ personnalisé, vous avez des options d'affichage, y compris des options d'affichage dans les emails qui vous permettront d'afficher la valeur du champ automatiquement dans l'email.
Ce sera sous la forme d'une colonne additionnelle dans le tableau des produits de la commande.
Si vous voulez un autre affichage, il est également possible d'utiliser un tag produit genre {LINEVAR:product.xxx} où xxx est le nom de colonne du champ. Vous pourrez par exemple le mettre avant {LINEVAR:PRODUCT_NAME} pour l'avoir juste avant le nom du produit.

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

  • Posts: 35
  • Thank you received: 4
  • Hikashop Business
8 months 1 week ago #354655

Merci pour votre réponse.

Dans le cas de l'autre affichage, j'insère le tag produit {LINEVAR:product.xxx} où xxx est le nom de colonne du champ directement sur la vue INVOICE, c'est ça ?

Ou bien dans la vue order _ product ? et cela sera transférer sur la facture ainsi que sur la commande ?

D'autre part, existe-t-il un tag qui permet d'afficher le numéro de commande en dessous du numéro de facture ?

Je voudrais le faire apparaître comme ceci :
Facture F-000x
Référence commande : C-000x


J'avais pensé insérer un code du genre <?php echo $number.$order->order_number; ?> à l'intérieur d'une <div>

Mais je voudrais aussi pouvoir avoir la possibilité de ne pas mettre la référence sur certaines factures. Donc, j'ai pensé créer un champ personnalisé de type single dropdown avec comme première valeur <?php echo $number.$order->order_number; ?> et comme seconde valeur un champ vide. Mais je ne sais pas si c'est possible.

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

  • Posts: 81604
  • Thank you received: 13082
  • MODERATOR
8 months 1 week ago #354659

Bonjour,

1. Non, je parlais des emails de notification dans Système>Emails. Pour les invoices, il faut en effet faire un override de vue mais cela demande d'utiliser du code PHP.
Mais rien de bien compliqué.
Par exemple dans order / invoice, avant:

<?php echo $product->order_product_name; ?>
vous pouvez mettre:
<?php echo $this->products[$product->product_id]->xxx; ?>
où xxx est le nom de colonne du champ.

2. Le numéro de facture est affiché avec:
echo JText::_('INVOICE').': '.$this->element->order_invoice_number;
dans order / invoice. Donc pour avoir le numéro de commande en dessous, il faudrait rajouter après:
echo '<br/>'.JText::_('Numéro de commande').': '.$this->element->order_number;

3. Vous ne pouvez pas mettre de code PHP dans les valeurs d'un champ personnalisé.
Ce que vous pouvez faire c'est créer un champ personnalisé "order" avec les valeurs oui / non sélectionnables. Ensuite, dans le code vous faites quelque chose comme cela:
if($this->element->xxx == 'oui') {
  echo '<br/>'.JText::_('Numéro de commande').': '.$this->element->order_number;
}
où xxx est le nom de colonne du champ. Ainsi, dans chaque commande vous pourrez activer ce champ pour avoir le numéro de commande affiché dans la facture.

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

  • Posts: 35
  • Thank you received: 4
  • Hikashop Business
8 months 1 week ago #354680

Waouh, merci pour cette réponse détaillée. Je vais le tester !

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

  • Posts: 35
  • Thank you received: 4
  • Hikashop Business
5 months 2 weeks ago #356730

Bonjour,

ces codes fonctionnent très bien.

J'ai même créé des champs personnalisés avec pour table order de type liste simple ou texte que j'ai appelés avec le code suivant :

<?php echo $this->element->xxx; ?>


Pour compléter votre réponse 3), j'ai eu besoin d'alterner le numéro de la commande avec un champ personnalisé de table order de type texte
et j'ai ensuite utilisé ce code :
<?php
		if(!empty($this->element->xxx)) {
		echo ' '.JText::_('Titre').' : '.$this->element->xxx;
		} else {
		echo ' '.JText::_('Numéro de commande').' : '.$this->element->order_number;
		}
	?>

Lorsque je rentre une valeur dans le champ de text, celui-ci apparaît sur la facture. S'il reste vide, c'est le numéro de commande qui apparaît.


Belle journée

Last edit: 5 months 2 weeks ago by Lise Whales.
The following user(s) said Thank You: Philip

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

  • Posts: 4542
  • Thank you received: 612
  • MODERATOR
5 months 2 weeks ago #356750

Bonjour,

Merci beaucoup pour votre retour et votre complément d'information qui enrichisse notre forum et pourra aider d'autres personnes.
Cordialement

The following user(s) said Thank You: Lise Whales

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

Time to create page: 0.070 seconds
Powered by Kunena Forum