Package: hreports
hreportsA simple wrapper to create and manage reports based on hledger queries.Free software: MIT licenseDocumentation:https://hreports.readthedocs.io.Featureshreports saves shortcuts to hledger queries to conveniently manage multiple
queries with different settings and ledger files. In addition, hreports can save
the query output to pdfs with jinja templates using Pandoc.Conveniently create and manage multiple heldger queriesCustomize the representation of hledger query results with templatesSave report results in pdf formatParametrize queriesUse case: generate invoices with a single command, e.g.hreports save invoice_client1Use case: Manage tax reports, e.g.hreports show tax_2017QuickstartEnsure thathledgeris installed. If you want to save generate pdf reportspandoc(>=1.16) and a PDF engine such aswkhtml2pdfneed to be installed as well. Ensure to use the patched version wkthmltopdf to ensurehttps://github.com/wkhtmltopdf/wkhtmltopdf/issues/2037Use pip to install hreports:$ pip install hreportsThe starting point of running hledger queries is having a ledger to run queries
against. Imagine following simple hlegder file:$ cat cash-account.ledger
1917/12/14 * Income
    assets:cash  10 USD
    income:client1

1917/12/12 * Expense
    assets:cash  5 USD
    expense:milkand a hledger timesheet:$ cat timesheet.ledger
1917/12/14 * Time
    (consulting:clien1)  1The following command creates a report namedbalancethat executes the queryhledger bal –depth 1on the ledgercash.ledger:$ hreports create balance --query "bal --depth 1" --ledger cash.ledgerWhen executed, hreports stores the query data in a config file for future
reference. Now hreports can render the query by running:$ hreports show balance
               5 USD  assets
--------------------
               5 USDThis makes it easy to store many different queries on different ledger files
and executing them by refering to their hreports name.TemplatingSometimes, it is helpful to add context to query results. hreports uses jinja
templates to customize the representation of reports. The query results are
added to theoutputvariabel in the context of the template. In addition,
the report configuration data, global configuration and custom variables
are added.Imagine the folowing simple template:$ cat balance.template
The balance on {{ now }} the balance was

{{ output|last }}hreports can now use this template to embed query results:$ hreports show balance --template balance.template
The balance on 2017-12-15 15:39:11.519658 was:

                   5 USDIf you need this information for future reference, create a pdf of it by
executing:$ hreports save balance --template balance.template
Saved balance.pdfIf you keep reusing this command, simply your life by updating the report:$ hreports update balance --template balance.templateNow hreports will always use thebalance.templatewhen rendering the balance
report.Templating is also helpful when you use hledger for timetracking and
invoicing.  Create a hreport and a simple demo template. Add a custom
variable name (“hourly_rate”) and value (“20”) with the-varoption:$ hreports create timesheet --ledger timesheet.ledger -q "bal" -var hourly_rate 20 --template invoice.template

$ cat invoice.template
{% set hours = output|last|float|round(2) %}
{% set net = hours *  hourly_rate|float  %}
Please pay me {{ net }} USD.
Signed {{ now|datetime("%Y/%m/%d") }}

$ hreports show timesheet
Please pay me 20.0 USD.
Signed on 2017/12/15Admittedly, this is a somewhat simple example. But feel free to check outheldger edit –template invoice_de.templatefor a fully fledged template of a
German invoice.Finally, all report configuration data is stored in a simple YAML file which
can be manipulated manually if preferred. To inspect and manipulated the
config file run:$ hreports editRoadmapAdd documentationAdd testsCreditsThis package was created withCookiecutterand theaudreyr/cookiecutter-pypackageproject template.History0.2.1 (2018-12-23)Adds string decoding to output subprocess callUpdates dependencies and minor fixes0.2.0 (2018-04-01)Adds testsImproves exception handling0.1.5 (2018-03-05)Adds template filter to create relative datesAdds multiply_last_column template filter to add an extra column which multiplies the last string on each line with a custom factorAdds percentage_column template filter to add an extra column which shows the percentage of the last string in a line in comparision to the buttom right value of the outputPreserves whitespace in double quotes for check_output commandShows report listing in alphabetic order0.1.4 (2017-12-15)Adds first template (german invoice)Adds exception catching for template rendering and hledger commands0.1.3 (2017-12-15)Adds templating and some initial documenation.0.1.2 (2017-12-03)First release on PyPI.