I'm sorry - I dropped the ball on this as the credit card in question is 
moving to Mastercard in January, and I thought I would wait until then to 
finalize. I don't think I will do a fresh attempt using the reds importers 
csvreader and then file any required issues. What I ended up doing, which 
contradicts the "5 minute ledger update" framework but worked is writing an 
importer that includes custom csv parsing that only applies to the Amex 
account. I wasn't able to get far with smart importer on this one either.

For the sake of making sure bugs are captured though, I will document the 
"stock" handling of this situation using the reds importers package.

Thanks again for redstreet and martin and other major contributors to the 
program and this community!

On Saturday, November 13, 2021 at 2:56:20 PM UTC-5 [email protected] wrote:

> Two things:
> 1. You shouldn't have to define file_account(). How have you configured 
> your importer? (i.e., the config file that you pass to bean-file)?
>
> 2. 'file_read_done' issue might be a bug. Can you please file a bug at 
> https://github.com/redstreet/beancount_reds_importers ?
> With the versions of beancount, beangulp (if you're using that), and 
> reds-importers you're using ('pip freeze' should tell you).
>
> Fix might be to add 'self.initialize_reader(file)' at the beginning of this 
> method 
> <https://github.com/redstreet/beancount_reds_importers/blob/51597c8ca0bc7dba913267a52ea241e538bc1097/beancount_reds_importers/libreader/csvreader.py#L112>,
>  
> but I want to figure out what caused this (perhaps an upstream change).
>
> On Friday, November 12, 2021 at 8:12:43 AM UTC-8 [email protected] wrote:
>
>> Thank you for your help, RedS
>>
>> As a first step. I tried to modify copy your Disvcover --as well as the 
>> exisiting Amex -- importer, switing the ofxreader with csvreader. I also 
>> kept all of my mapping declarations going from csv "fields" to beancount 
>> narrative fields. 
>> I wasn't able to get that to work quite right. I did finally bring over 
>>     def file_account(self, _):
>>         return self.config['main_account']
>> ...and it finally worked. However, I then get an error from bean-file: 
>> unexpected error: 'AmexCCImporter' object has no attribute 
>> 'file_read_done'
>>
>> *This error is captured and the csv file is moved to the right place.* The 
>> error might have been a bigger problem if I hadn't already "ingested" the 
>> file into my beancount ledger.
>>
>> But just to dig in a little further...
>> file_read_done is defined in ...reds_importers.libreader.csvreader. So, I 
>> don't know why the stack is trying to retrieve this value from 
>> 'AmexCCImporter'.
>>
>>
>> I am working on the ofxget implementation next - will post results when I 
>> have them. If successful, it will sort of nullify this other effort, but I 
>> did learn something! 
>>
>> P.S. I don't know what's going on with the Times/Serif font in the middle 
>> of this post. I couldn't change that back to the normal Sans Serif text.
>> On Thursday, November 11, 2021 at 2:03:42 AM UTC-5 [email protected] 
>> wrote:
>>
>>> Hello Tim,
>>> That method is in beancount_reds_importers/libreader/reader.py, see here 
>>> <https://github.com/redstreet/beancount_reds_importers/blob/51597c8ca0bc7dba913267a52ea241e538bc1097/beancount_reds_importers/libreader/reader.py#L23>.
>>>  
>>> If you imported the class correctly, that error should not occur:
>>>
>>> class AmexCCImporter(banking.Importer, csvreader.Importer):
>>>    def custom_init(self):
>>>      # blah blah: Look at discover/__init__.py and replace ofxreader 
>>> with csvreader. 
>>>
>>> Let me know if that worked.
>>> But the more interesting answer to your question is: have you setup direct 
>>> downloads 
>>> <https://reds-rants.netlify.app/personal-finance/direct-downloads/> (vs 
>>> logging in via a browser)? If so, you'll get ofx from Amex, all from the 
>>> command line that you can stick into a script. I checked my Amex two 
>>> minutes ago, works fine and dandy:
>>>
>>> ofxget stmt --nokeyring -u yourusername --password $(pass 
>>> beancount/amex_card) amex -c 'CODECODE|last5' > ~/Downloads/amex_card.ofx
>>>
>>> There's a one-time step to get your unique CODECODE, and I forget how 
>>> it's done, but it's a pretty simple, single step IIRC, using ofxget. Post 
>>> here if you're unable to get your code, and I'll try to dig up what I did.
>>>
>>> RedS.
>>>
>>> On Wednesday, November 10, 2021 at 11:57:23 AM UTC-8 [email protected] 
>>> wrote:
>>>
>>>> Additional information: Here is my __init__
>>>>
>>>> class AmexCCImporter(importer.ImporterProtocol):
>>>>     def __init__(self, account, lastfour):
>>>>         self.account = account
>>>>         self.lastfour = lastfour
>>>> The account does come through in the transaction narrative that is 
>>>> generated. However, it's not picked up by the file.py routine.
>>>> On Wednesday, November 10, 2021 at 2:44:46 PM UTC-5 [email protected] 
>>>> wrote:
>>>>
>>>>> Hi,
>>>>> I've previously relied very heavily on *red's importers* for my 
>>>>> import and filing needs. They worked great up to the point when my Amex 
>>>>> switched over from ofx to csv's -- the only options for 
>>>>> statement/transaction downloads are excel, csv, and pdf. 
>>>>>
>>>>> I think I have a working importer for the new Amex csv's, but when I 
>>>>> attempt to archive via bean-file, I receive the error:
>>>>> ERROR:root:No account provided by importers: <<object.class of my 
>>>>> importer>>
>>>>>
>>>>> I think I'm missing a "return account" statement or similar but can't 
>>>>> quite figure it out from the docs or red's other importers. I'm sure 
>>>>> it's there but can't identify it.
>>>>>
>>>>> Thanks for reading (and I hope answering),
>>>>> Tim
>>>>>
>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"Beancount" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beancount/35806811-2384-4772-a8c0-fccf596384fcn%40googlegroups.com.

Reply via email to