Jump to content

[RESOLU]Ajouter un nouveau champ dans l'onglet client du back office


Recommended Posts

Bonjour,

Ca fait un moment que je cherche une solution à mon souci, et je tourne en rond...
Voilà, dans le back office, on a donc l'onglet client. Lorsqu'on clique dessus, on obtient un tableau qui liste les clients du site. J'aimerai, après id, sexe, nom,etc...ajouter une colonne "société". J'ai déjà créé un champ société dans le formulaire d'inscription des nouveaux clients. Par contre, ce champ n'est pas dans la table "customer" de la base de données, mais dans la table "address". Je n'arrive pas à faire le lien avec cette autre table. j'arrive à afficher n'importe quel élément de la table "customer", mais rien à faire pour les éléments de la table "address".
Merci d'avance pour votre aide.

Link to comment
Share on other sites

Bonjour,

je viens de faire quelques modifications sur une version 1.2.5 de Prestashop et j'arrive à obtenir le nom de la société dans la liste, voici mon code dans AdminCustomers.php :

       
$this->_select = '(YEAR(NOW()) - YEAR(birthday)) as age, (
           SELECT c.date_add FROM '._DB_PREFIX_.'guest g
           LEFT JOIN '._DB_PREFIX_.'connections c ON c.id_guest = g.id_guest 
           WHERE g.id_customer = a.id_customer
           ORDER BY c.date_add DESC
           LIMIT 1
       ) as connect, (
           SELECT b.company FROM '._DB_PREFIX_.'address b
           WHERE b.id_customer = a.id_customer
           LIMIT 1
       ) as company';
$genders = array(1 => $this->l('M'), 2 => $this->l('F'), 9 => $this->l('?'));
$this->fieldsDisplay = array(
       'id_customer' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25),
       'id_gender' => array('title' => $this->l('Gender'), 'width' => 25, 'align' => 'center', 'icon' => array(1 => 'male.gif', 2 => 'female.gif', 'default' => 'unknown.gif'), 'orderby' => false, 'type' => 'select', 'select' => $genders, 'filter_key' => 'a!id_gender'),
       'lastname' => array('title' => $this->l('Last Name'), 'width' => 80),
       'firstname' => array('title' => $this->l('First name'), 'width' => 60),
       'email' => array('title' => $this->l('E-mail address'), 'width' => 120, 'maxlength' => 19),
       'company' => array('title' => $this->l('Company'), 'width' => 32),
       'age' => array('title' => $this->l('Age'), 'width' => 30, 'search' => false),
       'active' => array('title' => $this->l('Enabled'), 'width' => 25, 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false),
       'newsletter' => array('title' => $this->l('News.'), 'width' => 25, 'align' => 'center', 'type' => 'bool', 'icon' => array(0 => 'disabled.gif', 1 => 'enabled.gif'), 'orderby' => false),
       'optin' => array('title' => $this->l('Opt.'), 'width' => 25, 'align' => 'center', 'type' => 'bool', 'icon' => array(0 => 'disabled.gif', 1 => 'enabled.gif'), 'orderby' => false),
       'date_add' => array('title' => $this->l('Registration'), 'width' => 60, 'type' => 'date'),
       'connect' => array('title' => $this->l('Connection'), 'width' => 60, 'type' => 'datetime', 'search' => false));



j'ai ajouté ceci à la fin de la requête :

, (
   SELECT b.company FROM '._DB_PREFIX_.'address b
   WHERE b.id_customer = a.id_customer
   LIMIT 1
) as company



et une ligne de plus dans le fieldsDisplay :

'company' => array('title' => $this->l('Company'), 'width' => 32),



et voilà, la société apparaît dans la liste client :vampire:

  • Like 1
Link to comment
Share on other sites

  • 4 months later...

re bonjour BVINCE

j'ai fais des essais afin d'avoir le nom de la company dans le fichier AdminOrder.php mais je n'y arrive pas la seule chose que j'arrive c'est d'obtenir le numero de l'adresse et cela ne me sert a rien.

voici ce que j'ai fais en rose, mais pas de nom de company juste le numero d'adresse

