Restock : Genérateur de commandes fournisseurs

Voici ce que j’ai fait afin de prendre en compte les CF partielles :
Dans restock/class/restock.class.php ligne 481
J’ai remplacé

	// on regarde si il n'y pas de commande fournisseur en cours
			$sql = 'SELECT DISTINCT sum(cofd.qty) as nbCmdFourn';
			$sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseurdet as cofd";
			$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."commande_fournisseur as cof ON cof.rowid = cofd.fk_commande";
			$sql.= " WHERE cof.entity = ".$conf->entity;
			$sql.= " AND cof.fk_statut = 3";
			$sql.= " and cofd.fk_product=".$tblRestock[$i]->id;
			dol_syslog(get_class($this)."::enrichir_product::cmde_fourn sql=".$sql);
			//print $sql;
			$resql = $this->db->query($sql);
			if ($resql)
			{
				$objp = $this->db->fetch_object($resql);
				$tblRestock[$i]->nbCmdFourn= $objp->nbCmdFourn;
			}

Par

	// on regarde si il n'y pas de commande fournisseur en cours
			$sql = 'SELECT DISTINCT sum(cofd.qty) as nbCmdFourn';
			$sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseurdet as cofd";
			$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."commande_fournisseur as cof ON cof.rowid = cofd.fk_commande";
			$sql.= " WHERE cof.entity = ".$conf->entity;
			$sql.= " AND (cof.fk_statut = 3 OR cof.fk_statut = 4)";
			$sql.= " and cofd.fk_product=".$tblRestock[$i]->id;
			dol_syslog(get_class($this)."::enrichir_product::cmde_fourn sql=".$sql);
			//print $sql;
			$resql = $this->db->query($sql);
			if ($resql)
			{
				$objp = $this->db->fetch_object($resql);
				$tblRestock[$i]->nbCmdFourn= $objp->nbCmdFourn;
						
				//recues partiellements
				$sql = "SELECT SUM(qty) AS nbCmdFournRecues";
				$sql .= " FROM ".MAIN_DB_PREFIX."commande_fournisseur AS c, ".MAIN_DB_PREFIX."commande_fournisseur_dispatch AS cd";
				$sql .= " WHERE c.fk_statut = 4";
				$sql.= " AND c.rowid = cd.fk_commande ";;
				$sql.= " and cd.fk_product=".$tblRestock[$i]->id;
				$resql = $this->db->query($sql);
				if ($resql)
				{
					$objp = $this->db->fetch_object($resql);
					$tblRestock[$i]->nbCmdFourn -= $objp->nbCmdFournRecues;
					
				}
			}

Ps : cette modification n’est pas une modif officielle à vos risques et périls :tongue:

1 « J'aime »

Bonjour Defrance,
Je suis sous Dolibarr 8.0.3. Dans les réappros la colonne « déjà en cde fournisseur » est vide alors que j’ai bien des pièces en cde fournisseur. Y-a t’il un paramétrage particulier ou est-ce un bug?
Merci d’avance

I think there is still a recursion error in the class:

