[comptas] permet plusieurs sous-comptas

authorNicolas Chauvat <nicolas.chauvat@logilab.fr>
changesetdcd2c800fa19
branchdefault
phasedraft
hiddenno
parent revision#770f22a7a535 rapports configurables (closes #257021)
child revision#247f9e227ad3 [comptas] extrait LivreImmobilisations de Comptabilite
files modified by this revision
lib/comptas.py
lib/render.py
main.py
# HG changeset patch
# User Nicolas Chauvat <nicolas.chauvat@logilab.fr>
# Date 1414010439 -7200
# Wed Oct 22 22:40:39 2014 +0200
# Node ID dcd2c800fa19cd110bd3ed8475deb2acef993e97
# Parent 770f22a7a535d109a07465e6f7994336a682168e
[comptas] permet plusieurs sous-comptas

diff --git a/lib/comptas.py b/lib/comptas.py
@@ -76,46 +76,41 @@
1  class Comptabilite(AbstractCompta) :
2      """
3      Regroupe les différents livres
4      """
5 
6 -    def __init__(self, debut, fin, ecritures, immobilisations, rapports, sous_compta=None) :
7 +    def __init__(self, debut, fin, ecritures, immobilisations, rapports, sous_comptas=None) :
8          """
9          --pre:
10          type(debut) is DateTimeType
11          type(fin) is DateTimeType
12          """
13          self.debut = debut
14          self.fin = fin
15          self.ecritures = ecritures
16          self.rapports = rapports
17 
18 -        self.paye = sous_compta
19 -        if self.paye :
20 -            report_paye = self.paye.get_reports()
21 -        else:
22 -            report_paye = []
23 +        self.sous_comptas = sous_comptas or []
24 +        if self.sous_comptas:
25 +            for sous_compta in self.sous_comptas:
26 +                ecritures += sous_compta.get_reports()
27 
28          self.livrimmo = LivreImmobilisations(immobilisations)
29          amort = self.livrimmo.get_amortissements(debut, fin)
30 -        self.journal = Journal(ecritures+amort+report_paye)
31 +        self.journal = Journal(ecritures+amort)
32          self.glivre = GrandLivre(self.journal)
33          self.balance = Balance(self.glivre)
34          self.resultat = CompteResultat(self.glivre, rapports)
35          self.bilan = Bilan(self.resultat, rapports)
36 
37 -        if self.paye :
38 -            toutes_ecritures = ecritures + self.paye.journal.ecritures
39 -        else :
40 -            toutes_ecritures = ecritures
41 -        self.banque_journal = Journal( self.get_banque(toutes_ecritures) )
42 +        self.banque_journal = Journal( self.get_banque(ecritures) )
43          self.banque_glivre = GrandLivre(self.banque_journal)
44 
45          self._cache = {}
46 
47      def get_cibles(self):
48 -        if self.paye:
49 +        if self.sous_comptas:
50              return self.CIBLES
51          else:
52              cibles = self.CIBLES[:]
53              del cibles[6:9]
54              return cibles
diff --git a/lib/render.py b/lib/render.py
@@ -60,14 +60,15 @@
55          return
56      visitors.write_compte_resultat(file(CR+'xml','w'), compta.resultat, compta.debut, fin, compta.rapports)
57      visitors.write_bilan(file(BI+'xml','w'), compta.bilan, compta.debut, fin, compta.rapports)
58      visitors.write_livre_immo(file(IM+'xml','w'), compta.livrimmo, debut, fin)
59      visitors.write_bilan_immo(file(IB+'xml','w'), compta.resultat, debut, fin, compta.rapports)
60 -    if compta.paye:
61 -        visitors.write_journal(file(JP+'xml','w'), compta.paye.journal, debut, fin)
62 -        visitors.write_grand_livre(file(GP+'xml','w'), compta.paye.glivre, debut, fin)
63 -        visitors.write_balance(file(BP+'xml','w'), compta.paye.balance, debut, fin)
64 +    if compta.sous_comptas:
65 +        paye = compta.sous_comptas[0]
66 +        visitors.write_journal(file(JP+'xml','w'), paye.journal, debut, fin)
67 +        visitors.write_grand_livre(file(GP+'xml','w'), paye.glivre, debut, fin)
68 +        visitors.write_balance(file(BP+'xml','w'), paye.balance, debut, fin)
69      visitors.write_journal(file(BJ+'xml','w'), compta.banque_journal, debut, fin)
70      visitors.write_grand_livre(file(BG+'xml','w'), compta.banque_glivre, debut, fin)
71      for num, cpt in compta.glivre.get_comptes('5'):
72          fname = CT.replace('.compte.', '.%s.compte.'%num)
73          visitors.write_historique_comptes(file(fname+'xml','w'), compta.glivre, debut, fin, cpt.num)
diff --git a/main.py b/main.py
@@ -77,15 +77,14 @@
74      immo = xmlreader.get_immobilisations(file(config['immobilisations']))
75      log(" OK (%s ecritures lues)\n" % (len(ecritures)+len(immo)))
76      log("   calcul...")
77      rapports = dict()
78      execfile(config.data['rapports'], rapports)
79 +    sous_comptas = []
80      if ecritures_paye:
81 -        compta_paye = SousComptabilite(debut, fin, ecritures_paye, 'Paye')
82 -        compta = Comptabilite(debut, fin, ecritures, immo, rapports, compta_paye)
83 -    else:
84 -        compta = Comptabilite(debut, fin, ecritures, immo, rapports)
85 +        sous_comptas.append(SousComptabilite(debut, fin, ecritures_paye, 'Paye'))
86 +    compta = Comptabilite(debut, fin, ecritures, immo, rapports, sous_comptas)
87      log(" OK\n")
88 
89      # vérifie cohérence
90      errors = compta.check()
91      if errors:
@@ -119,11 +118,11 @@
92                                                  ecritures_paye+ecritures_paye_prev)
93              compta_prev = Comptabilite(debut, prev,
94                                         ecritures+ecritures_prev,
95                                         immo+immo_prev,
96                                         rapports,
97 -                                       compta_paye_prev)
98 +                                       [compta_paye_prev])
99          else:
100              compta_prev = Comptabilite(debut, prev,
101                                         ecritures+ecritures_prev,
102                                         immo+immo_prev,
103                                         rapports)