hledger icon indicating copy to clipboard operation
hledger copied to clipboard

redundant equity/cost detection does not work with CSV / account types do not affect CSV

Open simonmichael opened this issue 2 years ago • 1 comments

This entry, when read from a journal file, is accepted. Declaring eigenkapital:umwandlung to be an equity conversion account (type V) allows the equity conversion postings to be detected and matched up with the @@ €303,20 cost:

commodity 1000,00 €
commodity 1000,0000 "LYX0Q0"

account eigenkapital:umwandlung  ; type:V

2023-01-18
    aktiva:stewmehr:bnp:giro                                        €-304,00
    eigenkapital:umwandlung                                          €303,20
    eigenkapital:umwandlung                                  "LYX0Q0"-1,5111
    aktiva:stewmehr:bnp:depot:LYX0Q0:16.01.2023    "LYX0Q0"1,5111 @@ €303,20
    aufwendungen:bankgebuehren:depot                                   €0,80

However if this journal entry is generated by CSV rules, it is rejected - even if you first read a journal file declaring the account type:

$ hledger -f accounts.journal -f txns.csv print   # fails

This seems a bug; https://hledger.org/dev/hledger.html#directive-effects says an account directive should affect all files.

simonmichael avatar Jul 06 '23 07:07 simonmichael

I'm not quite sure where the bug is here. Notes:

  • Reading the above entry requires the account declaration, so that hledger knows eigenkapital:umwandlung is an equity conversion posting.

  • A CSV file alone can't provide the account declaration. Here's one generating the same entry:

    a.csv:

    2023-01-01,
    

    a.csv.rules:

    fields date,
    account1    aktiva:stewmehr:bnp:giro                     
    account2    eigenkapital:umwandlung                      
    account3    eigenkapital:umwandlung                      
    account4    aktiva:stewmehr:bnp:depot:LYX0Q0:16.01.2023  
    account5    aufwendungen:bankgebuehren:depot             
    amount1                   €-304,00
    amount2                    €303,20
    amount3            "LYX0Q0"-1,5111
    amount4  "LYX0Q0"1,5111 @@ €303,20
    amount5                      €0,80
    
  • A journal file can't include a csv file and vice versa. A sibling journal file and csv file doesn't work:

    $ hledger -f accounts.j -f a.csv print
    hledger: Error: /Users/simon/src/hledger/a.csv:1-0:
    1 | 2023-01-01
      |     aktiva:stewmehr:bnp:giro                                        €-304,00
      |     eigenkapital:umwandlung                                          €303,20
      |     eigenkapital:umwandlung                                  "LYX0Q0"-1,5111
      |     aktiva:stewmehr:bnp:depot:LYX0Q0:16.01.2023    "LYX0Q0"1,5111 @@ €303,20
      |     aufwendungen:bankgebuehren:depot                                   €0,80
    
    This multi-commodity transaction is unbalanced.
    The real postings' sum should be 0 but is: "LYX0Q0"-1,5111, €303,20
    
  • And indeed, sibling journal files doesn't work either:

    $ hledger -f accounts.j -f txns.j print
    hledger: Error: /Users/simon/src/hledger/txns.j:2-7:
    2 | 2023-01-01
      |     aktiva:stewmehr:bnp:giro                                        €-304,00
      |     eigenkapital:umwandlung                                          €303,20
      |     eigenkapital:umwandlung                                  "LYX0Q0"-1,5111
      |     aktiva:stewmehr:bnp:depot:LYX0Q0:16.01.2023    "LYX0Q0"1,5111 @@ €303,20
      |     aufwendungen:bankgebuehren:depot                                   €0,80
    
    This multi-commodity transaction is unbalanced.
    The real postings' sum should be 0 but is: "LYX0Q0"-1,5111, €303,20
    
  • But putting the account declaration in an including parent journal, or an included child journal, does work.

  • It seems like the issue may be that https://hledger.org/dev/hledger.html#directive-effects describes the scope of the account existence declaration (= all files), but the scope of the account type is different (only parents and children).

  • Needed: more testing, doc updates, perhaps account directive scope changes, and some solution for generating these redundant equity/cost transactions from CSV.

simonmichael avatar Jul 16 '23 03:07 simonmichael