[FIX] l10n_fr_fec: no new line at the end of file
It seems that our beloved administration is not happy with the FEC file ending with an empty new line Hence, this commit makes the FEC file last line end without \r\n characters and there is no empty new line OPW 1943302
This commit is contained in:
@@ -109,6 +109,7 @@ class AccountFrFec(models.TransientModel):
|
||||
u'Idevise', # 17
|
||||
]
|
||||
|
||||
rows_to_write = [header]
|
||||
company = self.env.user.company_id
|
||||
if not company.vat:
|
||||
raise Warning(
|
||||
@@ -117,10 +118,6 @@ class AccountFrFec(models.TransientModel):
|
||||
raise Warning(
|
||||
_("FEC is for French companies only !"))
|
||||
|
||||
fecfile = io.BytesIO()
|
||||
w = pycompat.csv_writer(fecfile, delimiter='|')
|
||||
w.writerow(header)
|
||||
|
||||
# INITIAL BALANCE
|
||||
unaffected_earnings_xml_ref = self.env.ref('account.data_unaffected_earnings')
|
||||
unaffected_earnings_line = True # used to make sure that we add the unaffected earning initial balance only once
|
||||
@@ -196,7 +193,8 @@ class AccountFrFec(models.TransientModel):
|
||||
else:
|
||||
listrow[11] = '0,00'
|
||||
listrow[12] = str(-listrow_amount).replace('.', ',')
|
||||
w.writerow(listrow)
|
||||
rows_to_write.append(listrow)
|
||||
|
||||
#if the unaffected earnings account wasn't in the selection yet: add it manually
|
||||
if (not unaffected_earnings_line
|
||||
and unaffected_earnings_results
|
||||
@@ -207,7 +205,7 @@ class AccountFrFec(models.TransientModel):
|
||||
if unaffected_earnings_account:
|
||||
unaffected_earnings_results[4] = unaffected_earnings_account.code
|
||||
unaffected_earnings_results[5] = unaffected_earnings_account.name
|
||||
w.writerow(unaffected_earnings_results)
|
||||
rows_to_write.append(unaffected_earnings_results)
|
||||
|
||||
# INITIAL BALANCE - receivable/payable
|
||||
sql_query = '''
|
||||
@@ -265,7 +263,7 @@ class AccountFrFec(models.TransientModel):
|
||||
for row in self._cr.fetchall():
|
||||
listrow = list(row)
|
||||
account_id = listrow.pop()
|
||||
w.writerow(listrow)
|
||||
rows_to_write.append(listrow)
|
||||
|
||||
# LINES
|
||||
sql_query = '''
|
||||
@@ -330,20 +328,20 @@ class AccountFrFec(models.TransientModel):
|
||||
sql_query, (self.date_from, self.date_to, company.id))
|
||||
|
||||
for row in self._cr.fetchall():
|
||||
w.writerow(list(row))
|
||||
rows_to_write.append(list(row))
|
||||
|
||||
fecvalue = self._csv_write_rows(rows_to_write)
|
||||
siren = company.vat[4:13]
|
||||
end_date = self.date_to.replace('-', '')
|
||||
suffix = ''
|
||||
if self.export_type == "nonofficial":
|
||||
suffix = '-NONOFFICIAL'
|
||||
fecvalue = fecfile.getvalue()
|
||||
|
||||
self.write({
|
||||
'fec_data': base64.encodestring(fecvalue),
|
||||
# Filename = <siren>FECYYYYMMDD where YYYMMDD is the closing date
|
||||
'filename': '%sFEC%s%s.csv' % (siren, end_date, suffix),
|
||||
})
|
||||
fecfile.close()
|
||||
|
||||
action = {
|
||||
'name': 'FEC',
|
||||
@@ -352,3 +350,29 @@ class AccountFrFec(models.TransientModel):
|
||||
'target': 'self',
|
||||
}
|
||||
return action
|
||||
|
||||
def _csv_write_rows(self, rows, lineterminator=u'\r\n'):
|
||||
"""
|
||||
Write FEC rows into a file
|
||||
It seems that Bercy's bureaucracy is not too happy about the
|
||||
empty new line at the End Of File.
|
||||
|
||||
@param {list(list)} rows: the list of rows. Each row is a list of strings
|
||||
@param {unicode string} [optional] lineterminator: effective line terminator
|
||||
Has nothing to do with the csv writer parameter
|
||||
The last line written won't be terminated with it
|
||||
|
||||
@return the value of the file
|
||||
"""
|
||||
fecfile = io.BytesIO()
|
||||
writer = pycompat.csv_writer(fecfile, delimiter='|', lineterminator='')
|
||||
|
||||
rows_length = len(rows)
|
||||
for i, row in enumerate(rows):
|
||||
if not i == rows_length - 1:
|
||||
row.append(lineterminator)
|
||||
writer.writerow(row)
|
||||
|
||||
fecvalue = fecfile.getvalue()
|
||||
fecfile.close()
|
||||
return fecvalue
|
||||
|
||||
Reference in New Issue
Block a user