Dephasage facture & total TTC

Bonjour,
J’observe un décalage entre le montant TTC de la facture et celui disponible sur l’équipement de la facture.
Ici je vais parler du module TIC pluggé sur le linky

Prix de la veille, à savoir le 05/02/2025

Vue facture


Facture - total ttc → 10.32€
Commande total TTC veille → 8.86€

Aboservez vous le meme comportement ?
@chris94440

J’ai un écart de quelques centimes du aux arrondis, mais pas une aussi grosse différence


Pour le 04/02/2025 la dif était d’une trentaine de centimes mais pour hier la différence est plus grande … a mon avis c’est un pb dans ma conf mais je sais pas comment investiguer…:slight_smile:

Regarde déjà si les prix HT HP et HC correspondent. Si oui regarde les prix TTC HP et HC. Si toujours oui, le problème se situe au niveau des taxes ou abonnement

1 « J'aime »

Re
Si on regarde la journée du 07/02/2025 (hier)
Les tarif HP/HC TTC sont en phase avec la facture
image

1.68+1.87 = 3.54

Je suis d’accord avec toi que le soucis doit venir soit de l’abonnement soit des taxes mais rien ne semble se chevaucher … si cela était le cas j’aurais aussi un soucis sur la facture non ?

La facture générée correspond exactement au montant EDF.

Mes paramétrages si jamais qq voit qq chose …

Comment debugger ce calcul et forcer le re-calcul ?
@chris94440

J’ai d’ailleurs le meme soucis sur un équipement fils ou le montant total devrait juste etre égal au montant HC / HP TTC
image

La case application abonnement étant cochée …

Comment est paramétré ta période de facture dans l’onglet outil:

Pour l’équipement secondaire comme tu as coché la case application abonnement, l’abonnement s’applique, ainsi que les taxes. Ce n’est pas incohérent.

Pour débugger regarde sur 1 mois complet et compare la facture avec le graphique 12 mois TTC (chaque élément) et la synthèse des statistiques

Ok je vais faire
Pour l’abonnement je pensais que c’était l’inverse …il fallait cocher pour que l’abonnement ne soit pas pris en compte…je vais décocher alors

La période de facturation est comme toi

Non la période n’est pas bonne. Il faut 01-01
Sinon pour les options, bien lire la documentation

1 « J'aime »

@superbricolo
Bon pour avancer sans rien casser sur mon jeedom de prod j’ai monté un autre jeedom avec le plugin et j’ai fait un jeelink pour avoir les infos du compteur.
J’ai pas fini tous mes tests mais ce qu’il ressort :

  • si pas abo et pas de taxes les montants affichés dans l’encart prix sont équivalent à ceux de la facture
  • si abo il y a une différence entre l’encart prix et la facture qui est tjs équivalent à la tva sur l’abonnement … peux tu vérifier dans le calcul de l’encart que tu appliques bien la tva de 5,5 sur l’abonnement ?

Encart copié écrand aujourd’hui (11/02/2025)
image

Copie écran facture aujoutd’hui

Copie écran facture hier

Copie écran semaine

Je vais m’atteler a mettre en place les taxes

@chris94440

Chez moi la TVA est bien appliquée, alors oui elle est bien appliquée. Sous réserve que la case application abonnement est cochée dans le cas où ton équipement est bien un fils.
Sinon ce qui est bizarre dans tes exemples, c’est qu’il n’y a pas de TVA de comptabilisée pour la consommation. Sauf si tu as mis celle-ci à zéro pour l’exemple

Ce qui peut générer un écart avec la facture, c’est la manière de calculer l’abonnement. Dans la configuration du plugin:

Merci pour ton retour … ok pour l’application de l’abonnement mais pas chez moi … cela doit etre un pb de paramétrage
Pour la conso j’avais volontairement pas fait une copie écran globale

Il s’agit bien de l’équipement père

Conf du plugin :

Exemple complet de la journée d’hier

Alors comme la case calcul de l’abonnement à l’année est cochée. La manière de calculer l’abonnement est différente entre la facture et le dashboard

Ok merci pour ton retour.
Je vais continuer avec l’application des taxes pour voir comment cela se comporte … depuis que j’ai le plugin (environs 2 ans) je n’avais pas remarqué ce comportement … c’est moi qui doit me louper mais pour le moment je ne mets pas le doigt sur soucis … je reviens dans la journée avec l’application de l’accise … :slight_smile:

Franchement ton paramétrage alors d’être correcte. je vois pas trop d’où vient le soucis

moi non plus :upside_down_face:
J’ai refait une installation from scratch pour voir et analyser par dichotomie mais là j’avoue je sèche car dès que j’ajoute une taxe fonction de la consommation je comprends pas la différence / comportement …
Je vais devoir analyser le comportement via le code pour comprendre ce que je fais mal …de ce que je vois tout se passe dans la class conso_teleinfo et plus particulièrement dans les fonctions GetCalculPrice et consoResult qui fait les calculs

Merci pour ton support je reviens vers toi apres avoir regardé

Résultat fct GetCalculPrice

[{"id_equipement":17,"id_parent":"non","tva":null,"tva_abo":5.5,"abonnement":16.88,"annee":"2025","mois":"2","jour":"10","semaine":"07","hp":0,"hc":2.51,"hp2":12.95,"hc2":14.37,"hp3":0,"hc3":0,"total_hp":0,"total_hc":0.18,"total_hp2":1.5,"total_hc2":1.25,"total_hp3":0,"total_hc3":0,"kwh":0,"prix_hp":"0,0956","prix_hc":"0,0736","prix_hp2":"0,1156","prix_hc2":"0,0869","prix_hp3":"0,5151","prix_hc3":"0,0928","temp_min":null,"temp_max":"0.00","temp_moy":null,"dju":null,"dju_clim":"0","categorie":"2025-02-10","rec_date":"2025-02-10"}]

image

Log au niveau de la fonction de calcul consoResult

[2025-02-11 14:04:05] DEBUG  ChD -> type_eq -> electricity
[2025-02-11 14:04:05] DEBUG  ChD -> total_hp_ttc -> 1.5
[2025-02-11 14:04:05] DEBUG  ChD -> total_hc_ttc -> 1.43
[2025-02-11 14:04:05] DEBUG  ChD -> total_multi_ttc -> 0.1
[2025-02-11 14:04:05] DEBUG  ChD -> total_abo -> 0.55495890410959
[2025-02-11 14:04:05] DEBUG  ChD -> total_fixe -> 0
[2025-02-11 14:04:05] DEBUG  ChD -> total ttc -> 3.58

Le calcul de l’abonnement est le suivant

 case 'day':
                 $abo = (($cs['abonnement'] * 12) / 365); /*Abonnement au mois * 12 mois / 365 jours */
                 //$abo = (($ab * $cs["tva_abo"]) / 100) + $ab; /*ajoute la tva*/
                 break;

Conf abonnement

Le premier problème vient du montant retourner par la fonction GetCalculPrice de l’abonnement
Ici 16.88 alors qu’il devrait être 16.54*1.055 = 14.45 → il faut investiguer la requete sql qui fait cette extraction mais elle est énorme … :slight_smile:

Conf taxe

L’autre incohérence vient des taxes et plus particulièrement du total_multi_ttc … 0.1€ au lieu de 1.21€ … mais là j’ai pas eu le temps du tout de regarder

Sur la partie multi_ttc le soucis vient des valeurs HC / HP … il y a que du HC


HC * 0.0337 * 1.2 = 0.1

Reste regarder prq la requete ne renvoi pas les bonnes infos sur hp / hc

Du coup cela confirme que le paramétrage est OK mais c’est la comptabiliation des hc / hp qui est en cause

Encore moi … :slight_smile:

Pour moi le bug vient qu’il ne fait la somme que pour du tarif de base ou heure creuse heure pleine classique … les hp2/hc2 et hp3/hc3 ne sont pas pris en compte … d’ailleurs on le voit dans la requete sql faite dans la class conso_tva

J’ai fait la modif sur la requete suivante et c’est OK pour les taxes

Modif 1

ROUND(SUM(s.hp)+SUM(s.hp2)+SUM(s.hp3),2)*1 AS hp,
ROUND(SUM(s.hc)+SUM(s.hc2)+SUM(s.hc3),2)*1 AS hc,
ROUND(SUM(s.hp)+SUM(s.hp2)+SUM(s.hp3)+SUM(s.hc)+SUM(s.hc2)+SUM(s.hc3),2)*1 AS total,

modif 2

