Jump to content

Ne pas afficher tout les statut de commande dispo en admin


Recommended Posts

Bonjour,

 

j'aimerai limiter le choix des statut de commande coté admin je suis a peu près sur que ca se passe dans le fichier adminOrderController

 $this->fields_list = array(
 'id_order' => array(
  'title' => $this->l('ID'),
  'align' => 'center',
  'width' => 25
 ),
 'reference' => array(
  'title' => $this->l('Reference'),
  'align' => 'center',
  'width' => 65
 ),
 'new' => array(
  'title' => $this->l('New'),
  'width' => 25,
  'align' => 'center',
  'type' => 'bool',
  'tmpTableFilter' => true,
  'icon' => array(
   0 => 'blank.gif',
   1 => array(
 'src' => 'note.png',
 'alt' => $this->l('First customer order'),
   )
  ),
  'orderby' => false
 ),
 'customer' => array(
  'title' => $this->l('Customer'),
  'havingFilter' => true,
 ),
 'total_paid_tax_incl' => array(
  'title' => $this->l('Total'),
  'width' => 70,
  'align' => 'right',
  'prefix' => '<b>',
  'suffix' => '</b>',
  'type' => 'price',
  'currency' => true
 ),
 'payment' => array(
  'title' => $this->l('Payment: '),
  'width' => 100
 ),
 'osname' => array(
  'title' => $this->l('Status'),
  'color' => 'color',
  'width' => 280,
  'type' => 'select',
  'list' => $statuses_array,
  'filter_key' => 'os!id_order_state',
  'filter_type' => 'int'
 ),
 'date_add' => array(
  'title' => $this->l('Date'),
  'width' => 130,
  'align' => 'right',
  'type' => 'datetime',
  'filter_key' => 'a!date_add'
 ),
 'id_pdf' => array(
  'title' => $this->l('PDF'),
  'width' => 35,
  'align' => 'center',
  'callback' => 'printPDFIcons',
  'orderby' => false,
  'search' => false,
  'remove_onclick' => true)
 );

 

Je crois que le filtre qui permet de me pas afficher le statut deja assigner (et donc avec lequel je pourrai faire ce que je veux) c'est ca

'filter_key' => 'os!id_order_state',

mais je comprend pas trop comment ca marche :wacko:

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour Matthieu.h

 

Je reformule ton problème pour pouvoir te répondre :

 

Est-ce que tu veux supprimer (désactiver) certains statuts de commande dans le BackOffice et donc qu'ils n'apparaissent plus dans le menu déroulant du détail des commandes car tu n'en as jamais besoin ?

 

Ou est-ce que tu veux que certains statuts n'apparaissent plus dans le menu déroulant du détail des commandes tout en les laissant actifs car tu les utilises a d'autres endroits ?

Link to comment
Share on other sites

J'aurais bien aimé que certains statuts n'apparaissent plus dans le menu déroulant du détail des commandes tout en les laissant actifs car je voulais limité l'accès a certain profil employé mais je me suis débrouillé autrement, j'ai rajouté une condition au changement de statut dans adminOrderController ^_^ Si tu sais deja comment faire le tri dans la liste ca serai un bonus sympathique, sinon t'embete pas

En tout cas, même si tu arrive un peu tard, merci pour ta réponse

Link to comment
Share on other sites

Ah ben en fait moi c'était plutôt le 1er cas que j'avais traité : désactiver des statuts dont on n'a pas besoin et les trier dans un autre ordre aussi.

 

Je voulais supprimer certains statuts par défaut mais Prestashop ne le permet pas, on a donc ce joli message d'erreur :

Pour des raisons de sécurité, vous ne pouvez pas supprimer les états de commande par défaut.

 

Même si ça ne va pas t'aider j’explique comment j'ai fait au cas où ça sert à quelqu'un un jour :

En fait dans le fichier AdminOrdersController.php ligne 181 on assigne au template la liste des statuts a afficher dans le menu déroulant :

'order_states' => OrderState::getOrderStates((int)Context::getContext()->language->id),

 

A partir de là j'ai retrouvé la fonction utilisée pour récupérer les statuts à afficher : getOrderStates() dans la classe OrderState (fichier classes/order/OrderState.php), j'ai fait un override de la classe et j'ai travaillé direct dans la requête de la fonction getOrderStates().

 

Et du coup pour désactiver certains statuts par défaut, j'ai été directement dans la table "order_state" et j'ai modifié le champ "deleted" de ces statuts à "1".

 

Voilà les quelques pistes que j'ai suivi.

Bon courage pour la suite !

  • Like 1
