Module "Force Project" ou "Projet Obligatoire"

Bonjour à la communauté Dolibarr que je souhaite grandissante et prospère.
J’ai acheté le module complémentaire « Force Project » ou « Projet Obligatoire ».
Celui-ci rend obligatoire la liaison d’une commande, facture,… à un projet --> ok pour moi

De plus, d’après le pitch, il est possible d’insérer automatiquement le numéro du projet
dans la référence de la commande.
Extrait du pitch : « …It may also replace key ‹ projectref › with ref of linked project if found into ref… ».

J’ai essayé beaucoup de syntaxes mais sans succès.
Mon masque de base est : BDC{yy}{000@1} et je souhaiterais arrivé à : Numéro_projet-BDC{yy}{000@1}

Quelqu’un peut-il m’aider ?

Merci d’avance

Bonjour à tous,
Après investigations approfondies, je réponds moi-même à la question :slight_smile: ça pourrait servir à un de vous.

Le but du module ‹ Projet Obligatoire › ou ‹ Force Project › est :
1.Obliger la sélection d’un projet pour :
- porposition commerciale (si FORCEPROJECT_ON_PROPOSAL = ON)
- commande client (si FORCEPROJECT_ON_ORDER = ON)
- commande fournisseur (si FORCEPROJECT_ON_ORDER_SUPPLIER = ON)
- facture client (si FORCEPROJECT_ON_INVOICE = ON)
- facture fournisseur (si FORCEPROJECT_ON_INVOICE_SUPPLIER= ON)
Ne fonctionne pas pour les interventions, dommage.

===============================================================
2.Ajouter la référence du projet dans le masque de référence :
Valable uniquement pour :
- porposition commerciale (si FORCEPROJECT_ON_PROPOSAL = ON)
- commande client (si FORCEPROJECT_ON_ORDER = ON)
Ces restrictions ne sont pas mentionnées dans la description du module !!!

  exemple de synthace du masque pour une proposition commerciale : projectref-OFR{yy}{000@1}
  Pour un projet de référence 'D16001', cela donne : D16001-OFR16001
  [b]ATTENTION[/b], La référence n'apparaît pas dans le pop-up de validation de la proposition commerciale.
  La référence n'apparaît qu'une fois la validation par 'OUI'.

===============================================================
3.Possibilité de démarrer le compteur à 1 pour chaque projet :
Le module permet de démarrer le compteur à 1 pour chaque projet mais la variable de choix n’est pas accessible alors qu’elle existe.
Si cela vous intéresse, il faut modifier :
Dans /htdocs/forceproject/admin/forceproject.php
$listofparams=array(‹ FORCEPROJECT_ON_PROPOSAL ›,‹ FORCEPROJECT_ON_ORDER ›,‹ FORCEPROJECT_ON_ORDER_SUPPLIER ›,‹ FORCEPROJECT_ON_INVOICE_SUPPLIER ›,‹ FORCEPROJECT_ON_INVOICE ›);

comme suit
$listofparams=array(‹ FORCEPROJECT_ON_PROPOSAL ›,‹ FORCEPROJECT_ON_ORDER ›,‹ FORCEPROJECT_ON_ORDER_SUPPLIER ›,‹ FORCEPROJECT_ON_INVOICE_SUPPLIER ›,‹ FORCEPROJECT_ON_INVOICE ›,‹ FORCEPROJECT_COUNTER_FOREACH_PROJECT ›);

Cela fonctionne uniquement pour :
- porposition commerciale (si FORCEPROJECT_ON_PROPOSAL = ON)
- commande client (si FORCEPROJECT_ON_ORDER = ON)

              Résultat :
              Pour chaque projet, la numérotation recommence à 1.

@+

1 « J'aime »

Bonjour, j’ai acheté le module « projet obligatoire » qui oblige à renseigner le projet sur les propales, commandes clients, commandes fournisseurs, factures clients, factures fournisseurs selon les options que l’on choisit de rendre obligatoire et qui permet d’intégrer la réf. projet à la référence de la commande/facture ou propale. Je suis sous Dolibarr 3.9

Cette intégration de la référence projet fonctionne bien sur les propales et commandes clients, meme si je pense que peut-etre il faudrait rendre « bloquant » la validation de la propale/commande si on oublie de renseigner le projet.
A l’heure actuelle, seul un message d’avertissement s’affiche rappelant de renseigner le projet mais la propale/commande est quand même validée suivant le masque attribué (le texte « projectref » remplaçant la référence du projet manquant). Il suffit de renseigner le projet et valider à nouveau la propale/commande pour que tout rentre dans l’ordre.

