examples: Indian National Pension Service CSV rules (Pranesh Prakash)
slightly tweaked by SM
This commit is contained in:
parent
66b51472f2
commit
f4831533b8
104
examples/csv/nps.csv.rules
Normal file
104
examples/csv/nps.csv.rules
Normal file
@ -0,0 +1,104 @@
|
||||
# Rules for Indian National Pension Scheme CSV. See also nps.csv.sh.
|
||||
|
||||
# skip the headings line:
|
||||
skip 1
|
||||
|
||||
# use the following CSV fields:
|
||||
fields date, desc, intermediary_charge, e_value, e_nav, e_units, c_value, c_nav, c_units, g_value, g_nav, g_units
|
||||
|
||||
# use the first date format if you have older CSV files
|
||||
#date-format %d-%h-%y
|
||||
date-format %d-%h-%Y
|
||||
|
||||
# since the CSV amounts have no currency symbol, add one:
|
||||
currency ₹
|
||||
|
||||
description NPS | %desc
|
||||
|
||||
# set the base account that this CSV file corresponds to
|
||||
if %desc (Opening|Closing)
|
||||
account1 Retirement:Investment:NPS:SM001003:E
|
||||
currency1 "SM001003"
|
||||
balance1 %e_units
|
||||
account2 Retirement:Investment:NPS:SM001004:C
|
||||
currency2 "SM001004"
|
||||
balance2 %c_units
|
||||
account3 Retirement:Investment:NPS:SM001005:G
|
||||
currency3 "SM001005"
|
||||
balance3 %g_units
|
||||
skip 1
|
||||
|
||||
if %desc Billing
|
||||
account1 Expenses:Financial:NPS
|
||||
|
||||
if %desc Persistency
|
||||
account1 Expenses:Financial:NPS:POP:Indirect
|
||||
|
||||
if %intermediary_charge [1-9]
|
||||
amount1 -%intermediary_charge
|
||||
|
||||
if %e_value [1-9]
|
||||
account2 Equity:Trading:NPS:Equity:INR-SM001003:INR
|
||||
amount2 %e_value
|
||||
account3 Equity:Trading:NPS:Equity:INR-SM001003:SM001003
|
||||
amount3 -%e_units
|
||||
currency3 "SM001003"
|
||||
account4 Retirement:Investment:NPS:SM001003:E
|
||||
amount4 %e_units
|
||||
currency4 "SM001003"
|
||||
|
||||
if %e_value [1-9]
|
||||
& %desc (Billing|Persistency)
|
||||
account2 Equity:Trading:NPS:Billing:INR-SM001003:INR
|
||||
amount2 %e_value
|
||||
account3 Equity:Trading:NPS:Equity:INR-SM001003:SM001003
|
||||
amount3 -%e_units
|
||||
currency3 "SM001003"
|
||||
account4 Retirement:Investment:NPS:SM001003:E
|
||||
amount4 %e_units
|
||||
currency4 "SM001003"
|
||||
|
||||
if %c_value [1-9]
|
||||
account5 Equity:Trading:NPS:Corp:INR-SM001004:INR
|
||||
amount5 %c_value
|
||||
account6 Equity:Trading:NPS:Corp:INR-SM001004:SM001004
|
||||
amount6 -%c_units
|
||||
currency6 "SM001004"
|
||||
account7 Retirement:Investment:NPS:SM001004:C
|
||||
amount7 %c_units
|
||||
currency7 "SM001004"
|
||||
|
||||
if %c_value [1-9]
|
||||
& %desc (Billing|Persistency)
|
||||
account5 Equity:Trading:NPS:Billing:INR-SM001004:INR
|
||||
amount5 %c_value
|
||||
account6 Equity:Trading:NPS:Corp:INR-SM001004:SM001004
|
||||
amount6 -%c_units
|
||||
currency6 "SM001004"
|
||||
account7 Retirement:Investment:NPS:SM001004:C
|
||||
amount7 %c_units
|
||||
currency7 "SM001004"
|
||||
|
||||
if %g_value [1-9]
|
||||
account8 Equity:Trading:NPS:Govt:INR-SM001005:INR
|
||||
amount8 %g_value
|
||||
account9 Equity:Trading:NPS:Govt:INR-SM001005:SM001005
|
||||
amount9 -%g_units
|
||||
currency9 "SM001005"
|
||||
account10 Retirement:Investment:NPS:SM001005:G
|
||||
amount10 %g_units
|
||||
currency10 "SM001005"
|
||||
|
||||
if %g_value [1-9]
|
||||
& %desc (Billing|Persistency)
|
||||
account8 Equity:Trading:NPS:Billing:INR-SM001005:INR
|
||||
amount8 %g_value
|
||||
account9 Equity:Trading:NPS:Govt:INR-SM001005:SM001005
|
||||
amount9 -%g_units
|
||||
currency9 "SM001005"
|
||||
account10 Retirement:Investment:NPS:SM001005:G
|
||||
amount10 %g_units
|
||||
currency10 "SM001005"
|
||||
|
||||
if %desc Contribution
|
||||
account11 Retirement:Investment:NPS
|
||||
18
examples/csv/nps.csv.sh
Normal file
18
examples/csv/nps.csv.sh
Normal file
@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
# Script to clean Indian National Pension Scheme CSV and import new transactions.
|
||||
# See also nps.csv.rules.
|
||||
|
||||
# Ex: $ ./nps.csv.sh nps_fy20-21.csv
|
||||
# removes all lines before the last 'Date'
|
||||
# substitutes certain descriptions
|
||||
# outputs to a temporary file
|
||||
# runs hledger csv import as a dry-run with nps-transactions.rules.
|
||||
|
||||
cat "$1" \
|
||||
| awk 's{s=s"\n"$0;} /Date/{s=$0;} END{print s;}' \
|
||||
| sed 's/On account of Rebalancing of Assets as per Regulatory Requirement/Rebalancing/g' \
|
||||
| sed 's/To unit redemption - on account of payment of annual persistency charges to POP/POP Persistency Charge/g' \
|
||||
| sed 's/By Voluntary Contributions/Contribution/g' \
|
||||
| sed 's/By Contribution/Contribution/g' \
|
||||
> nps.csv
|
||||
hledger import --dry-run nps.csv
|
||||
Loading…
Reference in New Issue
Block a user