Link to comment
Share on other sites

  • 1 year later...

Bonjour Matthieu.h

 

Je reformule ton problème pour pouvoir te répondre :

 

Est-ce que tu veux supprimer (désactiver) certains statuts de commande dans le BackOffice et donc qu'ils n'apparaissent plus dans le menu déroulant du détail des commandes car tu n'en as jamais besoin ?

 

Ou est-ce que tu veux que certains statuts n'apparaissent plus dans le menu déroulant du détail des commandes tout en les laissant actifs car tu les utilises a d'autres endroits ?

Bonjour je suis interessé

 

Bonjour,

 

j'aimerai limiter le choix des statut de commande coté admin je suis a peu près sur que ca se passe dans le fichier adminOrderController

  $this->fields_list = array(
  'id_order' => array(
   'title' => $this->l('ID'),
   'align' => 'center',
   'width' => 25
  ),
  'reference' => array(
   'title' => $this->l('Reference'),
   'align' => 'center',
   'width' => 65
  ),
  'new' => array(
   'title' => $this->l('New'),
   'width' => 25,
   'align' => 'center',
   'type' => 'bool',
   'tmpTableFilter' => true,
   'icon' => array(
    0 => 'blank.gif',
    1 => array(
	 'src' => 'note.png',
	 'alt' => $this->l('First customer order'),
    )
   ),
   'orderby' => false
  ),
  'customer' => array(
   'title' => $this->l('Customer'),
   'havingFilter' => true,
  ),
  'total_paid_tax_incl' => array(
   'title' => $this->l('Total'),
   'width' => 70,
   'align' => 'right',
   'prefix' => '<b>',
   'suffix' => '</b>',
   'type' => 'price',
   'currency' => true
  ),
  'payment' => array(
   'title' => $this->l('Payment: '),
   'width' => 100
  ),
  'osname' => array(
   'title' => $this->l('Status'),
   'color' => 'color',
   'width' => 280,
   'type' => 'select',
   'list' => $statuses_array,
   'filter_key' => 'os!id_order_state',
   'filter_type' => 'int'
  ),
  'date_add' => array(
   'title' => $this->l('Date'),
   'width' => 130,
   'align' => 'right',
   'type' => 'datetime',
   'filter_key' => 'a!date_add'
  ),
  'id_pdf' => array(
   'title' => $this->l('PDF'),
   'width' => 35,
   'align' => 'center',
   'callback' => 'printPDFIcons',
   'orderby' => false,
   'search' => false,
   'remove_onclick' => true)
  );
Je crois que le filtre qui permet de me pas afficher le statut deja assigner (et donc avec lequel je pourrai faire ce que je veux) c'est ca

'filter_key' => 'os!id_order_state',
mais je comprend pas trop comment ca marche :wacko:

 

Bonjour

je suis interessé par le filtre qui permet de ne plus affiché le statut deja assigné

 

cdlt

Link to comment
Share on other sites

  • 1 year later...

Bonjour Matthieu.h

 

Je reformule ton problème pour pouvoir te répondre :

 

Est-ce que tu veux supprimer (désactiver) certains statuts de commande dans le BackOffice et donc qu'ils n'apparaissent plus dans le menu déroulant du détail des commandes car tu n'en as jamais besoin ?

 

Ou est-ce que tu veux que certains statuts n'apparaissent plus dans le menu déroulant du détail des commandes tout en les laissant actifs car tu les utilises a d'autres endroits ?

 

Bonjour Greeny,

 

Pour moi, mon besoin, c'est que je veux afficher au niveau du filtre de la commande : "Filtrer par État : Annulé" au lieu de "Filtrer par État : 1".

 

C'est à dire je veux afficher le libellé de l'état et non plus son code.

 

J'ai cherché dans le fichier AdminOrdersController.php, j'ai trouvé la sélection de name et id_order_state, mais je ne sais ps comment faire pour afficher le name au lieu de id_order_state de la table order_state_lang

 

Merci.

Link to comment
Share on other sites

  • 2 months later...
  • 7 years later...

Bonjour,

Peut-être pas la meilleure des solutions mais il est possible de simplement cacher les champs à ne pas afficher avec du css dans admin/themes/new-theme/public/theme.css .

Mettre un display: none sur les sélecteurs suivants (prestashop 1.7.8.8) :

pour la liste des commandes .js-choice-options .js-dropdown-item[data-value="1"]

dans la page d'une commande #update_order_status_action_input option[value="1"]

Au moins cela permet d'afficher quand meme des statuts en cours mais sans les rendre selectionnables par les equipes de preparation de commandes.

Bonne journée à vous

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