Par contre, ça ne fonctionne pas du tout sur les commandes fournisseurs. Cette fonctionnalité me serait très utile et j’aimerais savoir si cette intégration de la référence n’est possible que pour les propales et commandes/factures clients, ou s’il y a un bug/erreur quelque part.

Quelqu’un peut’il m’aider ?

Merci

petit UP

Bonjour,

Avez-vous contacté le développeur du module ?

Frédéric

Bonjour,

Pour que le module ForceProject fonctionne avec les commande fournisseur,
il faut que la variable FORCEPROJECT_ON_ORDER_SUPPLIER soit True via la configuration du module ForceProject dans Dolibarr.
Si la variable n’est pas présente dans Dolibarr, il faut l’ajouter comme suit dans le code
\htdocs\forceproject\admin\forceproject.php

Ligne originale :
$listofparams=array(‹ FORCEPROJECT_ON_PROPOSAL ›,‹ FORCEPROJECT_ON_ORDER ›,‹ FORCEPROJECT_ON_ORDER_SUPPLIER ›,‹ FORCEPROJECT_ON_INVOICE_SUPPLIER ›,‹ FORCEPROJECT_ON_INVOICE ›);

Nouvelle ligne :
$listofparams=array(‹ FORCEPROJECT_ON_PROPOSAL ›,‹ FORCEPROJECT_ON_ORDER ›,‹ FORCEPROJECT_ON_ORDER_SUPPLIER ›,‹ FORCEPROJECT_ON_INVOICE_SUPPLIER ›,‹ FORCEPROJECT_ON_INVOICE ›,‹ FORCEPROJECT_ON_FICHEINTER ›,‹ FORCEPROJECT_ON_SHIPPING ›,‹ FORCEPROJECT_COUNTER_FOREACH_PROJECT ›);

Bien à vous

Didier

Bonjour,
@ didier: la variable est ON dans la configuration du module et elle est bien présente dans forceproject.php, mais ça ne fonctionne pas.
@ frederic: je n’avais pas encore contacté le développeur du module car la fiche du module sur dolistore mentionne « Help/Support: Forum www.dolibarr.org ». J’espérais que le développeur se manifeste, mais là, je pense que je vais chercher son contact :wink:

En tout cas, merci quand meme !
Bon après-midi
Graziella

Bonsoir,
je n’ai pas réussi à me mettre en contact avec le développeur du module mais à force de chercher, je me réponds toute seule, ça pourrait servir à d’autres.

Pour ajouter la référence du projet dans le masque de référence d’une commande fournisseur (FORCEPROJECT_ON_ORDER_SUPPLIER = ON), il faut modifier htdocs/forceproject/core/triggers/interface_50_modProjet_ForceProject.class.php comme suit:

sous
if ($action == ‹ ORDER_SUPPLIER_VALIDATE › && (! empty($conf->global->FORCEPROJECT_ON_ORDER_SUPPLIER) || ! empty($conf->global->FORCEPROJECT_ON_ALL)))

return -1;
}
}

entre return -1; et le premier } il faut ajouter
}
else
{
$object->fetch_projet();
$projectid=$object->projet->id;
$projectref=$object->projet->ref;

		$sql="SELECT ref FROM ".MAIN_DB_PREFIX."commande_fournisseur WHERE rowid=".$object-\>id;
		$resql=$this-\>db-\>query($sql);
		if ($resql)
		{
			$obj=$this-\>db-\>fetch_object($resql);
			$newref=$obj-\>ref;
			$newref=preg_replace('/projectref/',$projectref,$newref);

			dol_syslog("We validate order ".$object-\>id." oldref=".$object-\>ref." newref=".$newref." projectid=".$projectid." projectref=".$projectref);

			$sql="UPDATE ".MAIN_DB_PREFIX."commande_fournisseur SET ref = '".$this-\>db-\>escape($newref)."' WHERE rowid=".$object-\>id;
				dol_syslog("sql=".$sql);
			$resql=$this-\>db-\>query($sql);

			if ($resql)
			{
				$object-\>ref=$newref;
				$ok=1;
			}
			else
			{
				$this-\>errors[]=$this-\>db-\>lasterror();
				$ok=-1;
			}
		}
		else
			{
				dol_print_error($this-\>db);
				$ok=-1;
			}

J’imagine que pour les factures fournisseurs c’est la meme chose mais je n’ai pas testé.
Bonne soirée

un grand merci morfea77 !!!
Ça marche en effet sur les factures.
Fichier « ./www/dolibarr/htdocs/custom/forceproject/core/triggers/interface_50_modProjet_ForceProject.class.php », emplacement selon config.

Après
if ($action == ‹ BILL_VALIDATE › && (! empty($conf->global->FORCEPROJECT_ON_INVOICE) || ! empty($conf->global->FORCEPROJECT_ON_ALL)))

return -1;
}