lines 692 should read:

	if ($NotInOF) {
		$components[$nbcomponent][0]=$fk_parent;
		$components[$nbcomponent][1]=$qty;
		$nbcomponent++;

otherwise the restock of virtual products is not complete.

Bonjour,
J’utilise la v10.0.6 de Dolibarr, Factory 10.0.+2.1.0, et j’ai récemment installé reStock 10.0.+2.1.0 (2019-07)

Je crée une commande incluant un produit composé (réf. KIT0000128) pour une qte de 101 unités

  • Si je vais sur l’onglet reStock de la fiche commande : les propositions de commandes fournisseurs sont cohérentes avec mes niveaux de stock pour l’ensemble des composants (cf partie gauche de la capture ci-jointe). Et notamment je dois recommander des composants avec la réf. SKFC0000170 et SKCE000119.
  • Si je me rends sur la fiche produit de la réf. KIT0000128, aucune proposition de commande fournisseur --> j’en déduis que depuis la fiche produit, on ne prend pas en compte les commandes en cours, on peut faire de la recommande par rapport au niveau de stock et limite affiché, mais aucun calcul de « A commander » n’y est fait / ok.
  • En revanche, si je me rends sur l’onglet ReStock du menu secondaire et que je filtre sur le tag attribué à ma réf KIT0000128, j’obtiens une liste incomplète de composants (partie droite de la capture d’écran) : il me manque les réf SKFC0000170 et SKCE000119.
    e8f4182c1a876f98cd581c35791f1081216fc9d9_2_690x295

Je ne comprends pas pourquoi ? Qqn a-t-il une idée ?
Merci pour votre aide.

Bonjour EML,
Avez-vous eu une réponse/solution à votre question ? J’ai exactement le même problème et je ne parviens pas à comprendre pourquoi certains éléments d’un produit virtuel sont systématiquement écartés lors des ReStock…
J’envisage l’achat de Factory pour résoudre ce problème mais j’aimerais bien être certain du résultat.
Bonne journée
Vincent

Bonjour,

Malheureusement non, je n’ai pas eu de retour ni trouvé de solution à ce problème bloquant en ce qui me concerne.
J’ai multiplié les tests sans trouver aucune piste de résolution jusque-là.
Désolée de ne pas pouvoir vous apporter plus d’aide.
Bonne journée.

Merci. De mon côté, j’observe une chose. C’est systématiquement le premier produit inséré dans la liste des produits composant le produit virtuel qui est écarté ! Donc si on ajoute systématiquement un « non produit » (=référence nulle) en tête de liste, cela devrait fonctionner.
Je teste et reviens…
Cordialement,

C’est bien cela. Et je vois que le message de @fbosman a l’air de proposer une solution, non ?
@EML, l’avez-vous testée ?
Bien à vous

En ce qui me concerne ce n’est pas systématiquement le premier produit qui manque.
Je n’ai pas pu tester la solution de @fbosman car je ne suis pas « habilitée » à modifier les classes… :wink:

Bonjour
désolée d’avoir tant tardé pour répondre, pas mal de choses à préparer avec la GPAO dans dolibarr…
la correction se fait dans la classe ligne 692,
il faut écrire
if ($components == array()) {
à la place de
if ($NotInOf) {

Bonjour et merci. Nous allons tester cette modification avec hâte.

Bonjour et un grand merci également. Je vais m’empresser de faire tester cette solution à ma DSI !

Bonjour,

Après essai, la solution proposée par @defrance fonctionne !!! Un vrai pas en avant pour nous qui utilisons les produits virtuels (PV) pour simplifier nos offres commerciales (1 ligne produit au lieu de plusieurs).
Je l’ai testé et validé sur des PV incluant eux-mêmes des PV et ça marche.
Merci donc à @defrance pour le correctif, et @grandoc pour sa mise en oeuvre…

De mon côté, il reste la question des quantités de produits « déjà reçus » des commandes fournisseurs qu’il faudrait intégrer dans le calcul du ReStock car actuellement, dès qu’une commande fournisseur passe au statut « réception partielle », elle n’est plus comptabilisée.

Quelqu’un a-t-il une solution pour ça ?
Vous remerciant.
Bonne journée
Vincent

Re,

Je précise mon précédent message avec celui que j’avais posté sur un autre sujet (ignorant celui-ci).

Citation
Bonjour à tous,
J’utilise Dolibarr depuis de nombreuses années, et depuis 8 ans pour ma propre entreprise.
Passé à la version 11 depuis peu, j’essaie d’améliorer notre utilisation générale, et en particulier la gestion de nos stocks/réapprovisionnements.
Lorsqu’on affiche la page de réapprovisionnement, on voit, par produit, l’état du stock physique/virtuel, des commandes client en cours… et Qté déjà en commande fournisseur. Cela permet d’afficher automatiquement en « à commander », les quantités dont on a réellement besoin.

1 - Or, dans mon cas, l’une de mes commandes fournisseurs a été reçue partiellement. Le stock physique est bien incrémenté de la quantité reçue, mais le résidu, en attente de livraison, n’apparait pas, ce qui fausse le calcul de « à commander ». Je pense qu’à partir du moment où une commande fournisseur passe en « reçue partiellement », elle n’est plus utilisée dans le calcul de réappro. Cela fausse le fonctionnement en ce qui me concerne.
Est-il possible d’ajouter une colonne « Qté résiduelle » (= en attente de réception suite à réception partielle) sur la page de réappro ?

2 - Est-il possible d’affecter un stock à une commande client ?
Et ainsi de le faire « disparaitre » du stock potentiellement utilisable pour d’autres commandes. J’avais pensé créer un entrepôt par commande client et déplacer les produits vers cet entrepot pour faire en sorte que ces produits sortent de la décision de réapprovisionnement. Mais ce n’est pas le cas. DOnc tant que ma commande client n’est pas expédiée, les articles sont potentiellement utilisables par d’autres, pour d’autres commandes.

Voilà, si quelque’un a une idée.
Merci d’avance et bonne journée.
Cordialement,
Vincent

Bonjour,

Pour le point 2
j’utilise une astuce consistant à :

  • configurer le module « stock » en utilisant : decrementer le stock physique à la validation de la cde
  • créer un entrepôt « virtuel » = « cde en cours » et y affecter les produits lors de la validation de cde
  • à la réception des cdes fournisseurs : si le produit est directement livré au client final, réceptionner sur l’entrepôt virtuel ; si le produit est stocké en entrepot « réel », réceptionner sur le bon entrepôt
  • à l’expédition de la cde client, il faut faire les transferts de stock de l’entrepot réel vers l’entrepot virtuel pour les produits qui partent d’un entrepot réel.

Nota : la cde ré appro fonctionne avec le stock physique (de toutes façons, pour les produits virtuels, c’est ce qui permet de prévoir l’appro des composants).

Voilà, c’est pas brillant, mais ça marche :wink:

bonne journée à tous

Chrystel

Bonjour,

j’ai fait l’acquisition de ce module et j’ai quelques interrogations. Afin de les levé j’ai une première question.

En fonctionnement très basique : pas de produit virtuel, pas d’OF. Est ce que le résultat de Restock est le même que Réaprovisionnement ?

J’ai des résultats complètements différents entre les deux.

Voici la configuration du module.

Dans un premier temps, il doit me servir à faire de la réappro standard sur seuil (y compris les produits enfants de produits virtuels).

Par avance merci pour vos retour.

Bonjour
Le module Restock (comme Equipement le mois dernier) est en train de faire sa révolution majeure.
Deux évolutions majeures :

  • La possibilité d’avoir un élément « restock » pour regrouper les éléments réapprovisionnés en meme temps et de suivre plus simplement ainsi l’avancement de ceux-ci
  • La possibilité de créer des demandes de prix à des fournisseurs alors qu’auparavant il n’était possible que de créer des commandes fournisseurs et des OF.
    Je ne pense pas avoir le temps d’ajouter une édition pour le restock mais ce sera certainement pour une prochaine mise à jour

J’en profite pour vous souhaitez à toute et tous de bonne fêtes de fin d’année

Bonjour
Nouvelle mise à jour du module Restock qui gère à présent les expéditions partiels (il est possible de déduire les quantité déjà expédié des commandes en cours).
L’ensemble de mes modules ont été validé en V15, il me reste encore Equipement mais je commence enfin à en voir le bout
Un nouveau module sera diffusé fin mars, mais je préfère ne pas encore communiquer dessus

1 « J'aime »

Bonjour,

ça serait génial si on pouvait calculer automatiquement le stock min et la quantité à commander.
Selon un modèle qui ne prend pas en compte les délais de livraison ou délai = 0 (paramètre)
et une période = 100% = 1 mois (quantité totale en stock suffisante pour 1 mois (paramètre 100%)
Et on se base tout simplement sur la moyenne mobile des 3 derniers mois des ventes pour chaque produit.
On peut ajouter un script qui va calculer pour chaque produit la quantité min et la quantité à commander selon les statistiques des ventes passées et injecter les résultats directement dans la fiche produits qmin qàcommander.
Je vais mettre un fichier excel pour expliciter le tout (modèle simple pour la plus part des retails avec délai de livraison = 0 et période de 1 mois de stock moyen.

voir : monstock . net/fr_fr/blog/stock-de-securite

Dans mon modèle simple qui fonctionne pour la majorité des retails :
délai de livraison = 0 ( les fournisseurs livrent en moin de 24h pharmacie)
période = 30 jours
Stock min = Stock max / 2 ( si produit descend sous le stock min il sort dans la suggestion de commande)
Q à commander suggérée= Stock max - commande en cours - stock théorique

Deuxième modèle dans le fichier excel :
modèle linaire par contrainte qui tient compte de la saisonnalité des ventes de certains produits
et il tient aussi des produits qui se vendent 1 fois ou moins par mois mais régulièrement ( afin de tenir compte de la mise en place d’une seule boite pour le client qui vient 1 fois par mois ou par 40 jours régulièrement)

Possibilité de faire deux scripts afin de générer la prévision du mois+1 et calculer les qmin qàcommander
bouton modèle moyennem mobile sur 3 derniers mois simple
bouton modèle saisonnalité et mise en place

fichier excel des modèles et exemples calculs :

easyupload . io/1lzo4w