#!/bin/bash2
# Petit script permettant de contrler l'intgrit d'un fichier
# reus par disquette, de Postfinance.
#
# (Utilise bash2 avec les tableaux)
#
# ``calc'' est prsent dans mon ``.bashrc'' utile;) 
calc() { 
    echo "
    scale=30
    pi=4*a(1)
    $@
    " | bc -l
}
#
# Totaliser les montants
sumarize() {
	export total=0 tot2=0 num=0
	grep ^0 $1 | while read a
		do val=$(calc ${a:40:9})
#		# Calcul du prix et du nombre d'oprations
		export tot2=$(calc $tot2+${a:97:3}) num=$(($num+1))
		case ${a:2:1} in
#			# Si xx2 credit ou xx8 rectification 
			2|8)  total=$(calc $total+$val) ;;
#			# Si xx5 contre-ecriture
			5) export total=$(calc $total-$val) ;;
		esac
		echo $total  $tot2 $num
	done |tail -n1
}

sum=($(sumarize $1))  # recoit:  montant total, prix total, nombre

# La date faisant rfrence dans la ligne de total EST la date des
# oprations, SOIT LA date du fichier.
dat=$(find $1 -printf "%Ty%Tm%Td")

maligne=$(printf \
	"999010443787999999999999999999999999999%012d%012d%06d%09d%09d" \
	${sum[0]} ${sum[2]} $dat ${sum[1]} 0)
saligne=$(echo -en `grep ^999 $1`)
if [ "${saligne:0:87}" ==  "$maligne" ]
	then echo Les lignes concordent.
		exit 0
	else echo -e "Attention\041\n'$saligne'"
		echo "ne correspond pas \n'$maligne'"
		exit 1
	fi