then (s.hp*conso_price.hc)/1000*1 else (s.hp+s.hc+s.hp2+s.hc2+s.hp3+s.hc3)*1 END ),2)*conso_taxe.prix)*(1+(conso_tva.valeur/100)),2) ELSE 0 END AS multi_ttc,
SELECT
DATE_FORMAT(s.`rec_date`,"sem %v %y")    as categorie  ,
conso_taxe.global,
conso_taxe.inte,
conso_taxe.fixe,
ROUND(SUM(s.hp)+SUM(s.hp2)+SUM(s.hp3),2)*1 AS hp,
ROUND(SUM(s.hc)+SUM(s.hc2)+SUM(s.hc3),2)*1 AS hc,
ROUND(SUM(s.hp)+SUM(s.hp2)+SUM(s.hp3)+SUM(s.hc)+SUM(s.hc2)+SUM(s.hc3),2)*1 AS total,
rec_date,
CASE WHEN conso_taxe.inte > 0 THEN ROUND(conso_taxe.prix * round(SUM(CASE WHEN conso_taxe.type_ecq in ("water","oil") THEN s.hc/1000*1 WHEN conso_taxe.type_ecq = "gaz" THEN s.hc*conso_price.hc/1000*1 else s.hc*1 END),2) * (1+(conso_tva.valeur/100)),2) ELSE 0 END AS inte_hc,
CASE WHEN conso_taxe.inte > 0 THEN ROUND(conso_taxe.prix * round(SUM(CASE WHEN conso_taxe.type_ecq in ("water","oil") THEN s.hp/1000*1 WHEN conso_taxe.type_ecq = "gaz" THEN s.hp*conso_price.hc/1000*1 else s.hp*1 END),2) * (1+(conso_tva.valeur/100)),2) ELSE 0 END AS inte_hp,
CASE WHEN conso_taxe.inte > 0 THEN ROUND(conso_taxe.prix * round(SUM(CASE WHEN conso_taxe.type_ecq in ("water","oil") THEN s.hp/1000*1 WHEN conso_taxe.type_ecq = "gaz" THEN s.hp*conso_price.hc/1000*1 ELSE s.hp+s.hc*1 END),2) * (1+(conso_tva.valeur/100)),2) ELSE 0 END AS total_inte,
CASE WHEN conso_taxe.global > 0 THEN ROUND((round(SUM(CASE WHEN conso_taxe.type_ecq in ("water","oil") THEN (s.hp)/1000*1 WHEN conso_taxe.type_ecq = "gaz" then (s.hp*conso_price.hc)/1000*1 else (s.hp+s.hc+s.hp2+s.hc2+s.hp3+s.hc3)*1 END ),2)*conso_taxe.prix)*(1+(conso_tva.valeur/100)),2) ELSE 0 END AS multi_ttc,
CASE WHEN conso_taxe.fixe > 0 THEN ROUND(conso_taxe.prix/(DATEDIFF(conso_taxe.date_fin,conso_taxe.date_debut)+1)*(1+(conso_tva.valeur/100)),2) ELSE 0 END AS fixe_day,
CASE WHEN conso_taxe.fixe > 0 THEN ROUND(conso_taxe.prix/(DATEDIFF(conso_taxe.date_fin,conso_taxe.date_debut)+1)*(1+(conso_tva.valeur/100))*
(CASE WHEN "2025-02-10" between conso_taxe.date_debut and conso_taxe.date_fin and "2025-02-10" between conso_taxe.date_debut and conso_taxe.date_fin THEN (DATEDIFF("2025-02-10","2025-02-10")+1)
WHEN "2025-02-10" between conso_taxe.date_debut and conso_taxe.date_fin and "2025-02-10" > conso_taxe.date_fin THEN (DATEDIFF(conso_taxe.date_fin,"2025-02-10")+1)
WHEN "2025-02-10" between conso_taxe.date_debut and conso_taxe.date_fin and "2025-02-10" < conso_taxe.date_debut THEN (DATEDIFF("2025-02-10",conso_taxe.date_debut)+1)
ELSE (DATEDIFF(conso_taxe.date_fin,conso_taxe.date_debut)+1) END),2)
ELSE 0 END AS fixe_week,
CASE WHEN conso_taxe.fixe > 0 THEN ROUND(conso_taxe.prix/(DATEDIFF(conso_taxe.date_fin,conso_taxe.date_debut)+1)*(1+(conso_tva.valeur/100))*
(CASE WHEN "2025-02-10" between conso_taxe.date_debut and conso_taxe.date_fin and "2025-02-10" between conso_taxe.date_debut and conso_taxe.date_fin THEN (DATEDIFF("2025-02-10","2025-02-10")+1)
WHEN "2025-02-10" between conso_taxe.date_debut and conso_taxe.date_fin and "2025-02-10" > conso_taxe.date_fin THEN (DATEDIFF(conso_taxe.date_fin,"2025-02-10")+1)
WHEN "2025-02-10" between conso_taxe.date_debut and conso_taxe.date_fin and "2025-02-10" < conso_taxe.date_debut THEN (DATEDIFF("2025-02-10",conso_taxe.date_debut)+1)
ELSE (DATEDIFF(conso_taxe.date_fin,conso_taxe.date_debut)+1) END),2)
ELSE 0 END AS fixe_month,
CASE WHEN conso_taxe.fixe > 0 THEN ROUND(conso_taxe.prix/(DATEDIFF(conso_taxe.date_fin,conso_taxe.date_debut)+1)*(1+(conso_tva.valeur/100))*
(CASE WHEN "2025-02-10" between conso_taxe.date_debut and conso_taxe.date_fin and "2025-02-10" between conso_taxe.date_debut and conso_taxe.date_fin THEN (DATEDIFF("2025-02-10","2025-02-10")+1)
WHEN "2025-02-10" between conso_taxe.date_debut and conso_taxe.date_fin and "2025-02-10" > conso_taxe.date_fin THEN (DATEDIFF(conso_taxe.date_fin,"2025-02-10")+1)
WHEN "2025-02-10" between conso_taxe.date_debut and conso_taxe.date_fin and "2025-02-10" < conso_taxe.date_debut THEN (DATEDIFF("2025-02-10",conso_taxe.date_debut)+1)
ELSE (DATEDIFF(conso_taxe.date_fin,conso_taxe.date_debut)+1) END),2)
ELSE 0 END AS fixe_year,
conso_taxe.id,
conso_taxe.libelle ,
conso_taxe.prix ,
rec_date AS cat_jours,
DATE_FORMAT(s.`rec_date`,"%Y") AS annee,
DATE_FORMAT(s.`rec_date`,"%c") AS mois,
DATE_FORMAT(s.`rec_date`,"%e") AS jour,
DATE_FORMAT(s.`rec_date`,"%v") AS semaine,
DATE_FORMAT(s.`rec_date`,"sem %v %y") AS cat_semaine,
DATE_FORMAT(s.`rec_date`,"%b %y") AS cat_month,
DATE_FORMAT(s.`rec_date`,"%y") AS cat_anne
FROM  conso_jour s
LEFT JOIN conso_taxe ON UNIX_TIMESTAMP(DATE_FORMAT(rec_date , "%Y-%m-%d")) BETWEEN UNIX_TIMESTAMP( DATE_FORMAT( date_debut,  "%Y-%m-%d" ) ) AND UNIX_TIMESTAMP( DATE_FORMAT( date_fin,  "%Y-%m-%d")) and conso_taxe.type_ecq = "electricity"
LEFT JOIN conso_tva ON conso_taxe.id_tva = conso_tva.id
LEFT JOIN (SELECT * FROM conso_price WHERE conso_price.type_ecq = "electricity" AND "2025-02-10" BETWEEN conso_price.date_debut AND conso_price.date_fin LIMIT 0,1) conso_price ON conso_price.type_ecq = "electricity" AND s.rec_date BETWEEN conso_price.date_debut AND conso_price.date_fin
WHERE id_eq =17 AND
(`rec_date` BETWEEN   "2025-02-10" AND "2025-02-10" )
GROUP by categorie  ,conso_taxe.id ORDER BY rec_date ASC

