Vider les transactions de Gnucash


Voilà un script qui permet de créer une nouvelle  base Gnucash, en ne vidant que les transactions.

Ce script a été testé sur des bases de données au format XML, il ne fonctionne pas si votre base est en Sqlite 3, Mysql ou Postgresql, dans ce cas il faut utiliser soit LIbre Office, soit un utilitaire correspondant à la base de données pour vider les tables « splits » et « transactions ».

Script et mode d’emploi : proposé par Sylvie Henry Réant

Et chaque année pour vider les comptes et redémarrer avec un gnucash tout neuf tout en gardant les factures et les compte clients j’utilise depuis  2007 un script qui m’a été donné par Pascal et Dominique, dont voici un résumé :

méthode changer d’année gnu cah sous linux

Pascal avait écrit la méthode comme ça :

cat ton_compte.2006.xac | gunzip | perl deltr.pl | gzip > ton_compte.2007.xac

cela suppose d’abord que tu as créé un fichier de script perl avec un éditeur de texte simple. Tu ouvres cet éditeur et tu y copies le texte du script. Tu sauves dans un fichier qui doit être dans le même répertoire que ton compta_2006.xac et qui doit s’appeler ‘deltr.pl‘. Puis tu ouvres un shell, tu te déplaces dans ce même répertoire avec la commande :

$ cd mon_répertoire_ou_j_ai_range_mon_fichier

puis tu tapes la commande ci-dessus :

$ cat ton_compte.2006.xac | gunzip | perl deltr.pl | gzip > ton_compte.2007.xac

cette commande crée le nouveau fichier 2007 sans modifier le 2006, tu n’as pas besoin de le copier avant.

voilà, est-ce plus clair ?


Dominique

Voila le script à mettre dans un fichier texte et à nommer deltr.pl

#! /usr/bin/perl -w

$intrans=0 ; # is one while reading a transaction

while ( my $line=<> )
{    if ( $intrans )
{    if ( $line =~ m;^</gnc:transaction>; )
{        $intrans=0 ;
}
} else {
if ( $line =~ /^<gnc:transaction/ ) {
$intrans=1 ;
} else { print $line ; }
}
}

Bonne compta !

Sylvie Henry Réant