2121 - l'entête (01)
2222 - ligne détail (04)
2323 - ligne total (facultative)
24-
25- Voir <http://segs.free.fr/Fichiers/CFONB%20-%20Structure%20des%20fichiers%20ETEBAC3.pdf>
26- """
24+
25+ """
26+ from cfonb .writer .common import write , date_format , save
27+
28+
29+ class Statement (object ):
30+ _header = {}
31+ _content = []
32+ _footer = {}
33+
34+ def header (self , bank_code , agency_code , currency , account_number , date , amount ):
35+ self ._header ['bank_code' ] = bank_code
36+ self ._header ['agency_code' ] = agency_code
37+ self ._header ['currency' ] = currency
38+ self ._header ['account_number' ] = account_number
39+ self ._header ['date' ] = date
40+ self ._header ['amount' ] = amount
41+ return self
42+
43+ def footer (self , bank_code , agency_code , currency , account_number , date , amount ):
44+ self ._footer ['bank_code' ] = bank_code
45+ self ._footer ['agency_code' ] = agency_code
46+ self ._footer ['currency' ] = currency
47+ self ._footer ['account_number' ] = account_number
48+ self ._footer ['date' ] = date
49+ self ._footer ['amount' ] = amount
50+ return self
51+
52+ def add (self , bank_code , operation_code , agency_code , currency ,
53+ account_number , date , label , amount , reference ):
54+ line = write ('04' , 2 )
55+ line += write (bank_code , 5 )
56+ line += write (operation_code , 4 )
57+ line += write (agency_code , 5 )
58+ line += write (currency , 3 )
59+ line += write ('2' , 1 ) # number of decimal
60+ line += write (' ' , 1 ) # SIT code
61+ line += write (account_number , 11 )
62+ line += write (' ' , 2 ) # interbank code
63+ line += write (date_format (date ), 6 )
64+ line += write (' ' , 2 ) # rejected code
65+ line += write (date_format (date ), 6 )
66+ line += write (label , 31 )
67+ line += write (' ' , 2 ) # reserve zone
68+ line += write (' ' , 7 ) # entry writing code
69+ line += write (' ' , 1 ) # exoneration code
70+ line += write (' ' , 1 ) # reserve zone
71+ line += write (amount , 14 )
72+ line += write (reference , 16 )
73+ self ._content .append (line )
74+ return self
75+
76+ def render (self , filename = None ):
77+ return save (self ._header (), '\r \n ' .join (self ._content ), self ._footer (), filename )
78+
79+ def _header (self ):
80+ if self ._header :
81+ line = write ('01' , 2 )
82+ line += write (self ._header ['bank_code' ], 5 )
83+ line += write (' ' , 4 ) # reserved zone
84+ line += write (self ._header ['agency_code' , 5 ])
85+ line += write (self ._header ['currency' , 3 ])
86+ line += write ('2' , 1 ) # number of decimal
87+ line += write (' ' , 1 ) # reserved zone
88+ line += write (self ._header ['account_number' ], 11 )
89+ line += write (' ' , 2 ) # reserved zone
90+ line += write (date_format (self ._header ['date' ]), 6 )
91+ line += write (' ' , 50 ) # reserved zone
92+ line += write (self ._header ['amount' ], 14 )
93+ line += write (' ' , 16 ) # reserved zone
94+ return line
95+ return ''
96+
97+ def _footer (self ):
98+ if self ._footer :
99+ line = write ('07' , 2 )
100+ line += write (self ._footer ['bank_code' ], 5 )
101+ line += write (' ' , 4 ) # reserved zone
102+ line += write (self ._footer ['agency_code' , 5 ])
103+ line += write (self ._footer ['currency' , 3 ])
104+ line += write ('2' , 1 ) # number of decimal
105+ line += write (' ' , 1 ) # reserved zone
106+ line += write (self ._footer ['account_number' ], 11 )
107+ line += write (' ' , 2 ) # reserved zone
108+ line += write (date_format (self ._footer ['date' ]), 6 )
109+ line += write (' ' , 50 ) # reserved zone
110+ line += write (self ._footer ['amount' ], 14 )
111+ line += write (' ' , 16 ) # reserved zone
112+ return line
0 commit comments