$this->_select = '
a.id_order AS id_pdf,
CONCAT(LEFT(c.`firstname`, 1), \'. \', c.`lastname`) AS `customer`,
osl.`name` AS `osname`,
os.`color`,

IF((SELECT COUNT(so.id_order) FROM `'._DB_PREFIX_.'orders` so WHERE so.id_customer = a.id_customer AND so.valid = 1) > 1, 0, 1) as new,
(SELECT COUNT(od.`id_order`) FROM `'._DB_PREFIX_.'order_detail` od WHERE od.`id_order` = a.`id_order` GROUP BY `id_order`) AS product_number';
$this->_join = 'LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = a.`id_customer`)
LEFT JOIN `'._DB_PREFIX_.'order_history` oh ON (oh.`id_order` = a.`id_order`)
LEFT JOIN `'._DB_PREFIX_.'order_state` os ON (os.`id_order_state` = oh.`id_order_state`)
LEFT JOIN `'._DB_PREFIX_.'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = '.intval($cookie->id_lang).')';
$this->_where = 'AND oh.`id_order_history` = (SELECT MAX(`id_order_history`) FROM `'._DB_PREFIX_.'order_history` moh WHERE moh.`id_order` = a.`id_order` GROUP BY moh.`id_order`)';
$statesArray = array();
$states = OrderState::getOrderStates(intval($cookie->id_lang));

foreach ($states AS $state)
$statesArray[$state['id_order_state']] = $state['name'];
$this->fieldsDisplay = array(
'id_order' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25),
'new' => array('title' => $this->l('New'), 'width' => 25, 'align' => 'center', 'type' => 'bool', 'filter_key' => 'new', 'tmpTableFilter' => true, 'icon' => array(0 => 'blank.gif', 1 => 'news-new.gif'), 'orderby' => false),

'id_address_invoice' => array('title' => $this->l('Company'), 'widthColumn' => 160, 'width' => 100,),
'customer' => array('title' => $this->l('Customer'), 'widthColumn' => 120, 'width' => 100, 'filter_key' => 'customer', 'tmpTableFilter' => true),
'total_paid' => array('title' => $this->l('Total'), 'width' => 70, 'align' => 'left', 'prefix' => '', 'suffix' => '', 'price' => true, 'currency' => true),
'payment' => array('title' => $this->l('Payment'), 'width' => 100),
'osname' => array('title' => $this->l('Status'), 'widthColumn' => 230, 'type' => 'select', 'select' => $statesArray, 'filter_key' => 'os!id_order_state', 'filter_type' => 'int', 'width' => 200),
'date_add' => array('title' => $this->l('Date'), 'width' => 35, 'align' => 'right', 'type' => 'datetime', 'filter_key' => 'a!date_add'),
'id_pdf' => array('title' => $this->l('PDF'), 'callback' => 'printPDFIcons', 'orderby' => false, 'search' => false));
parent::__construct();
}

meme en faisdant des essais avec la modif du coté customer je n'y arrive pas

Aurais tu une idée ?

Merci d'avance
Link to comment
Share on other sites

  • 1 month later...

Bonjour,

Grâce à cette modif', j'ai bien le champs "Société" dans l'onglet client. J'ai tenté de filtrer ce champs société en tapant le nom d'une société par exemple...mais le filtre ne marche pas. J'ai eu comme message d'erreur sous Internet Explorer "Requête SQL invalide"...je me suis dit ce n'est pas bien grave et j'ai actualisé la page...mais j'ai toujours le message "Requête SQL invalide"...

J'ai tenté alors sous FireFox en me disant que la faute venait de Internet Explorer...mais j'ai eu exactement le même message "Requête SQL invalide".

Alors je me suis dit tanpis pour le filtre, on fera sans...j'ai vidé l'historique et les cookies des deux explorateurs Internet Explorer et FireFox en pensant que cela règlerait le problème...mais pas du tout. Je me trouve donc mainteanant avec l'onglet "Clients" inutilisable sous IE et FF...

Est-ce que quelqu'un pourrait m'aider à fixer ce petit bug de "Requête SQL invalide" parce que là c'est vraiment problématique...

Merci d'avance,

Cordialement,

Harvie

Link to comment
Share on other sites

  • 8 months later...

moi ce que je veux faire c'est d'ajouter un lien externe sur une icône dans la liste des fieldsDisplay comme ça

 'detail' => array('title' => $this->l(Details'), 'align' => 'center', 'width' => 20,'icon' => array(0 => '<a href="..."ok.gif</a>', 1 => 'blank.gif')),

pour afficher cette icône j'ai du tester si le Id de la commande existe dans la table details.

je cherche comment ajouter ce lien <a href="..."ok.gif</a> dans la liste fieldsDisplay???

Link to comment
Share on other sites

  • 10 months later...
  • 2 months later...

Bonjour ,

 

Pour ma part , je souhaiterai ajouter les champs : marge , taux de marge et coefficient multiplicateur a coté du prix dans l'onglet Produit , par contre je ne sais comment faire , ni par où commencer étant donné mon faible niveau en PS .

 

Merci pour vos futures réponses

Link to comment
Share on other sites

  • 3 years later...

Bonjour

je me permet de deterrer le post car j'aimerais ajouter une colonne groupe dans l'onglet client afin de pouvoir trier les client par groupe.

quelqu'un aurait il une idée ?

je suis en 1.5.6.1

cdlt

Je ne pourrai pas te répondre pour ta version mais juste te dire que sur la version 1.6.1.4 cet onglet est déjà inclus.

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...