Titres dans rapports

Recoupe toutes les discussions à propos de Noalyss
Skipper
Messages : 54
Enregistré le : mar. nov. 14, 2017 10:35 pm

Titres dans rapports

Message par Skipper » mar. nov. 14, 2017 10:35 pm

Bonjour,

est-il possible d\'avoir le nom d\'un compte pour un rapport ? [101%] donne accès au valeur du compte 101, mais quel est son nom ? [101T] avec T comme titre : Possible ?

Edit: Se serait peut-etre utile aussi dans les les fichier de bilan !


Merci !

Dany
Messages : 2181
Enregistré le : mar. nov. 14, 2017 10:35 pm

Re:Titres dans rapports

Message par Dany » mar. nov. 14, 2017 10:35 pm

Le fichier form ne sert qu\'aux formules, c\'est dans l\'autre fichier qu\'on écrit le libellé. Voir les bilans par exemple.

Skipper
Messages : 54
Enregistré le : mar. nov. 14, 2017 10:35 pm

Re:Titres dans rapports

Message par Skipper » mar. nov. 14, 2017 10:35 pm

Je parle des rapports et des bilans.

Pourquoi écrire \"Fournisseurs [401100%]\" ?

\"[401100T] [401100%]\" serait
- aussi clair
- moins à taper
- cohérant avec les textes de la bdd
- optionel - qui veut, peux toujours taper \'grizlbriz\' si ça lui chante
- et surtout plus sûr : Pas de possibilité d\'avoir \"Clients [401100%]\"

Dany
Messages : 2181
Enregistré le : mar. nov. 14, 2017 10:35 pm

Re:Titres dans rapports

Message par Dany » mar. nov. 14, 2017 10:35 pm

Bon simplifier le code, en fait on utilise l\'operateur SQL like, et pour lui le % est comme le * :-)

Il y a un passage à ce sujet dans le manuel je pense; il y a
[401%]
[401]
Operateur spéciaux (avec ou sans le %)
[401D]
[401S]
[401C]

Voir le morceau de code ici http://www.phpcompta.be/doc/impress__in ... ce646fc983

Skipper
Messages : 54
Enregistré le : mar. nov. 14, 2017 10:35 pm

Re:Titres dans rapports

Message par Skipper » mar. nov. 14, 2017 10:35 pm

Le manuel est assez mince, et ne parle, evidemment, pas de mon idée d\'avoir les titres des comptes.

Alors peut-etre en pseudo-code, j\'arrive à me faire comprendre :

Code : Tout sélectionner


if(ereg(\"^\\[([0-9].)T\\]$\",$p_label,$e) == true) {
  $sql = \"SELECT nom_du_compte FROM table_de_comptes WHERE no_du_compte LIKE \'\".$e[0].\"%\' ORDER BY no_du_compte DESC LIMIT 1\";
  $result = execSQL($sql);
  if($result)
    $p_label = $result[0];
}
Alors p_label pourrait être soit un texte, soit le numéro d\'un compte sous forme [123456T] dans quel cas le texte est cherché dans la bdd.

C\'est compliqué ?

Dany
Messages : 2181
Enregistré le : mar. nov. 14, 2017 10:35 pm

Re:Titres dans rapports

Message par Dany » mar. nov. 14, 2017 10:35 pm

Ben vu que tu as déjà fait le code il n\'y pas de soucis, mais j\'aimerais bien que tu l\'implémentes chez toi pour voir et puis tu m\'envoies la correction (un diff ou un tarball), je suis en plein boulot sur la version 5.0 et il y a pas mal d\'améliorations qui arrivent, je suis un peu full

Le changement doit normalement être mis ici

http://www.phpcompta.be/doc/classAcc__R ... 3d05ceb136


@+,

.D.

Dany
Messages : 2181
Enregistré le : mar. nov. 14, 2017 10:35 pm

Re:Titres dans rapports

Message par Dany » mar. nov. 14, 2017 10:35 pm


Skipper
Messages : 54
Enregistré le : mar. nov. 14, 2017 10:35 pm

Re:Titres dans rapports

Message par Skipper » mar. nov. 14, 2017 10:35 pm

Voilà ce que je voulais, en format context diff.

Il y a deux changements:

1/ Dans les rapport, champs \"Texte\", il est possible de mettre [1234] pour avoir la désignation du compte 1234.

2/ Dans les bilan, en utilisant c\'est la même chose. C\'est alors le \'N\' qui fait la magie. S\'il n\'y a pas une définition de la variable $N1234 dans le fichier .form, c\'est alors la désignation du compte. Si le fichier .form définit une variable $N1234, alors c\'est que cette definition qui est utilisée.


Ce diff est contre la version 4.3.build 2479

[file name=printvar.txt size=3606]http://www.phpcompta.be/images/fbfiles/ ... intvar.txt[/file]

Dany
Messages : 2181
Enregistré le : mar. nov. 14, 2017 10:35 pm

Re:Titres dans rapports

Message par Dany » mar. nov. 14, 2017 10:35 pm

Merci, je viens de tester ton code, mais le problème est que cela ne fonctionne pas. Ton patch porte sur une partie particulièrement épineuse et difficile

Il n\'y a aucun changement pour les rapports, exemple je mets [4117T] [4117t] dans la colonne texte ou formule.

Pour les bilans, cela fonctionne mais uniquement avec generate_plain mais il ne se passe rien avec les generate_odt. Désolé

Ah oui, et alors un petit bug
Dans la requête SQL, à partir de postgresql 8.3 il faut que les types de variables soient en texte pour utiliser LIKE

Donc tu dois \"caster\" ainsi

Code : Tout sélectionner

trunk_dossier13=# select * from tmp_pcmn where pcm_val like \'11%\';
ERROR:  operator does not exist: poste_comptable ~~ unknown
LINE 1: select * from tmp_pcmn where pcm_val like \'11%\';
                                             ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.
trunk_dossier13=# select * from tmp_pcmn where pcm_val::text like \'11%\';
 pcm_val |      pcm_lib      | pcm_val_parent | pcm_type 
---------+-------------------+----------------+----------
      11 | Prime d\'émission  |              1 | PAS
Je ne suis pas sûr que tu aies fait un diff avec la r2749

Code : Tout sélectionner

/phpcompta/include$ patch 

Skipper
Messages : 54
Enregistré le : mar. nov. 14, 2017 10:35 pm

Re:Titres dans rapports

Message par Skipper » mar. nov. 14, 2017 10:35 pm

Merci !

Pour le problème dans les rapports : Tu as raison. Un petit changement in extremis .. Dans le regex dur ereg(), il faut que le \'.\' soit remplacé par \'+\' : \"[0-9].\" ne peut pas fonctionner, \"[0-9]+\" est ce que je voulais.

Pour le bilan, voilà d\'où vient le problème : Ton choix du compte a du avoir un accent dans le nom. htmlentities() a transformé ça en &blabla; et ça a cassé le format XML du fichier odt ou ods. J\'avais evidemment fait un meilleur choix pendant mes tests (pas d\'accents), et donc ça fonctionnait. La solution est d\'enlever le htmlentities() et prier. Je verrai de trouver une solution pour mieux protéger le XML que par la prière.

Pour la dernière question : J\'ai bien utilisé diff(1), et non patch(1), pour créer le context diff. Plus présisement : diff -bBc. T\'es sûr que je devrais utiliser patch ?

La version mentionée est la version qui s\'affice quand j\'appelle phpcompta.

Répondre