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!