Skip to content

Instantly share code, notes, and snippets.

@esensar
Last active November 19, 2021 13:51
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save esensar/f27f975d34049695d695eae1c7cd1583 to your computer and use it in GitHub Desktop.
Save esensar/f27f975d34049695d695eae1c7cd1583 to your computer and use it in GitHub Desktop.
FBiH tax form generation script
#!/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