mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-08 15:14:49 +03:00
Allow amounts with total price in the input to "hledger convert"
This commit is contained in:
parent
b4eca62334
commit
2c771f3d7f
@ -578,6 +578,15 @@ Notes:
|
||||
matched text with `\0` and any regex groups with `\1`, `\2` in the
|
||||
usual way.
|
||||
|
||||
- Amount may contain the total or per-unit price. For example, lets
|
||||
assume that your base account "bank-current" is in GBP, and your CSV specifies amount of "10
|
||||
USD @@ 15 GBP", and account-assigning rules selected account
|
||||
"travel-expenses" for this transaction. As a result,
|
||||
"travel-expenses" would be credited by "10 USD @@ 15 GBP", and
|
||||
"bank-current" would be debited by "-15 GBP". This way you could
|
||||
track the expenses in the currencies there were made, while
|
||||
keeping your base account in single currency
|
||||
|
||||
### histogram
|
||||
|
||||
The histogram command displays a quick bar chart showing transaction
|
||||
|
@ -10,7 +10,7 @@ import Hledger.Data.Types (Journal,AccountName,Transaction(..),Posting(..),Posti
|
||||
import Hledger.Data.Utils (strip, spacenonewline, restofline, parseWithCtx, assertParse, assertParseEqual, error')
|
||||
import Hledger.Read.JournalReader (someamount,ledgeraccountname)
|
||||
import Hledger.Data.Journal (nullctx)
|
||||
import Hledger.Data.Amount (nullmixedamt)
|
||||
import Hledger.Data.Amount (nullmixedamt, costOfMixedAmount)
|
||||
import Safe (atDef, maximumDef)
|
||||
import System.IO (stderr)
|
||||
import Text.CSV (parseCSVFromFile, printCSV)
|
||||
@ -284,6 +284,9 @@ transactionFromCsvRecord rules fields =
|
||||
amountstr'' = currency ++ amountstr'
|
||||
amountparse = runParser someamount nullctx "" amountstr''
|
||||
amount = either (const nullmixedamt) id amountparse
|
||||
-- Using costOfMixedAmount here to allow complex costs like "10 GBP @@ 15 USD".
|
||||
-- Aim is to have "10 GBP @@ 15 USD" applied to account "acct", but have "-15USD" applied to "baseacct"
|
||||
baseamount = costOfMixedAmount amount
|
||||
unknownacct | (readDef 0 amountstr' :: Double) < 0 = "income:unknown"
|
||||
| otherwise = "expenses:unknown"
|
||||
(acct,newdesc) = identify (accountRules rules) unknownacct desc
|
||||
@ -309,7 +312,7 @@ transactionFromCsvRecord rules fields =
|
||||
Posting {
|
||||
pstatus=False,
|
||||
paccount=baseAccount rules,
|
||||
pamount=(-amount),
|
||||
pamount=(-baseamount),
|
||||
pcomment="",
|
||||
ptype=RegularPosting,
|
||||
pmetadata=[],
|
||||
|
Loading…
Reference in New Issue
Block a user