PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Calcul prix TTC et gestion des remises
Calcul prix TTC et gestion des remises
Iniciado por GB, 01,sep. 2020 09:25 - 3 respuestas
Miembro registrado
371 mensajes
Publicado el 01,septiembre 2020 - 09:25
Bonjour a tous

Pour un logiciel de chiffrage je souhaite mettre en place different calcul de remise :

- remise pour chaque ligne : fonctionnement ok

- remise globale ttc permettant d arrondir le global ttc et ventilé dans les lignes.

Pour cette dernière action je n arrive pas a tomber sur mon montant rond :

Exemple :

Ttc = 4728,30
Arrondi souhaité a 4700 ttc soit 28,30 ttc de remise.
Lorsque je ventil la remise (transformée en %) je tombe sur le montant mais a 20 ou 30 centimes près...


Avez vous une idée ?

Il faut peut etre resté sur une soustraction de remise plutot que passe par la multiplication d un % de remise ?
Miembro registrado
42 mensajes
Publicado el 01,septiembre 2020 - 11:05
Bonjour,
je calcule le ratio entre le montant initial et le montant à obtenir (Attention je déduis les montant d'éco-participation qui ne peuvent pas être modifié par une remise)
une fois toutes les lignes recalculées, je vérifie s'il y a une différence entre le montant obtenu et celui à obtenir.
S'il y a différence, je modifie le montant de la dernière ligne du document afin d'obtenir le résultat voulu.
rRatio est un réel=0
mMntDepart est un monétaire=0
mMntEco est un monétaire=0
SI INTER_TTC=0 ALORS
mMntDepart=Arrondi(txt_Saisie6,cFormatNum.me_NbDecimal)
SINON
mMntDepart=Arrondi(txt_Saisie8,cFormatNum.me_NbDecimal)
FIN
eInd est un entier=0
eTot est un entier=TableOccurrence(tbl_Lig_Fac,toTotal)
eLig est un entier=0
POUR eInd=1 À eTot
SI tbl_Lig_Fac.COL_Est_Comm[eInd]="E" ALORS
SI INTER_TTC ALORS
mMntEco+=tbl_Lig_Fac.COL_Net_TTC[eInd]
SINON
mMntEco+=tbl_Lig_Fac.COL_Net_HT[eInd]
FIN
FIN
FIN
mMntDepart-=mMntEco
SI txt_Mnt_A_Obtenir=0 ALORS
Erreur("Vous n'avez pas indiqué le montant à obtenir!")
RepriseSaisie(txt_Mnt_A_Obtenir)
FIN
SI txt_Mnt_A_Obtenir<0 ET mMntDepart>0 ALORS
Erreur("Vous ne pouvez pas obtenir un montant négatif à partir d'un total positif!")
txt_Mnt_A_Obtenir=0
RepriseSaisie(txt_Mnt_A_Obtenir)
FIN
SI txt_Mnt_A_Obtenir>0 ET mMntDepart<0 ALORS
Erreur("Vous ne pouvez pas obtenir un montant positif à partir d'un total négatif!")
txt_Mnt_A_Obtenir=0
RepriseSaisie(txt_Mnt_A_Obtenir)
FIN
SI mMntDepart=0 ALORS
Erreur("Vous ne pouvez pas obtenir un montant car le total du document est à zéro!")
RepriseSaisie(tbl_Lig_Fac)
FIN
rRatio=(txt_Mnt_A_Obtenir-mMntEco)/mMntDepart

POUR TOUTE LIGNE eInd de tbl_Lig_Fac
SI (tbl_Lig_Fac.COL_Est_Comm[eInd]="A" ET tbl_Lig_Fac.COL_Num_SS_Tot[eInd]=0) OU tbl_Lig_Fac.COL_Est_Comm[eInd]="G" ALORS
tbl_Lig_Fac.COL_Mnt[eInd]=Arrondi(tbl_Lig_Fac.COL_Mnt[eInd]*rRatio,cFormatNum.me_NbDecimal+2)
CalCul_Ligne(eInd)
eLig=eInd
FIN
SI Modulo(eInd,5)=0 ALORS
Jauge(eInd,eTot,"Recalcul en cours.")
FIN
FIN
Jauge()
SI INTER_TTC ALORS
mMntDepart=Arrondi(txt_Saisie8,cFormatNum.me_NbDecimal)
SINON
mMntDepart=Arrondi(txt_Saisie6,cFormatNum.me_NbDecimal)
FIN
SI txt_Mnt_A_Obtenir<>mMntDepart ALORS
mMntEco=txt_Mnt_A_Obtenir-mMntDepart
SI 0<eLig<tbl_Lig_Fac..Occurrence ALORS
SI tbl_Lig_Fac.COL_Qu[eLig]<>0 ALORS
mMntEco=mMntEco/tbl_Lig_Fac.COL_Qu[eLig]
tbl_Lig_Fac.COL_Mnt[eLig]+=mMntEco
CalCul_Ligne(eLig)
FIN
FIN
FIN
txt_Mnt_A_Obtenir=0
Miembro registrado
371 mensajes
Publicado el 01,septiembre 2020 - 13:26
Merci de ta réponse, mais j'ai oublié quelques précisions :

Les calcul sur chaque ligne sont les suivants :

mes calculs sont les suivants :
Prix public x coeff_achat = Pachat
Pachat x coeff_vente = Pvente
nb_poseur x Heure_pose x Main_d'oeuvre_horaire = Montant MO

P vente + Montant MO = Montant_unitaire_HT
P_vente_unitaire HT x quanté = Montant HT

La dessus je rajoute ma TVA, (je stock le montant unitaire de la TVA)

La remise est calculée sur le Montant_unitaire_HT pour donner le montant_unitaire_HT_remisé puis le montant_HT_remisé


Du coup je pense arrondir au supérieur a 2 décimales tous mes calculs (champs monétaires)

Le problème rencontré :

Je veux remiser mon devis a 2000 TTC au lieu de 2100. Il y a donc 100 euros de remise.

Je pensais imputer cette remise par quantité unitaire de produit, puis la repasser en HT, puis calculer le % de remise équivalent.

Sauf qu'avec ça je ne retrouve pas mes 2000 mais plutot 1999,80 ou 2000,30 TTC


Comment faire pour trouver ce montant et que les données soient cohérentes (je calcul des écarts ensuite lors de mes bilans)
Publicado el 01,septiembre 2020 - 15:53
Pour ce genre de cas la meilleure approche qu'on ait c'est de réaliser 2
fois le traitement à la suite, la 2eme boucle réduit souvent l'écart.

Et si écart il reste l'appliquer tel quel à la ligne qui a une quantité
à 1 et qui a le plus grand montant (0.20 supprimé/ajouté sur un montant
élevé ça passe mieux que sur un montant faible).

En général on est alors pas mal mais ce n'est pas du 100%

Pour les cas restant on ajoute une ligne "arrondi commercial" du montant
en trop si l'utilisateur confirme cet ajout.
Dans certains cas il n'y a pas de solution "mathématique" possible faut
bien faire comme on peut ^^

eric l.

> Le 01/09/2020 à 11:26, GB a écrit :
Merci de ta réponse, mais j'ai oublié quelques précisions :

Les calcul sur chaque ligne sont les suivants :

mes calculs sont les suivants :
Prix public x coeff_achat = Pachat
Pachat x coeff_vente = Pvente
nb_poseur x Heure_pose x Main_d'oeuvre_horaire = Montant MO

P vente + Montant MO = Montant_unitaire_HT
P_vente_unitaire HT x quanté = Montant HT

La dessus je rajoute ma TVA, (je stock le montant unitaire de la TVA)

La remise est calculée sur le Montant_unitaire_HT pour donner le
montant_unitaire_HT_remisé puis le montant_HT_remisé


Du coup je pense arrondir au supérieur a 2 décimales tous mes calculs
(champs monétaires)

Le problème rencontré :

Je veux remiser mon devis a 2000 TTC au lieu de 2100. Il y a donc 100
euros de remise.

Je pensais imputer cette remise par quantité unitaire de produit, puis
la repasser en HT, puis calculer le % de remise équivalent.

Sauf qu'avec ça je ne retrouve pas mes 2000 mais plutot 1999,80 ou
2000,30 TTC


Comment faire pour trouver ce montant et que les données soient
cohérentes (je calcul des écarts ensuite lors de mes bilans)