Bonjour, Je trouve une grande difficulté pour calculer le prix moyen pondéré d'un article. Prenons l'exemple suivant du REF A100 : Achat : 01/01/2018 à 10:00 QT= 100 P.U= 10 PMP=10 Vente : 05/01/2018 à 12:00 QT= 95 Stock = 5 et PMP= 10 Achat : 06/01/2018 à 12:00 QT= 20 P.U= 15 PMP= (( 5 * 10 ) + ( 20 * 15 )) / 25 = 14 On'a 3 problèmes : ajout, modification, suppression 1) Ajout d'une ligne Achat : ce traitement s’exécute avant l'ajout de la ligne PMP = (( STOCK_PHYSIQUE * PMP ) + ( QT_ACHETE * PRIX_ACHAT) ) ( STOCK_PHYSIQUE + QT_ACHETE) 2) Modification : pas de solution ??? Suppression : pas de solution ??? Une piste svp pour la modification et la suppression. Merci d'avance.
bonsoir si tu utilise un fichier stock tu créer une variable stock.pmp Achat : 01/01/2018 à 10:00 QT= 100 P.U= 10 PMP=10 stock.pmp =100 stock.qte=10 Vente : 05/01/2018 à 12:00 QT= 95 Stock = 5 et PMP= 10 mise a jour quantité sortie stock stock.pmp =10 stock.qte=stock.qte-qtevente mise a jour quantité entrée stock Achat : 06/01/2018 à 12:00 QT= 20 P.U= 15 PMP= (( 5 * 10 ) + ( 20 * 15 )) / 25 = 14 si HLitRecherche(stock,codearticle,codearticleachat,hIdentique) alors stock.pmp =((stock.pmp*stock.qte)+(qteachat *prixachat)) / (stock.qte +qteachat) stock.qte=stock.qte +qteachat hmodifie(stock) fin
Merci bien Ce code fonctionne parfaitement en cas d'ajout d'achat Mais le problème se pose en cas de modification de prix ou de la quantité. Supposons que j'ai 100 bon de réception et je vais modifier le bon de e réception numéro 30. Ca pose beaucoup de problème.
bonsoir si vous utilisez une ligne de bon de reception qui contient une rubrique totalligneHt ou totallineTTc il suffit de créer une requête et de calculer le pmp a partir de la requête exemple : SELECT LigneBReceptionFour.Référence AS Référence, SUM(LigneBReceptionFour.Quantité) AS la_somme_Quantite, SUM(LigneBReceptionFour.TotalHtAchat) AS la_somme_TotalHtAchat, SUM(LigneBreceptionFour.TotalTTC) AS la_somme_TotalTTC FROM LigneBReceptionFour GROUP BY LigneBreceptionFour.Référence après modification de la ligne du bon de reception : HAnnuleDéclaration(REQ_PMP) SI HExécuteRequête(REQ_PMP,hRequêteDéfaut,ReferenceProduit) ALORS HLitPremier(REQ_PMP) HLitRecherche(Stock,Reference,ReferenceProduit,hIdentique) Stock.pmp=REQ_PMP.la_somme_TotalHtAchat/REQ_PMP.la_somme_Quantite HModifie(Stock) FIN
Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens! Merci bien. j'utilise maintenant votre solution mais ce n'est pas correcte à 100% ---------------------------------------- ce que je cherche: PMP = 14 Achat : 01/01/2018 à 10:00 QT= 100 P.U= 10 PMP=10 Achat : 06/01/2018 à 12:00 QT= 20 P.U= 15 PMP= (( 5 * 10 ) + ( 20 * 15 )) / 25 = 14 ---------------------------------------- votre solution : PMP = 13.333 Achat : 01/01/2018 à 10:00 QT= 100 P.U= 10 total achat 10*10=100 Achat : 06/01/2018 à 12:00 QT= 20 P.U= 15 total achat 20*15=300 PMP= (100+300)/(10+20)=13.333
Ton calcul est faux Achat : 01/01/2018 à 10:00 QT= 100 P.U= 10 total achat 100*10=1000 PMP= (1000+300)/(10+20)=10.83 mais bon ca ne change rien au probleme Un bon réception a une date d'entrée et le Prix achat, un bon de livraison a une date de sortie. On peut ainsi reconstituer un stock à un instant T en triant les évènements E/S par date Et donc recalculer un PMP à une date précise à tout moment, à fortiori en cas de modif ou d'ajout.
Bonjour; Si ma mémoire ne me trompe pas, une rubrique calculable ne doit être stocker. (même que je ne travail pas a 100% avec cette règle ) Par contre la quantité initiale et le PMP initial doivent être stocker. Donc on doit écrire une procédure avec comme paramètre en entrée DATE, à chaque appel elle te recalcule le PMP de toutes les entrées avant cette DATE. Bon Dev.