Skip to content

hledger can't parse two sets of identical equity:conversion postings #2441

@the-solipsist

Description

@the-solipsist

❯ hledger --version
hledger 1.43.2, linux-x86_64

Parsing

If an "Equity:Conversion" transaction has two sets of identical entries, hledger fails to parse them. If they are not identical, then hledger works.

This transaction can be parsed by hledger:

2025-08-08 Grab | Taxi
    Expenses:Transport:Passenger:Road:Taxi    THB 138.00 @@ ₹373.135
    equity:conversion:THB-₹:THB                          THB -138.00
    equity:conversion:THB-₹:₹                               ₹373.135
    Assets:Receivable:People:XXXXXX-XXXXXX    THB 137.00 @@ ₹373.135
    equity:conversion:THB-₹:THB                          THB -137.00
    equity:conversion:THB-₹:₹                               ₹373.135
    Liabilities:Credit-Card:IDFC                            ₹-746.27

But this transaction cannot:

2025-08-08 Grab | Taxi
    Expenses:Transport:Passenger:Road:Taxi    THB 137.00 @@ ₹373.135
    equity:conversion:THB-₹:THB                          THB -137.00
    equity:conversion:THB-₹:₹                               ₹373.135
    Assets:Receivable:People:XXXXXX-XXXXXX    THB 137.00 @@ ₹373.135
    equity:conversion:THB-₹:THB                          THB -137.00
    equity:conversion:THB-₹:₹                               ₹373.135
    Liabilities:Credit-Card:IDFC                            ₹-746.27

But the latter can be generated by hledger print --infer-equity if this is the transaction:

2025-08-08 Grab | Taxi
    Expenses:Transport:Passenger:Road:Taxi    THB 137.00 @@ ₹373.135
    Assets:Receivable:People:XXXXXX-XXXXXX    THB 137.00 @@ ₹373.135
    Liabilities:Credit-Card:IDFC                            ₹-746.27

Infer-Costs

Similarly, hledger reg --infer-cost -B does not work for this transaction:

2025-08-08 Grab | Taxi
    Expenses:Transport:Passenger:Road:Taxi    THB 137.00
    equity:conversion:THB-₹:THB              THB -137.00
    equity:conversion:THB-₹:₹                   ₹373.135
    Assets:Receivable:People:XXXXXX-XXXXXX    THB 137.00
    equity:conversion:THB-₹:THB              THB -137.00
    equity:conversion:THB-₹:₹                   ₹373.135
    Liabilities:Credit-Card:IDFC                ₹-746.27

But hledger reg --infer-cost -B works for this:

2025-08-08 Grab | Taxi
    Expenses:Transport:Passenger:Road:Taxi    THB 138.00
    equity:conversion:THB-₹:THB              THB -138.00
    equity:conversion:THB-₹:₹                   ₹373.135
    Assets:Receivable:People:XXXXXX-XXXXXX    THB 137.00
    equity:conversion:THB-₹:THB              THB -137.00
    equity:conversion:THB-₹:₹                   ₹373.135
    Liabilities:Credit-Card:IDFC                ₹-746.27

I believe this ought to be counted as a bug.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-BUGSomething wrong, confusing or sub-standard in the software, docs, or user experience.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions