mirror of
https://github.com/OCA/bank-statement-import.git
synced 2025-01-20 12:37:43 +02:00
adapt code to the new paypal format
error when several line defined in currency != company currency handel utf-8 file handel csv with quotechar " skip BOM character in utf-8
This commit is contained in:
committed by
Carlos Roca
parent
c980f1d2ad
commit
cd2c250497
@@ -37,7 +37,7 @@ class AccountBankStatementImport(models.TransientModel):
|
|||||||
@api.model
|
@api.model
|
||||||
def _prepare_paypal_encoding(self):
|
def _prepare_paypal_encoding(self):
|
||||||
'''This method is designed to be inherited'''
|
'''This method is designed to be inherited'''
|
||||||
return 'latin1'
|
return 'utf-8'
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
def _prepare_paypal_date_format(self):
|
def _prepare_paypal_date_format(self):
|
||||||
@@ -47,7 +47,8 @@ class AccountBankStatementImport(models.TransientModel):
|
|||||||
@api.model
|
@api.model
|
||||||
def _valid_paypal_line(self, line):
|
def _valid_paypal_line(self, line):
|
||||||
'''This method is designed to be inherited'''
|
'''This method is designed to be inherited'''
|
||||||
if line[5].startswith('Termin') or line[5].startswith('Rembours'):
|
col_name = line[5].replace('"','')
|
||||||
|
if col_name.startswith('Termin') or col_name.startswith('Rembours'):
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
@@ -63,11 +64,16 @@ class AccountBankStatementImport(models.TransientModel):
|
|||||||
@api.model
|
@api.model
|
||||||
def _check_paypal(self, data_file):
|
def _check_paypal(self, data_file):
|
||||||
'''This method is designed to be inherited'''
|
'''This method is designed to be inherited'''
|
||||||
return data_file.strip().startswith('Date,')
|
paypal = data_file.strip().startswith('Date,')
|
||||||
|
if not paypal:
|
||||||
|
paypal = data_file.strip().startswith('"Date",')
|
||||||
|
|
||||||
|
return paypal
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
def _parse_file(self, data_file):
|
def _parse_file(self, data_file):
|
||||||
""" Import a file in Paypal CSV format"""
|
""" Import a file in Paypal CSV format"""
|
||||||
|
data_file = data_file.replace("\xef\xbb\xbf", "")
|
||||||
paypal = self._check_paypal(data_file)
|
paypal = self._check_paypal(data_file)
|
||||||
if not paypal:
|
if not paypal:
|
||||||
return super(AccountBankStatementImport, self)._parse_file(
|
return super(AccountBankStatementImport, self)._parse_file(
|
||||||
@@ -105,8 +111,8 @@ class AccountBankStatementImport(models.TransientModel):
|
|||||||
'owner_name': line[3],
|
'owner_name': line[3],
|
||||||
'amount': line[7],
|
'amount': line[7],
|
||||||
'commission': line[8],
|
'commission': line[8],
|
||||||
'balance': line[34],
|
'balance': line[27],
|
||||||
'transac_ref': line[30],
|
'transac_ref': line[23],
|
||||||
'ref': line[12],
|
'ref': line[12],
|
||||||
'line_nr': i,
|
'line_nr': i,
|
||||||
}
|
}
|
||||||
@@ -136,7 +142,7 @@ class AccountBankStatementImport(models.TransientModel):
|
|||||||
other_currency_line = {}
|
other_currency_line = {}
|
||||||
for wline in raw_lines:
|
for wline in raw_lines:
|
||||||
if company_currency_name != wline['currency']:
|
if company_currency_name != wline['currency']:
|
||||||
if not wline['transac_ref'] and not other_currency_line:
|
if wline['transac_ref'] and not other_currency_line:
|
||||||
currencies = self.env['res.currency'].search(
|
currencies = self.env['res.currency'].search(
|
||||||
[('name', '=', wline['currency'])])
|
[('name', '=', wline['currency'])])
|
||||||
if not currencies:
|
if not currencies:
|
||||||
@@ -149,8 +155,10 @@ class AccountBankStatementImport(models.TransientModel):
|
|||||||
'currency': wline['currency'],
|
'currency': wline['currency'],
|
||||||
'name': wline['name'],
|
'name': wline['name'],
|
||||||
'owner_name': wline['owner_name'],
|
'owner_name': wline['owner_name'],
|
||||||
|
'transac_ref': wline['transac_ref'],
|
||||||
}
|
}
|
||||||
if wline['transac_ref'] and other_currency_line:
|
|
||||||
|
if other_currency_line and not wline['transac_ref']:
|
||||||
assert (
|
assert (
|
||||||
wline['currency'] == other_currency_line['currency']),\
|
wline['currency'] == other_currency_line['currency']),\
|
||||||
'WRONG currency'
|
'WRONG currency'
|
||||||
@@ -158,11 +166,16 @@ class AccountBankStatementImport(models.TransientModel):
|
|||||||
wline['amount'] ==
|
wline['amount'] ==
|
||||||
other_currency_line['amount_currency'] * -1),\
|
other_currency_line['amount_currency'] * -1),\
|
||||||
'WRONG amount'
|
'WRONG amount'
|
||||||
other_currency_line['transac_ref'] = wline['transac_ref']
|
if (
|
||||||
|
other_currency_line and
|
||||||
|
wline['ref'] ==
|
||||||
|
other_currency_line['transac_ref']):
|
||||||
|
# reset other_currency_line
|
||||||
|
other_currency_line = {}
|
||||||
else:
|
else:
|
||||||
if (
|
if (
|
||||||
other_currency_line
|
other_currency_line and
|
||||||
and wline['transac_ref'] ==
|
wline['transac_ref'] ==
|
||||||
other_currency_line['transac_ref']):
|
other_currency_line['transac_ref']):
|
||||||
wline.update(other_currency_line)
|
wline.update(other_currency_line)
|
||||||
# reset other_currency_line
|
# reset other_currency_line
|
||||||
|
|||||||
Reference in New Issue
Block a user