simonmichael / hledger

Robust, fast, intuitive plain text accounting tool with CLI, TUI and web interfaces.
https://hledger.org
GNU General Public License v3.0
3.08k stars 320 forks source link

timedot: add payee/description and trailing comment/tags #1754

Closed linuxcaffe closed 1 year ago

linuxcaffe commented 3 years ago

The most awesome timedot would be even awesomer with a description (payee field). Currently a timedot entry carries no description, but can handle a trailing comment.

<acct:sub:sub><spaces><qtty><spaces><;><comment>

This enhancement would use the comment as description.

linuxcaffe commented 3 years ago

Closed in favour of #1220 https://github.com/simonmichael/hledger/issues/1220#issuecomment-968392952

simonmichael commented 3 years ago

Related to #1220 (comments in timeclock format). Let's keep this one open for timedot specifically.

simonmichael commented 3 years ago

Following up on djp's timedot comment there:

linuxcaffe commented 3 years ago

I'm confused. "timedot supports descriptions".. how? I get an error putting anything after the date. I often put a comment like ;Friday on the line following the date, but.. Does that description relate to the day? Not to each timedot event, right? When I review my ledger combining the timedot and timeclock, using hledger-ui, for example, entries from the timeclock have descriptions, those from timedot do not. I DO agree that the trailing <spaces>;comment :tags: would be dandy..

copying mockup back to the correct topic

UPDATE; oh what the hell. I've been thinking about a more complete feature set, and considering eeking them out, as the foundational bits get deployed, so as not to cause alarm, but I'm expanding this mockup with status "*" and (number). All comments, in-line and indented (not including file-comments) would be transaction-comments, as there aren't really "postings".

<acct:sub:sub> <2+ spaces> <qtty> <2+ spaces> <* (123) description text> <2+ spaces> <;> <comment and :tags:>

2021/11/12
sleep                7
job:store            8.5         cleaned, set up xmas decorations
job:mary:reno        ...         * (21024) bathroom drain repair       ; sink didn't fit :plumbing:invoice:
   ; Mary suggests retrofitting the old one :scrapyard:
ent:reading          .... .      Kurt Vonnegut - Cat's Cradle          ; insane! loved it! :fiction:funny:
phys:workout         25min       ; reps: 305
simonmichael commented 3 years ago

Eg:

* 2021-11-14 Sun
fos.hledger              .... .... .
$ hledger -f a.timedot print desc:sun
2021-11-14 * Sun
    (fos.hledger)            2.25
simonmichael commented 3 years ago

(It works for me at least back to hledger 1.17..)

linuxcaffe commented 3 years ago

Oh that's cool on the date (emacsism?) but I'm after a description on the entry

      (fos.hledger)        2.25       more dumb suggestions in irc
simonmichael commented 3 years ago

Yes, in that position I propose we should support comments (; comment maybe with a tag:). There's no room for a posting description in our data model.

simonmichael commented 3 years ago

Well.. I'm getting confused, I thought the date creates a transaction and each dot line is a posting within it. Actually, each dot line is a separate transaction. (Is that for the best ? I'm not sure.)

linuxcaffe commented 3 years ago

yes, it's (nearly) perfect! Ruminate, maybe there IS room for that description :-D

linuxcaffe commented 3 years ago

timedot entries being a one-liner, with an inherited date, is my favorite part of it, but it only has a date, an account and an amount, no description (or comment or tag). I suspect that some of the timedot behaviors you are seeing (Simon) is emacs magic, and none of the leading-* features described work in my editor (vi) and that's ok (for now) . Have another look at the mockup above, and I hope you'll agree that it might be the most concise, most hledgerish way to cram the full data set into a single line.

simonmichael commented 3 years ago

@linuxcaffe and I, the current known users of timedot format, discussed this (cf today's #hledger chat log) and made some decisions. We'd like to get better description and comment support in timedot format, along these lines:

2021/11/12 blah
sleep                7
job:store            8.5     cleaned, set up xmas decorations
job:mary:reno        ...     * (21024) bathroom drain repair, sink didn't fit ; plumbing:, invoice:
   ; Mary suggests retrofitting the old one, scrapyard:
ent:reading          .... .  Kurt Vonnegut - Cat's Cradle, insane! loved it! ; fiction:, funny:
phys:workout         25m     ; reps: 305

If all of those are implemented, the above would produce transactions like these, queryable in the usual ways:

2021-11-12
    ; day: blah
    (sleep)               7.00

2021-11-12 cleaned, set up xmas decorations
    ; day: blah
    (job:store)           8.50

2021-11-12 * (21024) bathroom drain repair, sink didn't fit  ; plumbing:, invoice: 
    ; Mary suggests retrofitting the old one, scrapyard:
    ; day: blah
    (job:mary:reno)       0.75

2021-11-12 Kurt Vonnegut - Cat's Cradle, insane! loved it!  ; fiction:, funny: 
    ; day: blah
    (ent:reading)         1.25

2021-11-12  ; reps: 305
    ; day: blah
    (phys:workout)        0.41666666666666665
alhirzel commented 2 years ago

@simonmichael and/or @linuxcaffe - do either of you know of anyone working this issue at this time? I am a daily user of the timedot format and would like to implement this, as I have wished for the same thing!

simonmichael commented 2 years ago

Noone is working on it, be our guest @alhirzel .

simonmichael commented 1 year ago

Here's a RFC on changes to timedot format: https://groups.google.com/g/hledger/c/TxoA-xnfvMA/m/QvpmWA5pAwAJ

simonmichael commented 1 year ago

Ccing here (and reviewing the discussion above):

I'm fixing/improving timedot's description/comment/tag parsing. But before that.. which do you think is better:

  1. generating little transactions for each line, as we do now:
    2023-01-01 
    a .... 
    b .... 
    c .... 

    ->

    
    2023-01-01 
    (a) 1 

2023-01-01 (b) 1

2023-01-01 (c) 1

Or 2. generating one big transaction per date line ? 

2023-01-01 (a) 1 (b) 1 (c) 1


I don't remember why it's implemented as 1. Right now, 2 looks a little tidier ? 
It would be a breaking change (print and register reports would change; 
balance reports would not). 

The above affects how timedot format can support descriptions and comments (and tags). 
Variant 2 would simplify that design space a bit: date lines can end with a transaction 
description and comment, time lines can end with a posting comment. 
simonmichael commented 1 year ago

Now implemented in master: https://hledger.org/dev/hledger.html#timedot