[grisbi-devel] Problème avec "extraire un numéro à enregistrer dans N° de chèque/Virement"

Pierre Biava pierre.biava at orange.fr
Mon Oct 15 15:01:05 CEST 2018


Ludovic Rousseau a écrit le 14/10/2018 à 22:39 :

Bonjour,

> Bonjour,
>
> J'ai un problème avec l'option d'importation "extraire un numéro à
> enregistrer dans N° de chèque/Virement"
>
> Le code cherche n'importe quel suite de caractères qui ressemble à un
> nombre pour l'utiliser comme numéro de chèque.
> Mon problème est que la banque ajoute une date sur les paiements par CB.
> Par exemple :
> $ ofxdump telechargement.ofx
> [...]
> ofx_proc_transaction():
>      Account ID : 11315 00001 xxxxxxxxxx
>      Transaction type: DEBIT: Generic debit
>      Date posted: Wed Aug 15 11:59:00 2018 CEST
>      Total money amount: -50.00
>      # of units: 50.00
>      Unit price: 1.00
>      Financial institution's ID for this transaction: xxxxxxxxxx-17.13.57.177042
>      Name of payee or transaction description: CB FRAMASOFT       FACT 140818
>      Extra transaction information (memo): CB FRAMASOFT       FACT 140818
> [...]
>
> Donc ici Grisbi va prendre "140818" comme un numéro de chèque alors
> que c'est une date.
>
> Pour un chèque ça marche très bien.
> Par exemple avec :
> [...]
> ofx_proc_transaction():
>      Account ID : 11315 00001 xxxxxxxxxx
>      Transaction type: DEBIT: Generic debit
>      Date posted: Mon Aug  6 11:59:00 2018 CEST
>      Total money amount: -571.37
>      # of units: 571.37
>      Unit price: 1.00
>      Financial institution's ID for this transaction: xxxxxxxxxx-02.03.45.399201
>      Name of payee or transaction description: CHEQUE N 8786734
>      Extra transaction information (memo): CHEQUE N 8786734
> [...]
>
> Ici "8786734" est bien un numéro de chèque.

En fait le problème vient du fait que la banque ne détaille pas le moyen 
de paiement. Du coup libofx ne peut pas ranger le débit dans la bonne case.

Ceci étant dit, comme je mets le bon moyen de paiement, le numéro de 
chèque disparaît car il n'est pas utile.

> Ma proposition : est-ce une bonne idée d'ajouter un critère
> supplémentaire avant de prendre un nombre pour un numéro de chèque ?
> Par exemple il faut que la transaction contienne "CHEQUE".


C'est une bonne idée car ça limiterai le nombre de fausses informations. 
Il reste le cas des Virements qui ont parfois un numéro valide.

> ça fonctionnerait pour mon cas. Mais je suis peut-être une exception ?
> Le patch est très simple :
> diff --git a/src/import.c b/src/import.c
> index b41f84f9c..3e493cea1 100644
> --- a/src/import.c
> +++ b/src/import.c
> @@ -2313,7 +2313,7 @@ static gint gsb_import_create_transaction
> (struct ImportTransaction *imported_tr
>                   gsb_data_transaction_set_notes (transaction_number,
>                           imported_transaction->tiers);
>           }
> -        if (etat.extract_number_for_check)
> +        if (etat.extract_number_for_check &&
> strstr(imported_transaction->tiers, "CHEQUE"))
>           {
>               tmp_str = gsb_string_extract_int (imported_transaction->tiers);
>               if (tmp_str && strlen (tmp_str) > 0)


Ça doit fonctionner comme ça. Il faut remplacer CHEQUE par _("Check") et 
utiliser la formule de recherche my_strcasecmp (). Ça devrait fonctionner.

>
> On peut rendre le texte à chercher paramétrable.


A voir. La fonction d'importation gsb_import_create_transaction () est 
complexe. Je me demande si je ne vais pas la réécrire et mettre en forme 
les données au niveau de l'interface avec l'importation des fichiers 
OFX, QIF et CSV.

Ce serait plus clair.

-- 

A+

Pierre Biava



More information about the devel mailing list