I was revisiting some of my accounts hierarchy as part of doing some
cleanup and
had some thoughts I thought I'd share here about it for discussion.

One of the topics we've discussed in the past is regarding the use of
subaccounts over payees. For example, consider this transaction imported
from a
credit card:

    2018-05-01 * "VISIT PATREON.COM/INSAN FRANCISCO       CA" "OPSNT_CMEVT
1234567890"
      Liabilities:US:Amex                        -10.00 USD
      Expenses:Online:Media

The problem is that there is no breakdown of the bill into its individual
component parts, which in this case are donations to multiple content
creators.
You also can't easily override the payee field for it: the payee for the
whole
transaction (Patreon) should be preserved as well, we might want that
information (e.g., the same "channel" might change which service it uses to
receive a donation, thus changing payee for the same channel).

One way I've been getting around this is by using dedicated subaccounts for
each
part of the breakdown (in this example they are content creators):

    2018-05-01 * "VISIT PATREON.COM/INSAN FRANCISCO       CA" "OPSNT_CMEVT
1234567890"
      Liabilities:US:Amex                        -10.00 USD
      Expenses:Online:Media:Safecast               3.00 USD
      Expenses:Online:Media:AbroadInJapan          3.00 USD
      Expenses:Online:Media:OnlyInJapan            2.00 USD

Some people have in the past expressed disapproval of this method because it
pollutes the expense report with a potentially large number of unnecessary
subaccounts. It was also perceived as unnecessary because the context of our
discussion was limited to that of a single transaction, e.g.,

    2018-05-01 * "VISIT PATREON.COM/INSAN FRANCISCO       CA" "OPSNT_CMEVT
1234567890"
      Liabilities:US:Amex                         -3.00 USD
      Expenses:Online:Media:AbroadInJapan          3.00 USD

which could be trivial translated to:

    2018-05-01 * "AbroadInJapan" "VISIT PATREON.COM/INSAN FRANCISCO
CA - OPSNT_CMEVT 1234567890"
      Liabilities:US:Amex                         -3.00 USD
      Expenses:Online:Media                        3.00 USD

At the time, we discussed ideas around identifying the parent account as
such
(perhaps with metadata on the Open directive) and having the various
reporting
codes honor this and aggregate at that level. This was never implemented:
it's
unclear how it would generalize to both the SQL tools and all custom
scripts,
not elegant.

Another idea is to use metadata to breakdown the parts into what I'll call
here
"channels":

    2018-05-01 * "VISIT PATREON.COM/INSAN FRANCISCO       CA" "OPSNT_CMEVT
1234567890"
      Liabilities:US:Amex                        -10.00 USD
      Expenses:Online:Media           3.00 USD
        channel: "Safecast"
      Expenses:Online:Media           3.00 USD
        channel: "AbroadInJapan"
      Expenses:Online:Media            2.00 USD
        channel: "OnlyInJapan"

The bean-query/SQL tool has the ability to pull and insert per-posting
metadata,
so this fulfills the purpose. Note that this transformation could be done
elegantly entirely by a plugin filtering and transforming select postings.

Another idea, one that we never discussed, is the idea to have a special
marker
as part of the account name, marker which would automatically identify a
portion
of an account name as being a leaf, e.g.,

    2018-05-01 * "VISIT PATREON.COM/INSAN FRANCISCO       CA" "OPSNT_CMEVT
1234567890"
      Liabilities:US:Amex                        -10.00 USD
      Expenses:Online:Media/Safecast               3.00 USD
      Expenses:Online:Media/AbroadInJapan          3.00 USD
      Expenses:Online:Media/OnlyInJapan            2.00 USD

This would probably also be best translated to metadata as in the above.
I'm not
sure I like this design because this would require core modifications and
creating a new concept (thus adding complexity to the core); though I have
mixed
feelings about not doing something to handle this, because I suspect this
use
case is pretty common, e.g., donations, online content, apps from app
stores,
etc.

Any further thoughts and discussion appreciated,

-- 
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/CAK21%2BhOaUyd9T2%3DxysvhOWCgMA%3DvTHqeMjWDP5uu9DGS89SWqg%40mail.gmail.com.

Reply via email to