Hi Jeremy,

thank you for your suggestions.
I have actually written my own plugin to do what I described in this thread
and am very happy with how it works.
https://bitbucket.org/fxt/beansoup/src/349e29f27ab613ee2e63d1916c3370e47a9f799c/beansoup/plugins/deposit_in_transit.py?at=default&fileviewer=file-view-default

I followed Martin's suggestion to access sys.argv from within my plugin to
detect whether it is running within an importer.


On Tue, May 3, 2016 at 12:17 AM, Jeremy Maitin-Shepard <[email protected]>
wrote:

> It seems you could put everything, either directly or indirectly, in some
> journal-without-dit.beancount file, and then have another file
> journal-with-dit.beancount that contains your plugin directive and includes
> "journal-without-dit.beancount".
>
> You might also be interested in https://github.com/jbms/beancount-import
> since it can handle merging matching entries sourced from different
> accounts, even with different dates.  The dates are currently recorded as a
> date metadata field on each posting, to allow for the postings to have
> different dates, although I don't do anything with them yet; once there
> would is a "standard" way to deal with or represent these dates it would be
> easy to migrate, though.
>
> On Mon, May 2, 2016 at 7:58 AM, Filippo Tampieri <
> [email protected]> wrote:
>
>> My use case is due to the interaction of the deposit_in_transit plugin
>> and the transaction completer I use during import.
>>
>> The transaction completer relies on the past entries to figure out which
>> account to assign to the second posting of imported entries.
>> The deposit_in_transit plugin helps me deal with transactions such as
>> credit card payments that appear in both the bank statement and the credit
>> card statement.
>> For example, when I import my bank account statement, the transaction
>> completer would complete an entry like this:
>>
>> 2016-03-23 * "Payment to AMEX"
>>   Assets:MyBankAccount                                    -1261.98 CAD
>>   Assets:DIT:Amex
>>
>> When I import my credit card statement, the transaction completer would
>> complete the corresponding entry like this:
>>
>> 2016-03-24 * "PAYMENT RECEIVED - THANK YOU"
>>   Liabilities:Amex                                  1261.98 CAD
>>   Assets:DIT:MyBankAccount
>>
>> As you see, the first entry uses Assets:DIT:Amex to indicate that it is
>> depositing funds in the Amex account rather than using the Assets:Amex
>> account directly.
>> Similarly, the second entry receives the funds from
>> Assets:DIT:MyBankAccount rather than directly from Assets:MyBankAccount.
>>
>> This allows the importers to import all entries and I do not have to
>> worry about detecting a transaction that is common to the two statements
>> and commenting it out on one side and possibly dealing with the different
>> dates of the two entries (which could cause a problem with balance
>> assertions in certain cases).
>>
>> Instead, I run the deposit_in_transit plugin that automatically creates a
>> new entry that ties to first two:
>>
>> 2016-03-24 * "Payment to AMEX / PAYMENT RECEIVED - THANK YOU"
>>   Assets:DIT:MyBankAccount                               1261.98 CAD
>>   Assets:DIT:Amex
>>
>> It also tags pending deposits and tags and links cleared transactions,
>> but that is beyond the point of this discussion.
>>
>> The problem I have is caused by an extension I made to the
>> deposit_in_transit plugin. When the two entries happen on the same date,
>> accountants will usually remove the transaction from the deposit-in-transit
>> account (I use a pair of deposit-in-transit accounts, but just because I
>> want those account names to give you info about the source and destination
>> of the funds in the original entries) and use the original source and
>> destination accounts directly. So, my plugin will do this as well and when
>> faced with two entries such as:
>>
>> 2016-03-23 * "Payment to AMEX"
>>   Assets:MyBankAccount                                    -1261.98 CAD
>>   Assets:DIT:Amex
>>
>> 2016-03-23 * "PAYMENT RECEIVED - THANK YOU"
>>   Liabilities:Amex                                  1261.98 CAD
>>   Assets:DIT:MyBankAccount
>>
>> (note that the only thing changed is that the two entries now share the
>> same date), instead of adding a new entry to link them, it will replace
>> them with a single entry:
>>
>> 2016-03-23 * "Payment to AMEX /  PAYMENT RECEIVED - THANK YOU"
>>   Assets:MyBankAccount                                    -1261.98 CAD
>>   Liabilities:Amex                                  1261.98 CAD
>>
>> Nice and tidy.
>> But now, here is the problem with the import stage; when importing an
>> entry such as:
>>
>> 2016-03-23 * "Payment to AMEX"
>>   Assets:MyBankAccount                                    -1261.98 CAD
>>
>> The transaction completer will look at past entries to come up with a
>> reasonable second posting; if it used the results of the deposit_in_transit
>> plugin, it would use:
>>
>>   Liabilities:Amex
>>
>> as the second leg, while I want it to use the same account that I use in
>> my beancount file, i.e.:
>>
>>   Assets:DIT:Amex
>>
>> Otherwise, I will end up with two entries (one from the bank statement
>> and one from the credit card statement) describing the same transaction!
>>
>> So, my solution would be to disable the deposit_in_transit plugin when
>> using bean-extract.
>>
>>
>> On Mon, May 2, 2016 at 10:28 AM, Martin Blais <[email protected]> wrote:
>>
>>> You could always look at the name of the top-level module
>>> (__main__.__file__) or sys.argv.
>>> That's a bit of an odd need.
>>> What's the use case?
>>>
>>>
>>> On Mon, May 2, 2016 at 9:22 AM, Filippo Tampieri <
>>> [email protected]> wrote:
>>>
>>>> I need one of my plugins to know whether it is running from within
>>>> bean-extract or otherwise.
>>>> Is there a clean way to achieve that?
>>>> Thank you,
>>>> fxt
>>>>
>>>> --
>>>> 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 post to this group, send email to [email protected].
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/beancount/66ae4e5b-6706-4b0d-ae78-f9dbd12eae82%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/beancount/66ae4e5b-6706-4b0d-ae78-f9dbd12eae82%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>> --
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "Beancount" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/beancount/IUlEVn3v3oE/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> [email protected].
>>> To post to this group, send email to [email protected].
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/beancount/CAK21%2BhNSjn72JBD4vxuELQDqR_67AtomH%3DKbCffjDgeA-bXw4Q%40mail.gmail.com
>>> <https://groups.google.com/d/msgid/beancount/CAK21%2BhNSjn72JBD4vxuELQDqR_67AtomH%3DKbCffjDgeA-bXw4Q%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
>> 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 post to this group, send email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/beancount/CAKgGm2iQR3u8ttQw0hxugwa%3DGazqZH5v-cyGUSpQeu44qE5J-Q%40mail.gmail.com
>> <https://groups.google.com/d/msgid/beancount/CAKgGm2iQR3u8ttQw0hxugwa%3DGazqZH5v-cyGUSpQeu44qE5J-Q%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "Beancount" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/beancount/IUlEVn3v3oE/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/beancount/CAKJfoCHq2wCK7OgKMa-EP82s6XC0atE0qSENCKq%2BHPsLRaC%2B8A%40mail.gmail.com
> <https://groups.google.com/d/msgid/beancount/CAKJfoCHq2wCK7OgKMa-EP82s6XC0atE0qSENCKq%2BHPsLRaC%2B8A%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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 post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beancount/CAKgGm2h6PnxY9wSrD7kxE9ik6bEh%2BSuQHMPNUgQoCt9tx-aqkA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to