https://bugs.kde.org/show_bug.cgi?id=524590

Stephane MANKOWSKI <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|REPORTED                    |RESOLVED

--- Comment #12 from Stephane MANKOWSKI <[email protected]> ---
(In reply to [email protected] from comment #11)
> (In reply to [email protected] from comment #7)
> > Titre : Échappement CSV incorrect dans SKGServices::stringToCsv (doublement
> > erroné des guillemets)
> > 
> > Description :
> > Dans la méthode SKGServices::stringToCsv (skgbasemodeler/skgservices.cpp),
> > les guillemets doubles étaient remplacés deux fois en raison de
> > l'utilisation d'une chaîne temporaire. Cela provoquait un doublement
> > indésirable des guillemets lors des exports CSV.
> > 
> > Code d'origine :
> > 
> > C++
> > QString SKGServices::stringToCsv(const QString& iNumber)
> > {
> >     QString output = iNumber;
> >     output.replace('"', QStringLiteral("#SKGDOUBLECOTE#"));
> >     output.replace(QStringLiteral("#SKGDOUBLECOTE#"),
> > QStringLiteral("\"\""));
> >     output = '"' % output % '"';
> >     return output;
> > }
> > Correction proposée :
> > Supprimer l'étape intermédiaire #SKGDOUBLECOTE# et effectuer le remplacement
> > direct des guillemets doubles, conformément à la norme CSV :
> > 
> > C++
> > QString SKGServices::stringToCsv(const QString& iNumber)
> > {
> >     QString output = iNumber;
> >     output.replace('"', QStringLiteral("\"\""));
> >     output = '"' % output % '"';
> >     return output;
> > }
> > Statut :
> > Testé localement sur la version 2.31.0. La modification corrige le problème
> > d'échappement des guillemets et l'export CSV fonctionne désormais
> > correctement.
> 
> EXPLICATION FINALE QUI SEMBLE AVOIR DU SENS
> 
> 1. La vraie chaîne d'appels dans Skrooge
> Dans le code de Skrooge, l'affichage des montants dans l'interface (les
> tableaux de comptes, les listes d'opérations, etc.) ne passe pas par
> stringToCsv, mais par la méthode SKGServices::toCurrencyString.
> 
> Or, si on regarde comment toCurrencyString fonctionnait dans la base de code
> d'origine de Skrooge, elle faisait elle-même appel à... stringToCsv pour
> formater et nettoyer la chaîne finale avant de l'afficher dans les éléments
> graphiques (les QTableWidgetItem ou les vues Qt) !
> 
Absolument pas, toCurrencyString fait appel à stringToCsv pour interpréter
correctement LC_MONETARY.

> 2. Le mécanisme de l'erreur d'affichage
> Voici la séquence qui provoquait l'apparition des parenthèses :
> 
> La valeur brute : Vous avez une valeur négative dans SQLite, par exemple
> -150.00.
> 
> Le passage par la locale/Qt : Quand Skrooge formate ce nombre en chaîne de
> caractères, Qt applique les règles de formatage selon la configuration
> système ou le paramétrage interne. Dans certaines locales ou configurations
> de formatage monétaire, un nombre négatif est représenté avec des guillemets
> ou des caractères de cadrage temporaires.
> 
> Le piège de stringToCsv : toCurrencyString envoyait le résultat à
> stringToCsv. À cause du bogue de la double substitution (#SKGDOUBLECOTE#),
> la chaîne de texte affichant le montant négatif se retrouvait corrompue avec
> des paires de guillemets superflues.

C'est pas vraiment cela.
> 
> Le rendu graphique (Qt) : Lorsque le composant d'affichage graphique de
> KDE/Qt recevait une chaîne monétaire corrompue par ces guillemets parasites,
> il n'arrivait plus à parser le signe moins -. Pour éviter de crasher ou
> d'afficher un symbole inconnu, le moteur de rendu de texte fallbackait sur
> la convention d'affichage comptable standard de remplacement : entourer le
> nombre de parenthèses (150.00).
> 
> En résumé
> Le bogue dans stringToCsv altérait la chaîne textuelle générée par
> toCurrencyString. L'interface graphique de Skrooge recevait un texte
> corrompu et transformait le signe - mal interprété en parenthèses (...).
> 
> En corrigeant stringToCsv, le texte envoyé aux composants graphiques de
> Skrooge est redescendu propre, et Qt a pu réafficher normalement le signe
> moins - !

Non, c'est vraiment pas comme cela que ça fonctionne.
Je pense que vous avez fait cette analyse avec une IA qui s'est un peu perdu.

Dans tous les cas, il y a maintenant une option pour choisir comment afficher
les montants (numérique ou monétaire) et cette option résout le problème.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to