|
@ -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], |
|
|
|
|
|
'transac_ref': line[30], |
|
|
|
|
|
|
|
|
'balance': line[27], |
|
|
|
|
|
'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 |
|
|
|
|
|
and wline['transac_ref'] == |
|
|
|
|
|
|
|
|
other_currency_line and |
|
|
|
|
|
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 |
|
|