forked from EvergreenCrypto/docker-finance
hledger-flow: add support for AdaLite
This commit is contained in:
79
container/src/hledger-flow/accounts/adalite/adalite-shared.bash
Executable file
79
container/src/hledger-flow/accounts/adalite/adalite-shared.bash
Executable file
@@ -0,0 +1,79 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# docker-finance | modern accounting for the power-user
|
||||
#
|
||||
# Copyright (C) 2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
#
|
||||
# "Libraries"
|
||||
#
|
||||
|
||||
[ -z "$DOCKER_FINANCE_CONTAINER_REPO" ] && exit 1
|
||||
source "${DOCKER_FINANCE_CONTAINER_REPO}/src/hledger-flow/lib/lib_preprocess.bash" "$1" "$2"
|
||||
|
||||
#
|
||||
# Implementation
|
||||
#
|
||||
|
||||
[ -z "$global_year" ] && exit 1
|
||||
[ -z "$global_subaccount" ] && exit 1
|
||||
|
||||
[ -z "$global_in_path" ] && exit 1
|
||||
[ -z "$global_out_path" ] && exit 1
|
||||
|
||||
function parse()
|
||||
{
|
||||
lib_preprocess::assert_header "Date,Transaction ID,Type,Received from (disclaimer: may not be accurate - first sender address only),Received amount,Received currency,Sent amount,Sent currency,Fee amount,Fee currency,"
|
||||
|
||||
gawk -v global_year="$global_year" -v global_subaccount="$global_subaccount" \
|
||||
'{
|
||||
if (NR<2 || $1 !~ global_year)
|
||||
next
|
||||
|
||||
# Format: MM/DD/YYYY HH:MM PM UTC
|
||||
timestamp=substr($1, 1, 19) # Remove tail ("UTC")
|
||||
sub(/ /, "Z", timestamp) # Replace first space
|
||||
sub(/ /, "", timestamp) # Remove remaining space
|
||||
|
||||
# Get/set date format
|
||||
cmd = "date \"+%F %T %z\" --utc --date="timestamp | getline date
|
||||
|
||||
printf date OFS # Date (timestamp)
|
||||
printf $2 OFS # Transaction ID
|
||||
printf $3 OFS # Type
|
||||
printf $4 OFS # Received from (disclaimer: may not be accurate - first sender address only)
|
||||
printf $5 OFS # Received amount
|
||||
printf $6 OFS # Received currency
|
||||
printf $7 OFS # Sent amount
|
||||
printf $8 OFS # Sent currency
|
||||
printf $9 OFS # Fee amount
|
||||
printf $10 OFS # Fee currency
|
||||
|
||||
printf ($7 ~ /[1-9]/ ? "OUT" : "IN") OFS # Direction
|
||||
printf global_subaccount
|
||||
|
||||
printf "\n"
|
||||
}' FS=, OFS=, "$global_in_path" | tac >"$global_out_path"
|
||||
}
|
||||
|
||||
function main()
|
||||
{
|
||||
parse
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
# vim: sw=2 sts=2 si ai et
|
||||
@@ -0,0 +1,48 @@
|
||||
# docker-finance | modern accounting for the power-user
|
||||
#
|
||||
# Copyright (C) 2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
fields timestamp,txid,type,from_address,from_amount,from_currency,to_amount,to_currency,fee_amount,fee_currency,direction,subaccount
|
||||
|
||||
date-format %Y-%m-%d %H:%M:%S %z
|
||||
date %timestamp
|
||||
|
||||
description %timestamp
|
||||
|
||||
comment type:%type, txid:%txid, direction:%direction
|
||||
|
||||
# Default equity transfer
|
||||
if %direction ^IN$
|
||||
account1 assets:adalite:%subaccount:%from_currency
|
||||
amount %from_amount %from_currency
|
||||
account2 equity:adalite:%subaccount:withdrawal:%from_currency
|
||||
|
||||
# Default expense
|
||||
if %direction ^OUT$
|
||||
account1 assets:adalite:%subaccount:%to_currency
|
||||
amount -%to_amount %to_currency
|
||||
account2 expenses:adalite:%subaccount:%to_currency
|
||||
|
||||
if %direction ^OUT$
|
||||
& %fee_amount [1-9]
|
||||
account3 assets:adalite:%subaccount:%fee_currency
|
||||
amount3 -%fee_amount %fee_currency
|
||||
account4 expenses:adalite:%subaccount:fees:%fee_currency
|
||||
comment type:%type, txid:%txid, direction:%direction, taxed_as:SPEND
|
||||
comment3 %timestamp,SPEND,adalite,%fee_currency,%fee_amount,USD,,FEE
|
||||
# Using comment3 so a comment2 SPEND isn't overwritten (when applicable)
|
||||
|
||||
# vim: sw=2 sts=2 si ai et
|
||||
23
container/src/hledger-flow/accounts/adalite/template/adalite-shared.bash
Executable file
23
container/src/hledger-flow/accounts/adalite/template/adalite-shared.bash
Executable file
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# docker-finance | modern accounting for the power-user
|
||||
#
|
||||
# Copyright (C) 2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
[ -z "$DOCKER_FINANCE_CONTAINER_REPO" ] && exit 1
|
||||
source "${DOCKER_FINANCE_CONTAINER_REPO}/src/hledger-flow/accounts/adalite/adalite-shared.bash"
|
||||
|
||||
# vim: sw=2 sts=2 si ai et
|
||||
@@ -0,0 +1,20 @@
|
||||
# docker-finance | modern accounting for the power-user
|
||||
#
|
||||
# Copyright (C) 2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
include ../../../../../src/accounts/adalite/adalite-shared.rules
|
||||
|
||||
# vim: sw=2 sts=2 si ai et
|
||||
@@ -0,0 +1,3 @@
|
||||
Date,Transaction ID,Type,Received from (disclaimer: may not be accurate - first sender address only),Received amount,Received currency,Sent amount,Sent currency,Fee amount,Fee currency,
|
||||
02/02/2023 12:34 PM UTC,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,Sent,,,,12.345678,ADA,0.123456,ADA,
|
||||
02/02/2023 01:23 AM UTC,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0,Received,addr1qXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,101.234567,ADA,,,,,
|
||||
|
@@ -0,0 +1,3 @@
|
||||
Date,Transaction ID,Type,Received from (disclaimer: may not be accurate - first sender address only),Received amount,Received currency,Sent amount,Sent currency,Fee amount,Fee currency,
|
||||
02/02/2023 12:34 PM UTC,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,Sent,,,,12.345678,ADA,0.123456,ADA,
|
||||
02/02/2023 01:23 AM UTC,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0,Received,addr1qXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,101.234567,ADA,,,,,
|
||||
|
@@ -0,0 +1,3 @@
|
||||
Date,Transaction ID,Type,Received from (disclaimer: may not be accurate - first sender address only),Received amount,Received currency,Sent amount,Sent currency,Fee amount,Fee currency,
|
||||
02/02/2023 12:34 PM UTC,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,Sent,,,,12.345678,ADA,0.123456,ADA,
|
||||
02/02/2023 01:23 AM UTC,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0,Received,addr1qXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,101.234567,ADA,,,,,
|
||||
|
@@ -0,0 +1,20 @@
|
||||
# docker-finance | modern accounting for the power-user
|
||||
#
|
||||
# Copyright (C) 2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
include ../../adalite-shared.rules
|
||||
|
||||
# vim: sw=2 sts=2 si ai et
|
||||
@@ -0,0 +1 @@
|
||||
../../adalite-shared.bash
|
||||
Reference in New Issue
Block a user