Relevés de compte bancaire

Les relevés de compte bancaire est un document produit par une banque retraçant les mouvements de fonds sur un compte bancaire pour une période donnée. Ils permettent de vérifier sa comptabilité et fournissent en “miroir comptable” les écritures du compte de banque.

Modèle

Migration

Pour la migration, on considère tous les relevés comme entièrement pointé, et les bank_statement_items doivent être générés et liés durant la migration.

Mockups

Rapprochement bancaire

bloc à faire

Consultation (#show)

bloc à faire

Import OFX

bloc à faire

Rapprochement bancaire - Workflow

  1. Import OFX
  2. Attribuer chaque champ <NAME> du fichier OFX à un tiers (même principe que “Distribuer les produits non affectés”)
  3. -Back- Rapprochement automatique (voir algorithme ci-dessous)
  4. Vue rapprochement bancaire actuelle : rapprocher manuellement BankStatementItem ET JournalEntryItem
  • Partie supérieure de la vue : En-dessous de chaque BankStatementItem non rapproché, pouvoir sélectionner un JournalEntryItem de montant identique
  • Partie inférieure de la vue : Visualisation (et modification possible) des rapprochements faits automatiquement

Algorithme semi-automatisé de rapprochement bancaire

Lors de l'enregistrement d'un relevé de compte, un rapprochement peut être fait plus ou moins en automatique avec les écritures existantes en comptabilité. Les lignes d'écriture (JournalEntryItem) concernées sont celles utilisant le même compte comptable (Account) que définit dans le compte bancaire (Cash) pour lequel on a enregistré le relevé de compte.

La première version de cet algorithme doit être simple. Pour une ligne de relevé de compte (BankStatementItem), J est la date du mouvement, D la date de début du relevé de compte et F la date de fin :

candidats = lignes d'écriture de montant identique ayant eu lieu le même jour J
SI candidats.compte == 1
  écriture = candidats.premier
SINON 
  candidats = lignes d'écriture de montant identique comprise entre J-1 et J+1
  SI candidats.compte == 1
    écriture = candidats.premier
  SINON
    candidats = lignes d'écriture de montant identique comprise entre D et F
    SI candidats.compte == 1
      écriture = candidats.premier
    FINSI
  FINSI
FINSI

Proposition d'algorithme:

candidats = Montants identiques ET BankStatementItem.<MEMO> contient JournalEntryItem.Number
SI candidats.compte == 1
   écriture = candidats.premier

 SINON
   candidats = Montants identiques ET BankStatementItem.<CHECKNUM> contient JournalEntryItem.CheckNumber
   SI candidats.compte == 1
      écriture = candidats.premier
    
  SINON
    candidats = Montants identiques ET BankStatementItem.<NAME> contient JournalEntryItem.CheckNumber
    SI candidats.compte == 1
       écriture = candidats.premier
       
    SINON
      candidats = Montants identiques ET même tiers  (voir section 'Workflow')
      SI candidats.compte == 1
         écriture = candidats.premier
         
       FINSI
      FINSI
    FINSI
  FINSI
FINSI