-
-
Notifications
You must be signed in to change notification settings - Fork 27
Description
On this page, @josephmturner and @adept have proposed to use file-specific rules, i.e. hyperspecific rules that would only apply to one specific imported file, typically because they only target one transaction or transactions from this specific timeframe. The main reason for this is to avoid cluttering the main rules file while still being able to correctly allocate specific transactions, even by overriding general rules in some cases. The second advantage is in terms of performance optimization, as these rules won't be unnecessarily evaluated on every single file.
I think it would make sense for hledger-flow
to allow similar file-specific rules and to enforce a way to implement them. In your example directory, I'd see it as:
└── import
└── gawie
└── bogart
└── cheque
├── 1-in
│ └── 2016
│ ├── 123456789_2016-03-30.csv
│ └── ...
├── 2-preprocessed
│ └── 2016
│ ├── 123456789_2016-03-30.csv
│ └── ...
├── 3-journal
│ └── 2016
│ ├── 123456789_2016-03-30.journal
│ └── ...
├── bogart-cheque.rules # General rules
├── ...
└── rules # <-- File-specific rules go here
└── 2016
└── 123456789_2016-03-30.rules # File-specific rules, same name as file
Process
Now, as I don't think hledger
allows to specify using multiple rules files, we'd have to include the general rules in the specific rules. I'd see the process as following (but maybe there's a better way to do it):
-
On
hledger-flow import
, check if file-specific rules exist and create them if they don't (don't overwrite) for all detected CSVs. Write the following in each new file:include ../../../../../bogart.rules # if file exists include ../../bogart-cheque.rules # if file exists include ../../../../../all.rules # if file exists (just an idea, that's where I put my generic transactions account-assignment rules, feel free to ignore, as it can also be included manually in any of the above files) # Write specific transactions rules below this line
-
Then, to import, use the file-specific rules only (as they contain all generic rules).
Potential issues
- If there are no rules files whatsoever, there's nothing to include in the specific files, and
hledger
will complain on an empty rules file. But I suppose that an error message indicating that it cannot import without a rules file would make sense then. - Maybe it could be difficult for some users to understand where to put their account-identification rules? Or it could incite avoiding generic rules and favoring transaction-specific rules (inefficient)? But I suppose
hledger-flow
users know better ;-)