Afficher infos client (login ou email) sur facture

  • Posts: 40
  • Thank you received: 0
13 years 1 month ago #26359

Bonjour,

J'aimerais pouvoir rappeler au client son login et/ou son email sur les documents qu'il reçoit ou peut imprimer.
Comment accéder à ces données (notamment à partir de la vue 'order/show' )?


Genev.

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

  • Posts: 82868
  • Thank you received: 13378
  • MODERATOR
13 years 1 month ago #26369

Comme cela:

$user =& JFactory::getUser();
echo 'username: '.$user->username;
echo 'email: '.$user->email;

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

  • Posts: 40
  • Thank you received: 0
13 years 1 month ago #26886

Merci :-)

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

  • Posts: 40
  • Thank you received: 0
13 years 1 month ago #26896

Bonjour,
Nicolas, ta solution fonctionne bien à partir du front-end, mais comme elle récupère le user courant, ce n'est pas applicable pour les shipping invoices et invoices depuis le back-end ; il faudrait récupérer les infos du client et non de l'utilisateur connecté.

as-tu une idée, là vite fait ;-) ?

à partir de la vue order/invoice du back-end donc

Last edit: 13 years 1 month ago by jlhosch. Reason: précision

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

  • Posts: 82868
  • Thank you received: 13378
  • MODERATOR
13 years 1 month ago #26897

Comme cela:

$userClass = hikashop_get('class.user');
$user = $userClass->get($order->order_user_id);
echo 'username: '.$user->username;
echo 'email: '.$user->email;

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

  • Posts: 40
  • Thank you received: 0
13 years 1 month ago #26898

nickel, merci beaucoup

Genev.

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

  • Posts: 138
  • Thank you received: 2
11 years 5 months ago #109582

Bonjour,

J'ai repris ce code pour ajouter username et email sous l'adresse de livraison dans la facture dans order/invoice.php.
Mais je n'affiche que 2 champs vides...
Ce code est-il valable pour la dernière version d'Hikashop ?
Merci.

PS

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

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

order/invoice.php c'est comme cela qu'il faut faire:
$userClass = hikashop_get('class.user');
$user = $userClass->get($this->order->order_user_id);
echo 'username: '.$user->username;
echo 'email: '.$user->email;

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

  • Posts: 138
  • Thank you received: 2
11 years 5 months ago #109665

Bonjour,


Oui, c'est bien le code que j'avais noté.
Mais ça ne fonctionne pas...

J'ai inséré le code comme ceci :

<table width="100%">
          <tr>
            <?php if($this->invoice_type=='full' && !empty($this->element->billing_address)){?>
            <td>
              <fieldset class="adminform" id="htmlfieldset_billing">
              <legend style="background-color: #FFFFFF;"><?php echo JText::_('HIKASHOP_BILLING_ADDRESS'); ?></legend>
                <?php
                  $this->setLayout('address_template');
                  $html = $this->loadTemplate();
                    foreach($this->element->fields as $field){
                    $fieldname = $field->field_namekey;
                    $html=str_replace('{'.$fieldname.'}',$this->fieldsClass->show($field,$this->element->billing_address->$fieldname),$html);
                  }
                    echo str_replace("\n","<br/>\n",trim(str_replace("\n\n","\n",preg_replace('#{(?:(?!}).)*}#i','',$html)),"\n"));
[b]/**
 * Affichage email + username
 */          
$userClass = hikashop_get('class.user');
$user = $userClass->get($this->order->order_user_id); ?>
<br/>
<? echo 'username: '.$user->username;?>
<br/>
<? echo 'email: '.$user->email;[/b]
               ?>

              </fieldset>
            </td>
            <?php }?>
            <td>
            <?php
              if(!empty($this->element->order_shipping_id) && !empty($this->element->shipping_address)){
                ?>
                <fieldset class="adminform" id="htmlfieldset_shipping">
                  <legend style="background-color: #FFFFFF;"><?php echo JText::_('HIKASHOP_SHIPPING_ADDRESS'); ?></legend>
                  <?php
                    if(empty($this->element->override_shipping_address)) {
                      $this->setLayout('address_template');
                      $html = $this->loadTemplate();
                      foreach($this->element->fields as $field){
                        $fieldname = $field->field_namekey;
                        $html=str_replace('{'.$fieldname.'}',$this->fieldsClass->show($field,$this->element->shipping_address->$fieldname),$html);
                      }
                      echo str_replace("\n","<br/>\n",trim(str_replace("\n\n","\n",preg_replace('#{(?:(?!}).)*}#i','',$html)),"\n"));
                    } else {
                      echo $this->element->override_shipping_address;
                    }
                  ?>
                </fieldset>
                <?php
              }
            ?>
            </td>
          </tr>
        </table>

