2525"""
2626from cfonb .writer .common import write , date_format , save , BR_LINE
2727
28+ LAST_LETTER_NUMBER = {'1' : 'A' , '2' : 'B' , '3' : 'C' , '4' : 'D' , '5' : 'E' , '6' : 'F' , '7' : 'G' , '8' : 'H' , '9' : 'I' ,
29+ '-1' : 'J' , '-2' : 'K' , '-3' : 'L' , '-4' : 'M' , '-5' : 'N' , '-6' : 'O' , '-7' : 'P' , '-8' : 'Q' , '-9' : 'R' ,
30+ '0' : '{' , '-0' : '}' }
31+
2832
2933class Statement (object ):
3034 def __init__ (self ):
@@ -69,7 +73,7 @@ def add(self, bank_code, operation_code, agency_code, currency,
6973 line += write (' ' , 7 ) # entry writing code
7074 line += write (' ' , 1 ) # exoneration code
7175 line += write (' ' , 1 ) # reserve zone
72- line += write (str (amount ). replace ( '.' , '' ) + 'A' , 14 , rpad = True , fill_char = '0' )
76+ line += write (number_format (amount ), 14 , rpad = True , fill_char = '0' )
7377 line += write (reference , 16 )
7478 self ._content .append (line )
7579 return self
@@ -90,7 +94,7 @@ def _render_header(self):
9094 line += write (' ' , 2 ) # reserved zone
9195 line += write (date_format (self ._header ['date' ]), 6 )
9296 line += write (' ' , 50 ) # reserved zone
93- line += write (str (self ._header ['amount' ]). replace ( '.' , '' ) + 'A' , 14 , rpad = True , fill_char = '0' )
97+ line += write (number_format (self ._header ['amount' ]), 14 , rpad = True , fill_char = '0' )
9498 line += write (' ' , 16 ) # reserved zone
9599 return line + BR_LINE
96100 return ''
@@ -108,7 +112,19 @@ def _render_footer(self):
108112 line += write (' ' , 2 ) # reserved zone
109113 line += write (date_format (self ._footer ['date' ]), 6 )
110114 line += write (' ' , 50 ) # reserved zone
111- line += write (str (self ._footer ['amount' ]). replace ( '.' , '' ) + 'A' , 14 , rpad = True , fill_char = '0' )
115+ line += write (number_format (self ._footer ['amount' ]), 14 , rpad = True , fill_char = '0' )
112116 line += write (' ' , 16 ) # reserved zone
113117 return line + BR_LINE
114118 return ''
119+
120+
121+ def number_format (number ):
122+ if not number :
123+ return ''
124+
125+ _number = str (number ).replace ('.' , '' )
126+ _number = _number .replace ('-' , '' )
127+ last_number = _number [- 1 ]
128+ if number < 0 :
129+ last_number = '-' + last_number
130+ return _number [0 :len (_number ) - 1 ] + LAST_LETTER_NUMBER .get (last_number )
0 commit comments