Home page de
Michel Casabianca

Actualité
oBlog
oNo Apple
oDebian sur Zotac Nano CI320
oDebian sur Acer C720P
oUn an avec un Raspberry Pi
oLes interfaces du GO
oParseurs YAML pour Go
oIntroduction à YAML
oNotes Formation Perl
oUtiliser le module Ruby MySQL
oUtiliser le module Ruby DBI
oScripts Python avec DB-API

Outils
oBabel
oBee
oTâches Ant
oInstalleur Java
oVisual SQL

MacOSX
oViewCVS sous MacOSX
oEmacs sous Panther

Conférences
oOutils J2EE Open Source
oDév. XML en Java sous Linux
oOutils de dév. Java sous Linux

Articles XML
oIntroduction à XML
oIntroduction à XSLT
oDéveloppement XML en Java
oGénérer des sites web avec Ant
oDTD Ant
oProject X

Articles Java
oTips CodeGuide
oKFM et Jars
oMails en Java
oJava et préprocesseur
oJava et images
oThreads
oÉvénements
oAstuces

Jeux
oAwele
oAtomX
oCore Warrior
oSolitaire
oSpiceWars
oTangram
oTaquin

Simulations
oJeu de la vie
oFourmi de Langton
oTri du couvain
oPiste de chasse

Graphisme
oFractales
oImages 3D
oPowered by ...
oEcce Duke
oTIE

À propos
oDe l'auteur
oDe ce site


Powered by

Powered by Debian
Blog SweetohmIndex Flux RSS

2008-01-06 : ChaChing

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!


50 /117