I'm starting work on ledger-recur shown below (and prettier in this gist 
<https://gist.github.com/gavinhughes/32e80a57fa666ac691db8271914a407d>).  I 
see this topic gets discussed occasionally. Does anything like this already 
exist?  Is this useful to anyone else?  Any suggestions from improvement 
before I start work on it?

- Gavin
---
https://gist.github.com/gavinhughes/32e80a57fa666ac691db8271914a407d

#+Title:Ledger Recur

Ledger Recur provides automated entry of recurring transactions into ledger 
files.

The command `recur journal.ledger recurring.rcr` enters all recurring 
transactions specified in the file `recurring.rcr` into the file 
`journal.ledger`.

A recur file is parsed before transactions are entered into a ledger file. 
If erorrs are found, they are reported and no transactions are entered.

* Recur file syntax

** Transactions

#+BEGIN_SRC
Payee
    /recurrence/ /[end_date]/
    /last_applied_date/
    [Remaining lines applied verbatim]
#+END_SRC

*** Example

#+BEGIN_SRC
    Dropbox
      1M22 E2018/12/31
      2018/08/30
      ; d: Pro subscription
      ; :recur:
      software  $10
#+END_SRC

** Recurrence syntax

| Interval              | Interpreted as                               |
|-----------------------+----------------------------------------------|
| 1W1,3,5               | Every week on Mon, Wed, Fri.                 |
| 2W5                   | Every two weeks on Fri.                      |
| 1M22                  | Every 1 month on the 22nd.                   |
| 1M1,15                | Every 1 month on the 1st and 15th.           |
| 1Mw7                  | Every 1 month on the first Sun.              |
| 1Y01/08               | Every 1 year on Jan-08.                      |
| /interval/ E2018/01/08 | The recur terminates on 2018/01/08.          |

* Command line syntax

recur /ledger_file/ /recur_file/

If a recur file is not supplied, recur will look for a file with the same 
name as the ledger file but with an added extension of `.rcr`.

Example,

#+BEGIN_SRC
recur main.ldg
#+END_SRC

expands to

#+BEGIN_SRC
recur main.ldg main.ldg.rcr
#+END_SRC

** Options

| -d | --dry-run | Simulate but do not enter transaction. Reports errors 
and warnings. |

Ledger Recur provides automated entry of recurring transactions into ledger 
files.

The command `recur journal.ledger recurring.rcr` enters all recurring 
transactions specified in the file `recurring.rcr` into the file 
`journal.ledger`.

A recur file is parsed before transactions are entered into a ledger file. 
If erorrs are found, they are reported and no transactions are entered.

* Recur file syntax

** Transactions

  Payee
    Recurrence /end_date/
    Last_applied_date
    [Remaining lines applied verbatim]

*** Example

    Dropbox
      1M22 E2018/12/31
      2018/08/30
      ; d: Pro subscription
      ; :recur:
      software  $10

* Recurrence syntax

| Impl | Example               | Interpreted as                             
  |
|------+-----------------------+----------------------------------------------|
|      | 1W1,3,5               | Every week on Mon, Wed, Fri.               
  |
|      | 2W5                   | Every two weeks on Fri.                   
   |
|      | 1M22                  | Every 1 month on the 22nd.                 
  |
|      | 1M1,15                | Every 1 month on the 1st and 15th.         
  |
|      | 1Mw7                  | Every 1 month on the first Sun.           
   |
|      | 1Y01/08               | Every 1 year on Jan-08                     
  |
|      | /interval/E2018/01/08 | Every 1 year on Jan-08, ending on 
18-Jan-08. |
|      |                       |                                           
   |

* Command line syntax

recur /ledger_file/ /recur_file/

  Example:  recur dauin.rcr main.ldg

If a recur file is not supplied, recur will look for a file with the same 
name as the ledger file with the addition of ".rcr".

  Example,  recur main.ldg   expands to   recur main.ldg main.ldg.rcr.

** Options

| -d | --dry-run | Simulate but do not enter transaction. Reports errors 
and warnings. |

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"Ledger" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to