insérer

        else
		{
            $object-\>fetch_projet();
            $projectid=$object-\>projet-\>id;
            $projectref=$object-\>projet-\>ref;

            $sql="SELECT facnumber FROM ".MAIN_DB_PREFIX."facture WHERE rowid=".$object-\>id;
            $resql=$this-\>db-\>query($sql);
            if ($resql)
            {
            	$obj=$this-\>db-\>fetch_object($resql);
            	$newref=$obj-\>facnumber;
            	$newref=preg_replace('/projectref/',$projectref,$newref);

            	
            	dol_syslog("We validate proposal ".$object-\>id." oldref=".$object-\>ref." newref=".$newref." projectid=".$projectid." projectref=".$projectref);

	            $sql="UPDATE ".MAIN_DB_PREFIX."facture SET facnumber = '".$this-\>db-\>escape($newref)."' WHERE rowid=".$object-\>id;
				dol_syslog("sql=".$sql);
            	$resql=$this-\>db-\>query($sql);

            	if ($resql)
            	{
            		$object-\>ref=$newref;
            		$ok=1;
            	}
            	else
            	{
            		$this-\>errors[]=$this-\>db-\>lasterror();
            		$ok=-1;
            	}
            }
            else
			{
				dol_print_error($this-\>db);
				$ok=-1;
			}
		}

bonne journée
olivier

Après tests, cela ne marche pas :unhappy:
Le numéro de propale ou de facture ne s’incrémente plus si je met « projectref » dans le masque.

Ma solution : j’utilise le masque standard mais ajoute en dessous des adresses la référence aux projets selon ce sujet
www.dolibarr.fr/forum/t/ajouter-projet-et-titre-projet-dans-facture/17657/1
pour les factures et les propales.

Bonne journée
Olivier

Bonjour,
tant qu’il y a 1 seul propale (ou commande) par projet, la numérotation s’incrémente comme il faut, mais avec plusieurs propales/commandes pour le meme projet, la numérotation ne fonctionne plus (Duplicate entry ‹ ma_refprojet ma_refpropale-1 › for key 2).

La solution d’Olivier ne convient pas à mes besoins (j’ai besoin de visualiser la référence projet à vidéo dans la liste des propales ou commandes)…

Je tourne en rond, incapable de venir à bout du problème… quelqu’un a une idée ?

Bonjour,

Nous avons récemment adopté l’utilisation du projet Dolibarr, et avons fait face à une problématique similaire
à celle que vous évoquez. Je vous partage par conséquent notre approche,

Dans un premier temps, nous avions tout d’abord songé à créer nos propres modules de numérotation
(https://wiki.dolibarr.org/index.php/Créer_un_module_de_numérotation),
afin d’injecter le numéro de projet à nos références de documents, ainsi que de pouvoir profiter de la gestion
native des incréments ( fonction getNextValue du module /core/modules/propale/mod_propale_marbre.php ),

Nous avons toutefois opté pour l’utilisation du module forceproject, pour lequel il nous à fallu implémenter
une fonction de calcul de référence suivante disponible, qui tenait compte de nos spécificités de nommage de
documents.

Pour ma part, j’ai positionné le code d’incrémentation (requête SQL, principalement) pour chaque type de
document (propale, commande, facture, etc), entre les lignes suivantes du fichier
htdocs/custom/forceproject/core/triggers/interface_50_modProjet_ForceProject.class.php :

$newref=$obj->ref;

// -> ICI $newref = query("select last_ref from llx_`current_object`") + 1; (par exemple // formule simplifiée)

$newref=preg_replace('/projectref/',$projectref,$newref);
2 « J'aime »

Bonjour,
J’ai installé récemment ce module et je rencontre le même problème que vous : impossible d’associer plusieurs propositions commerciales à un même projet. Avez-vous trouvé une solution depuis votre dernier message il y a 5 mois ?
Merci d’avance de votre réponse !

Bonjour Karhu,
non je n’avais toujours pas de solution, mais du coup je vais essayer celle proposée par fng, que je remercie au passage pour la contribution, je vais vois si ça marche pour moi.

Bonne journée

Merci morfea77 pour cette réponse. Je vais donc guetter l’arrivée d’une solution sur le forum…
Par ailleurs j’ai sollicité la personne qui m’a transmis ses savoirs relatifs à DOLIBARR, pour voir s’il a une solution à proposer ou s’il peut m’aider à comprendre celle proposée par fng. Il est assez actif dans la communauté. Lui ou moi pourrons transmettre nos éléments si on en a à apporter !

Bonne journée !