et j'obtiens l'affichage en pièce jointe.
Si vous pouvez m'aidez à comprendre, je vous en remercie d'avance.
Cordialement.

PS

Attachments:
Last edit: 11 years 5 months ago by Jerome. Reason: using code tag instead quote tag

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

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

Bonjour,

Essayez avec $this->element->order->order_user_id au lieu de $this->order->order_user_id

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

  • Posts: 138
  • Thank you received: 2
11 years 5 months ago #109672

Merci, mais aucun changement dans l'affichage avec ce changement...

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

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

Bonjour,

Essayez avec $this->element->order_user_id au lieu de $this->order->order_user_id

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

  • Posts: 138
  • Thank you received: 2
11 years 5 months ago #109681

Bonjour,

Non plus ! Merci pour votre aide collective !
Ci-dessous le code modifié pour vous assurer que je le fais correctement

/**
* Affichage email + username
*/
$userClass = hikashop_get('class.user');
$user = $userClass->get($this->element->order_user_id); ?>
<br/>
<? echo 'username: '.$user->username;?>
<br/>
<? echo 'email: '.$user->email;
?>

On ne devrait pas être très loin de la solution.
Cdlt.

PS

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

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

Mmm. Cela devrait marcher pourtant.

Essayez voir ceci:
echo 'username: '.$this->order->customer->username;
echo 'email: '.$this->order->customer->email;

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

  • Posts: 138
  • Thank you received: 2
11 years 5 months ago #109752

Et bien non, les champs restent vides !

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

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

Je ne vois pas comment c'est possible.
Cela fonctionne comme il faut chez moi.
Soit vous n'éditez pas le fichier pour le bon template, soit votre commande n'a pas d'utilisateur joomla attaché.

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

  • Posts: 138
  • Thank you received: 2
11 years 5 months ago #109815

Bonjour,


Je suis totalement sûr de travailler sur le fichier du bon template (bluestork en l'occurence) car j'y ai fait hier aussi plusieurs modifs de mise en page qui sont visibles.
Je ne comprends pas cette notion d'"utilisateur Joomla attaché" : les clients ne sont pas enregistré sur Joomla préalablement ; ils donnent leurs coordonnées lors du passage en caisse, mais ne sont pas enregistrés en tant qu'utilisateurs du CMS...
Mais bon, on récupère leur nom, adresse, téléphone... dans la facture, je ne comprends pas comment on ne peut pas récupérer leur email qui a été obligatoirement saisi au même moment, dans le même formulaire.
Merci.
Cordialement.

PS

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

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

Bonjour,

Mais du coup c'est normal que cela ne fonctionne pas si ce ne sont pas des utilisateurs joomla...
Les différents codes que j'ai proposés récupère l'email et le nom d'utilisateur de joomla.
Si vos clients n'ont pas d'utilisateur joomla, il n'est pas possible d'afficher leur nom d'utilisateur vu qu'il n'ont pas d'utilisateur...
Et pour l'email, c'est l'email dans HikaShop qu'il faut afficher et non celui de l'utilisateur joomla.
C'est donc le code suivant qu'il faudra utiliser:
echo 'email: '.$this->order->customer->user_email;

The following user(s) said Thank You: WebConseil

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

  • Posts: 138
  • Thank you received: 2
11 years 5 months ago #109896

Bonjour,

Ca va tout de suite mieux !
Comme quoi ce n'est pas toujours bon de glâner du code par ci par là quand on ne le comprend pas.
Merci pour votre aide.
Cordialement.

PS

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

  • Posts: 138
  • Thank you received: 2
11 years 5 months ago #109921

J'abuse sûrement, mais de la même façon j'aimerai "récupérer" :
- n° de la la commande
- date de la commande
- la date de la facture (j'ai trouvé seul pour le n° de la facture !!)
Merci d'avance pour le gain de temps.
Cordialement.

PS

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

Time to create page: 0.077 seconds
Powered by Kunena Forum