J’ai pas testé pour les taxes fixes mais je pense qu’il n’y a pas de raison pour que cela pose pb

Ce soir je regarde le pb sur la valorisation de l’abonnement
@chris94440

Concernant le soucis sur la TVA il vient de la fonction GetCalculPrice de la class conso_teleinfo et plus particulièrement de la mise en forme du montant de l’abonnement

(SELECT SUM(FORMAT(montant,2, "fr_FR") * (1 + cst.valeur/100)) AS abo FROM conso_abo aa INNER JOIN conso_tva cst on cst.id = aa.id_tva where type_ecq like "electricity" AND UNIX_TIMESTAMP(DATE_FORMAT(rec_date , "%Y-%m-%d")) BETWEEN UNIX_TIMESTAMP( DATE_FORMAT( aa.date_debut,  "%Y-%m-%d" ) ) AND UNIX_TIMESTAMP( DATE_FORMAT( aa.date_fin,  "%Y-%m-%d" ) ) ) as abonnement,

Montant vaut chez moi 16.54 mais le FORMAT(montant,2, « fr_FR ») rend un entier et pas un float … du coup la calcul fait est

16 * 1.055 = 16.88 -> cohérent avec ce qu'on observe

Je ne connais pas MySQL mais à quoi sert le code langue dans une conversion de montant ?

Si on remplace la ligne par

ROUND((SELECT SUM(FORMAT(montant,2) * (1 + cst.valeur/100)) AS abo FROM conso_abo aa INNER JOIN conso_tva cst on cst.id = aa.id_tva where type_ecq like "electricity" AND UNIX_TIMESTAMP(DATE_FORMAT(rec_date , "%Y-%m-%d")) BETWEEN UNIX_TIMESTAMP( DATE_FORMAT( aa.date_debut,  "%Y-%m-%d" ) ) AND UNIX_TIMESTAMP( DATE_FORMAT( aa.date_fin,  "%Y-%m-%d" ) ) ),2) as abonnement,

Le calcul est cohérent … :slight_smile:

A ta dispo si j’ai loupé un truc
@chris94440