Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OfxParserException : Invalid Transaction Amount #66

Closed
roussel2nis opened this issue Jan 31, 2014 · 2 comments
Closed

OfxParserException : Invalid Transaction Amount #66

roussel2nis opened this issue Jan 31, 2014 · 2 comments

Comments

@roussel2nis
Copy link

When you want to parse an OFX file from a Belgian bank (e.g. FORTIS),
you have an 'Invalid Transaction Amount' exception from Ofx parser.

The transaction amounts are represented with a comma as decimal point.

Client Traceback (most recent call last):
File "/media/data/openerp/server/openerp/addons/web/http.py", line 204, in dispatch
response["result"] = method(self, *_self.params)
File "/media/data/openerp/server/openerp/addons/web/controllers/main.py", line 1129, in call_button
action = self._call_kw(req, model, method, args, {})
File "/media/data/openerp/server/openerp/addons/web/controllers/main.py", line 1117, in _call_kw
return getattr(req.session.model(model), method)(_args, **kwargs)
File "/media/data/openerp/server/openerp/addons/web/session.py", line 42, in proxy
result = self.proxy.execute_kw(self.session._db, self.session._uid, self.session._password, self.model, method, args, kw)
File "/media/data/openerp/server/openerp/addons/web/session.py", line 30, in proxy_method
result = self.session.send(self.service_name, method, *args)
File "/media/data/openerp/server/openerp/addons/web/session.py", line 103, in send
raise xmlrpclib.Fault(openerp.tools.ustr(e), formatted_info)

Server Traceback (most recent call last):
File "/media/data/openerp/server/openerp/addons/web/session.py", line 89, in send
return openerp.netsvc.dispatch_rpc(service_name, method, args)
File "/media/data/openerp/server/openerp/netsvc.py", line 292, in dispatch_rpc
result = ExportService.getService(service_name).dispatch(method, params)
File "/media/data/openerp/server/openerp/service/web_services.py", line 626, in dispatch
res = fn(db, uid, _params)
File "/media/data/openerp/server/openerp/osv/osv.py", line 190, in execute_kw
return self.execute(db, uid, obj, method, *args, *_kw or {})
File "/media/data/openerp/server/openerp/osv/osv.py", line 132, in wrapper
return f(self, dbname, _args, *_kwargs)
File "/media/data/openerp/server/openerp/osv/osv.py", line 199, in execute
res = self.execute_cr(cr, uid, obj, method, _args, *_kw)
File "/media/data/openerp/server/openerp/osv/osv.py", line 187, in execute_cr
return getattr(object, method)(cr, uid, _args, *_kw)
File "/media/data/openerp/addons/account_statement_base_import/wizard/import_statement.py", line 108, in import_statement
context=context
File "/media/data/openerp/addons/account_statement_base_import/statement.py", line 150, in statement_import
result_row_list = parser.parse(file_stream)
File "/media/data/openerp/addons/account_statement_base_import/parser/parser.py", line 148, in parse
self._parse(args, *kwargs)
File "/media/data/openerp/addons/account_statement_ofx_import/parser/ofx_parser.py", line 69, in parse
ofx = ofxparse.OfxParser.parse(file(ofx_file.name))
File "/usr/local/lib/python2.7/dist-packages/ofxparse-0.14-py2.7.egg/ofxparse/ofxparse.py", line 345, in parse
ofx_obj.accounts += cls
.parseStmtrs(stmtrs_ofx, AccountType.Bank)
File "/usr/local/lib/python2.7/dist-packages/ofxparse-0.14-py2.7.egg/ofxparse/ofxparse.py", line 646, in parseStmtrs
account.statement = cls
.parseStatement(stmtrs_ofx)
File "/usr/local/lib/python2.7/dist-packages/ofxparse-0.14-py2.7.egg/ofxparse/ofxparse.py", line 736, in parseStatement
cls
.parseTransaction(transaction_ofx))
File "/usr/local/lib/python2.7/dist-packages/ofxparse-0.14-py2.7.egg/ofxparse/ofxparse.py", line 792, in parseTransaction
six.u("Invalid Transaction Amount: '%s'") % amt_tag.contents[0])
OfxParserException: Invalid Transaction Amount: '-72,00'

@jonblack
Copy link

jonblack commented Oct 5, 2014

The python locale library can parse this for you. You'd have to find some way of deciding which locale to use, however. https://docs.python.org/2/library/locale.html#locale.atof

locale.atof(string)
Converts a string to a floating point number, following the LC_NUMERIC settings

Another option is to just replace the comma with a full-stop, but that's probably not the only locale specific difference.

@jseutter
Copy link
Owner

jseutter commented Jul 7, 2016

Thanks to some contributors ofxparse has better handling of commas as decimals, but I can't speak to how bug-free it is. Hopefully it works for your use case!

@jseutter jseutter closed this as completed Jul 7, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants