Last active
November 19, 2021 13:51
-
-
Save esensar/f27f975d34049695d695eae1c7cd1583 to your computer and use it in GitHub Desktop.
FBiH tax form generation script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
usage () { | |
echo "Welcome to AMS 1035 Form generator!" | |
echo "This tool uses services provided by https://lab.itbase.ba" | |
echo "" | |
echo "Usage: generate_ams_form [OPTIONS]" | |
echo "NOTE: All options are required unless otherwise stated!" | |
echo "Options:" | |
echo " --first-name pass first name of user" | |
echo " --last-name pass last name of user" | |
echo " --user-address pass address of user" | |
echo " --jmbg pass JMBG of user" | |
echo " --client-name pass name of client" | |
echo " --client-address pass address of client" | |
echo " --client-country pass country of client" | |
echo " --invoice-date pass date (YYYY-MM-DD) of invoice" | |
echo " --invoice-month pass month (YYYY-MM) of tax payment" | |
echo " --amount pass amount in BAM received (conversion is based on rate on the day of invoice)" | |
echo " --deduction tax deduction (usually 20%, should be 30% for authoring) - OPTIONAL" | |
echo " --tax-breakdown instead of providing PDF form, provides tax breakdown in plain text (requires jq)" | |
echo " -o | --output output file name - OPTIONAL - stdout by default" | |
} | |
required () { | |
VARIABLE=$1 | |
if [[ -z ${!VARIABLE} ]]; then | |
echo "Missing parameter: $VARIABLE" && exit 1; | |
fi | |
} | |
DEDUCTION=20 | |
OUTPUT_FILE_NAME="" | |
TAX_BREAKDOWN=0 | |
while [ $# -gt 0 ]; do | |
case "$1" in | |
--first-name ) FIRST_NAME=${2%/}; shift ;; | |
--last-name ) LAST_NAME=${2%/}; shift ;; | |
--user-address ) USER_ADDRESS=${2%/}; shift ;; | |
--jmbg ) JMBG=${2%/}; shift ;; | |
--client-name ) CLIENT_NAME=${2%/}; shift ;; | |
--client-address ) CLIENT_ADDRESS=${2%/}; shift ;; | |
--client-country ) CLIENT_COUNTRY=${2%/}; shift ;; | |
--invoice-date ) INVOICE_DATE=${2%/}; shift ;; | |
--invoice-month ) INVOICE_MONTH=${2%/}; shift ;; | |
--amount ) AMOUNT=${2%/}; shift ;; | |
--deduction ) DEDUCTION=${2%/} ; shift ;; | |
--tax-breakdown ) TAX_BREAKDOWN=1 ;; | |
-o | --output ) OUTPUT_FILE_NAME=${2%/} ; shift ;; | |
-h | --help ) usage && exit 0 ;; | |
* ) usage && exit 1 ;; | |
esac | |
shift | |
done | |
required FIRST_NAME | |
required LAST_NAME | |
required USER_ADDRESS | |
required JMBG | |
required CLIENT_NAME | |
required CLIENT_ADDRESS | |
required CLIENT_COUNTRY | |
required INVOICE_DATE | |
required INVOICE_MONTH | |
required AMOUNT | |
load () { | |
URL_SUFFIX="" | |
if [ $TAX_BREAKDOWN -eq 1 ]; then | |
URL_SUFFIX="/api" | |
fi | |
COMMAND='curl "https://lab.itbase.ba$URL_SUFFIX/ams?userFirstName=$FIRST_NAME&userLastName=$LAST_NAME&userAddress=$USER_ADDRESS&userJmbg=$JMBG&clientName=$CLIENT_NAME&clientAddress=$CLIENT_ADDRESS&clientCountry=$CLIENT_COUNTRY&invoiceDate=$INVOICE_DATE&invoiceMonth=$INVOICE_MONTH&amount1=$AMOUNT&payedAbroad1=false&deduction1=$DEDUCTION"' | |
if [ $TAX_BREAKDOWN -eq 1 ]; then | |
RESULT=$(eval $COMMAND) | |
TAX=$(echo $RESULT | jq '.tax') | |
HEALTH_CANTON=$(echo $RESULT | jq '.taxK') | |
HEALTH_FEDERATION=$(echo $RESULT | jq '.taxF') | |
echo "Tax breakdown:" | |
echo "" | |
echo "Income tax: $TAX KM" | |
echo "Health insurance (Canton): $HEALTH_CANTON KM" | |
echo "Health insurance (Federation): $HEALTH_FEDERATION KM" | |
else | |
eval $COMMAND | |
fi | |
} | |
if [[ -z "$OUTPUT_FILE_NAME" ]]; then | |
load | |
else | |
load > $OUTPUT_FILE_NAME | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment