Hook addMoreActionsButtons

Bonjour à tous,

Petite question : peut-on remplacer uniquement certains boutons des fiches ?

Je vous explique, j’ai besoin d’affecter d’autres fonctions sur des boutons (supprimer/valider/etc…).
Le problème avec le hook addMoreActionsButtons est que si je met un return 1, tous les autres boutons disparaissent.

Merci vous vos lumières.

Bruce

J’ai pensé à me tourner vers le trigger ORDER_SUPPLIER_DELETE en ce qui concerne le bouton supprimer.
Mais mon code ne fonctionne pas…

elseif ($action == 'ORDER_SUPPLIER_DELETE')
		{
            $this->_Delete($object->id);
        }
    private function _Delete(&$object)
    {
		global $user, $db, $conf;

		require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';

		/* Gestion historique commande fournisseur
		*	date de commande
		*	partenaire
		*	produit
		*	commande client
		*	motif
		*/

		// on se positionne sur la commande fournisseur
		$objectcf2 = new CommandeFournisseur($db);
		$objectcf2->fetch($object);

		// on boucle sur les lignes la commande fournisseur
		foreach ($objectcf2->lines as $cfdetline) {
			// on remet à zéro la ligne de la commande client associée
			$sql = "UPDATE ".MAIN_DB_PREFIX."commandedet";
			$sql.= " SET fk_commandefourndet=0";
			$sql.= " WHERE fk_commandefourndet=".$cfdetline->id;
			$res=$db->query($sql);
		}

		// on lance enfin la suppression de la commande fournisseur
		$result=$objectcf2->delete($user);
    }

Bonjour,
Je n’ai pas compris le besoin d’origine :wink:
Par contre, je peux aider :

  1. le hook addMoreActionsButtons permet d’ajouter des boutons d’action; si tu veux que les autres boutons ne disparaissent pas, fais un return 0 au lieu de 1.
  2. pour ton trigger, il faut modifier ton fetch pour fetch($object->id) au lieu de fetch($object).

Bonjour et merci de ton retour altatof :slight_smile:
Avec le fetch($object->id) cela fonctionne mais pas ma requête SQL…

```
			$sql = "UPDATE ".MAIN_DB_PREFIX."commandedet";
			$sql.= " SET fk_commandefourndet=0";
			$sql.= " WHERE fk_commandefourndet=".$cfdetline->id;
			$res=$db->query($sql);
```

Je cherche à ajouter une fonction lors de la suppression d’une commande fournisseur (qui devrait être native d’ailleurs).
Chez moi, les commandes clients sont liées aux commandes fournisseurs (via le module Restock des Patas).
Le champ fk_commandefourndet de la table commandedet correspond au numéro de la ligne de produit de la commande fournisseur.
Sauf que lors de la suppression d’une commande, ce champ n’est pas mis à jour (0)…

Je pense que mon code ne fonctionne pas car la commande doit être supprimée avant ma requête…
Comment faire pour traiter ma requête avant la suppression ?

Bruce

Bonjour à tous,

Après vérification la suppression se fait bien après l’appel du trigger…
C’est donc $cfdetline->id qui est en cause et ne me renvoi rien…
Quid, comment récupérer le rowid de commande_fournisseurdet ?

Merci.

Bruce

Tu n’as pas besoin de faire

		require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';

		/* Gestion historique commande fournisseur
		*	date de commande
		*	partenaire
		*	produit
		*	commande client
		*	motif
		*/

		// on se positionne sur la commande fournisseur
		$objectcf2 = new CommandeFournisseur($db);
		$objectcf2->fetch($object);

$object est ta commande fournisseur :wink:

Bonjour,

Rien à voir avec le sujet mais juste pour dire que je ne reçois pas de mail de notification…

J’ai réussi en passant par le hook doActions sur l’action delete. Merci altatof pour ton aide.

Bruce