Sweetohm

Michel Casabianca


J’ai cherché longtemps un logiciel de gestion compte sous MacOSX sans résultat jusqu’à ce que je tombe sur ChaChing.

C’est le iTunes de la compta ! C’est joli, mais surtout c’est bien pensé, avec gestion de tags et rapports personnalisés. Ce n’est pas gratuit mais le prix de 40$ est très raisonnable. On peut télécharger une version d’essai à cette adresse http://www.midnightapps.com/. A essayer absolument !

Note pour les hackers de tous poils : le logiciel utilise (fort judicieusement) SQLite 3 pour les données. On peut donc générer ses propres rapports à coup de requêtes SQL. On peut bien sûr le faire en Ruby. Pour ce faire il faudra installer la gem SQLite 3 à coup de sudo gem install sqlite3-ruby (mais je crois qu’elle est déjà installée dans la version de Ruby embarquée dans MacOSX).

Voici un petit script d’exemple qui affiche les balances de vos comptes :

#!/usr/bin/env ruby
# Script affichant les comptes ChaChingrequire 'sqlite3'

# le fichier de la base de données ChaChing
DATABASE = File.expand_path '~/Library/Application Support/Cha_Ching/Cha_Ching.1ccdb'

# les balances des comptes
balances = {}

# récupère les données dans la base
begin
  db = SQLite3::Database.new(DATABASE)
  query = "SELECT ZTRANS_AMOUNT,ZTRANS_ACCOUNTID FROM ZTRANSENTITY"
  db.execute(query) do |row|
    value = row[0].to_f
    account = row[1]
    balances[account] = 0.0 if not balances.keys.include?(account)
    balances[account] += value
  end
ensure
  db.close
end

# on affiche la liste des comptes et leur balance
for compte in balances.keys
  puts "Compte #{compte}: #{"%.2f" % balances[compte]}"
end

Voici maintenant un petit script listant les colonnes de la table des opérations :

#!/usr/bin/env ruby
# Script affichant le nom et le type des colonnes de la table des opérations ChaChing

require 'sqlite3'

# le fichier de la base de données ChaChing
DATABASE = File.expand_path '~/Library/Application Support/Cha_Ching/Cha_Ching.1ccdb'

# la liste des colonnes
colonnes = []

# affiche le nom et le type des colonnes de la table ChaChing
begin
  db = SQLite3::Database.new(DATABASE)
  query = "SELECT * FROM ZTRANSENTITY"
  db.query(query) do |result|
    noms = result.columns
    types = result.types
    0.upto(noms.length-1) do |index|
      colonnes << { :name => noms[index], :type => types[index] }
    end
  end
ensure
  db.close
end

LIGNE = 40
# affiche une ligne
def ligne(nom, type)
  puts nom + ' ' + '.'*(LIGNE - (nom.length + type.length + 2)) + ' ' + type
end

# on affiche les noms et types des colonnes
for colonne in colonnes
  ligne colonne[:name], colonne[:type]
end

Ces scripts d’exemple peuvent être téléchargés à cette adresse. Inutile de dire que je me suis concocté de petits rapports maison, impossible à générer avec ChaChing lui même… Par contre, je pense qu’il vaut mieux se contenter de lire les tables et d’éviter d’y écrire, à moins de savoir exactement ce que vous faites.

Enjoy!