From b765565bcd1185998f3c2c7e8e4de715e27ad83f Mon Sep 17 00:00:00 2001 From: Matthieu Dietrich Date: Fri, 29 Apr 2016 13:56:09 +0200 Subject: [PATCH] Add fields "account" and "partner" as non-mandatory --- .../parser/file_parser.py | 4 ++-- .../parser/generic_file_parser.py | 23 +++++++++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/account_statement_base_import/parser/file_parser.py b/account_statement_base_import/parser/file_parser.py index eb5bd2f4..8c620019 100644 --- a/account_statement_base_import/parser/file_parser.py +++ b/account_statement_base_import/parser/file_parser.py @@ -39,7 +39,7 @@ class FileParser(AccountMoveImportParser): format. """ - def __init__(self, parse_name, ftype='csv', extra_fields=None, header=None, + def __init__(self, journal, ftype='csv', extra_fields=None, header=None, dialect=None, move_ref=None, **kwargs): """ :param char: parse_name: The name of the parser @@ -50,7 +50,7 @@ class FileParser(AccountMoveImportParser): :param list: header : specify header fields if the csv file has no header """ - super(FileParser, self).__init__(parse_name, **kwargs) + super(FileParser, self).__init__(journal, **kwargs) if ftype in ('csv', 'xls', 'xlsx'): self.ftype = ftype[0:3] else: diff --git a/account_statement_base_import/parser/generic_file_parser.py b/account_statement_base_import/parser/generic_file_parser.py index 15f831f7..68bd3554 100644 --- a/account_statement_base_import/parser/generic_file_parser.py +++ b/account_statement_base_import/parser/generic_file_parser.py @@ -33,14 +33,16 @@ class GenericFileParser(FileParser): file. """ - def __init__(self, parse_name, ftype='csv', **kwargs): + def __init__(self, journal, ftype='csv', **kwargs): conversion_dict = { 'label': ustr, 'date': datetime.datetime, 'amount': float_or_zero, } + # set self.env for later ORM searches + self.env = journal.env super(GenericFileParser, self).__init__( - parse_name, ftype=ftype, + journal, ftype=ftype, extra_fields=conversion_dict, **kwargs) @@ -68,10 +70,27 @@ class GenericFileParser(FileParser): 'debit':value } """ + account_obj = self.env['account.account'] + partner_obj = self.env['res.partner'] + account_id = False + partner_id = False + + if line.get('account'): + accounts = account_obj.search([('code', '=', line['account'])]) + if len(accounts) == 1: + account_id = accounts[0].id + + if line.get('partner'): + partners = partner_obj.search([('name', '=', line['partner'])]) + if len(partners) == 1: + partner_id = partners[0].id + amount = line.get('amount', 0.0) return { 'name': line.get('label', '/'), 'date_maturity': line.get('date', datetime.datetime.now().date()), 'credit': amount > 0.0 and amount or 0.0, 'debit': amount < 0.0 and amount or 0.0, + 'account_id': account_id, + 'partner_id': partner_id, }