<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.slacky.eu/wikislack/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
		<id>http://www.slacky.eu/wikislack/index.php?title=Conto&amp;feed=atom&amp;action=history</id>
		<title>Conto - Cronologia</title>
		<link rel="self" type="application/atom+xml" href="http://www.slacky.eu/wikislack/index.php?title=Conto&amp;feed=atom&amp;action=history"/>
		<link rel="alternate" type="text/html" href="http://www.slacky.eu/wikislack/index.php?title=Conto&amp;action=history"/>
		<updated>2013-05-26T08:00:27Z</updated>
		<subtitle>Cronologia della pagina su questo sito</subtitle>
		<generator>MediaWiki 1.20.3</generator>

	<entry>
		<id>http://www.slacky.eu/wikislack/index.php?title=Conto&amp;diff=4333&amp;oldid=prev</id>
		<title>Slacky il 15:41, 21 ott 2007</title>
		<link rel="alternate" type="text/html" href="http://www.slacky.eu/wikislack/index.php?title=Conto&amp;diff=4333&amp;oldid=prev"/>
				<updated>2007-10-21T15:41:23Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nuova pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Script]]&lt;br /&gt;
= Descrizione =&lt;br /&gt;
Conto.sh e' un scrip di shell per tenere una semplice contabilità entrate ed uscite (versamenti e prelevamenti). L'elaborazione consente di ottenere i saldi mensili. E' possibile plottare i grafici degli ultimi 240 movimenti e dei saldi degli ultimi 24 mesi.&lt;br /&gt;
= Download =&lt;br /&gt;
http://www.slacky.eu/misto/concorso/mimmoforlug/conto.sh&lt;br /&gt;
= Script =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
######################################################################&lt;br /&gt;
#                                                                    #&lt;br /&gt;
#                  conto.sh (13/09/2007)                             #&lt;br /&gt;
#                                                                    #&lt;br /&gt;
#  conto.sh e' un scrip di shell per tenere una semplice             #&lt;br /&gt;
#  contabilita' entrate ed uscite (versamenti e prelevamenti).        #&lt;br /&gt;
#  L'elaborazione consente di ottenere i saldi mensili.              #&lt;br /&gt;
#  E' possibile plottare i grafici degli ultimi 240 movimenti        #&lt;br /&gt;
#  e dei saldi degli ultimi 24 mesi.                                 #&lt;br /&gt;
#                                                                    #&lt;br /&gt;
#  Dipendenze: bash, sed, awk, gnuplot                               #&lt;br /&gt;
#                                                                    #&lt;br /&gt;
#  Per la portabilita' e' necessario verificare le impostazioni di   #&lt;br /&gt;
#  awk riguardo all'uso del saparatore decimale (virgola o punto)    #&lt;br /&gt;
#  ed eventualmente modificare le righe dalla 209 alla 226.          #&lt;br /&gt;
#                                                                    #&lt;br /&gt;
#  Testato su sistema GNU/Linux Slackware 12                         #&lt;br /&gt;
#  e su familiar linux per PocketPC.                                 #&lt;br /&gt;
#                                                                    #&lt;br /&gt;
#  Autore: Domenico Suppa                                            #&lt;br /&gt;
#                                                                    #&lt;br /&gt;
######################################################################&lt;br /&gt;
&lt;br /&gt;
intestazioni_conto=&amp;quot;OP	DATA      	PRELIEVI	VERSAMENTI	DISPONIBILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
dati=Conto.txt&lt;br /&gt;
saldi_mensili=&amp;quot;mesi_&amp;quot;$dati&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
############ Se il file di dati non esiste viene creato ##############&lt;br /&gt;
if [ ! -e $dati ]; then&lt;br /&gt;
d=`date +%d/%m/%Y`&lt;br /&gt;
echo $intestazioni_conto &amp;gt; $dati&lt;br /&gt;
echo &amp;quot;CON	$d	    0.00	 0.00	   0.00&amp;quot; &amp;gt;&amp;gt; $dati&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
############ I comandi awk necessari per l'elaborazione ##############&lt;br /&gt;
echo &amp;quot;&amp;quot; &amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' BEGIN {' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' FS=&amp;quot;\t+&amp;quot;;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' OFS=&amp;quot;\t&amp;quot;;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' CONVFMT=&amp;quot;%10.2f&amp;quot;;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' OFMT=&amp;quot;%10.2f&amp;quot;;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' saldo=0;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' sm=0;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' da=&amp;quot;&amp;quot;;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' de=&amp;quot;&amp;quot;;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' spm=0;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' svm=0;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' i=0;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' j=0;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' }' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' {' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 	if(j==0){' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 	j++;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 	print $0;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 	}' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 	else{' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 		sp += $3;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 		sv += $4;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 		de=substr($2, length($2)-6);' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 		if(da==de){' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 			spm += $3;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 			svm += $4;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 			sm=svm-spm;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 			i++;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 			' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 		}' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 		else{' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 			if(j&amp;gt;1)printf(&amp;quot;%s\t00/%s\t%8.2f\t%8.2f\t%10.2f\t%10.2f\t%i\n&amp;quot;, &amp;quot;SLM&amp;quot;, da, spm, svm, sm, saldo, i);' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 			spm = $3;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 			svm = $4;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 			sm = svm-spm;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 			i=1;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 			da=de;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 		}' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 		saldo=sv-sp;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 		sp1 = $3; sv1 = $4;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 		printf(&amp;quot;%s\t%s\t%8.2f\t%8.2f\t%10.2f\n&amp;quot;, $1, $2, sp1, sv1, saldo);' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 		j++;' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' 	}' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' }' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' END {' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo '    printf(&amp;quot;%s\t00/%s\t%8.2f\t%8.2f\t%10.2f\t%10.2f\t%i\n&amp;quot;, &amp;quot;SLM&amp;quot;, da, spm, svm, sm, saldo, i);' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
echo ' }' &amp;gt;&amp;gt; elaboraconto-awk.awk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
################## ripuliamo il terminale ############################&lt;br /&gt;
clear&lt;br /&gt;
echo&lt;br /&gt;
&lt;br /&gt;
########## loop principale per l'immissione dei comandi ##############&lt;br /&gt;
while :&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
########################## menu principale ###########################&lt;br /&gt;
echo &amp;quot; n) nuovo movimento&amp;quot;&lt;br /&gt;
echo &amp;quot; l) lista ultimi 20 movimenti&amp;quot;&lt;br /&gt;
echo &amp;quot; e) elaborazione saldi&amp;quot;&lt;br /&gt;
echo &amp;quot; d) elimina ultimo movimento&amp;quot;&lt;br /&gt;
echo &amp;quot; m) lista saldi mensili&amp;quot;&lt;br /&gt;
echo &amp;quot; g) grafici&amp;quot;&lt;br /&gt;
echo &amp;quot; q) uscita&amp;quot;&lt;br /&gt;
echo&lt;br /&gt;
echo &amp;quot;Scegliere una opzione&amp;quot;&lt;br /&gt;
read a &amp;gt; /dev/null&lt;br /&gt;
d=`date +%d/%m/%Y`&lt;br /&gt;
t=&amp;quot;CON&amp;quot;&lt;br /&gt;
case &amp;quot;$a&amp;quot; in&lt;br /&gt;
 N|n)&lt;br /&gt;
&lt;br /&gt;
################# loop per l'immissione dei dati ####################&lt;br /&gt;
  while :&lt;br /&gt;
  do&lt;br /&gt;
&lt;br /&gt;
########################## menu immissione dati #####################&lt;br /&gt;
   echo &amp;quot;c) CONTANTI&amp;quot;&lt;br /&gt;
   echo &amp;quot;o) ONLINE&amp;quot;&lt;br /&gt;
   echo &amp;quot;a) CARTA&amp;quot;&lt;br /&gt;
   echo &amp;quot;s) ASSEGNO&amp;quot;&lt;br /&gt;
   echo &amp;quot;x) ACCREDITO-ADDEBBITO&amp;quot;&lt;br /&gt;
   echo &amp;quot;q) ESCI&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   read s &amp;gt; /dev/null&lt;br /&gt;
   case &amp;quot;$s&amp;quot; in&lt;br /&gt;
&lt;br /&gt;
    C|c)&lt;br /&gt;
     t=&amp;quot;CON&amp;quot;&lt;br /&gt;
    ;;&lt;br /&gt;
    O|o)&lt;br /&gt;
     t=&amp;quot;ONL&amp;quot;&lt;br /&gt;
    ;;&lt;br /&gt;
    A|a)&lt;br /&gt;
     t=&amp;quot;CAR&amp;quot;&lt;br /&gt;
    ;;&lt;br /&gt;
    S|s)&lt;br /&gt;
     t=&amp;quot;ASS&amp;quot;&lt;br /&gt;
    ;;&lt;br /&gt;
    X|x)&lt;br /&gt;
     t=&amp;quot;ACS&amp;quot;&lt;br /&gt;
    ;;&lt;br /&gt;
    Q|q)&lt;br /&gt;
     break&lt;br /&gt;
    ;;&lt;br /&gt;
    *)&lt;br /&gt;
     continue&lt;br /&gt;
    ;;&lt;br /&gt;
   esac&lt;br /&gt;
   echo&lt;br /&gt;
   echo &amp;quot;La data corrente : &amp;quot;$d&lt;br /&gt;
   echo &amp;quot;immettere la data oppure invio&amp;quot;&lt;br /&gt;
   read s &amp;gt; /dev/null&lt;br /&gt;
   if [ &amp;quot;$s&amp;quot; != &amp;quot;&amp;quot; ]&lt;br /&gt;
   then&lt;br /&gt;
    d=$s&lt;br /&gt;
   fi&lt;br /&gt;
   echo&lt;br /&gt;
   echo &amp;quot;V) Versamento&amp;quot;&lt;br /&gt;
   echo &amp;quot;P) Prelevamento&amp;quot;&lt;br /&gt;
   echo &lt;br /&gt;
   echo &amp;quot;Scegliere una opzione&amp;quot;&lt;br /&gt;
   read s&lt;br /&gt;
   case &amp;quot;$s&amp;quot; in&lt;br /&gt;
    V|v)&lt;br /&gt;
     p=&amp;quot;    0.00&amp;quot;&lt;br /&gt;
     echo&lt;br /&gt;
     echo &amp;quot;Immettere importo&amp;quot;&lt;br /&gt;
     read v&lt;br /&gt;
    ;;&lt;br /&gt;
    P|p)&lt;br /&gt;
     v=&amp;quot;    0.00&amp;quot;&lt;br /&gt;
     echo&lt;br /&gt;
     echo &amp;quot;Immettere importo&amp;quot;&lt;br /&gt;
     read p&lt;br /&gt;
    ;;&lt;br /&gt;
   esac&lt;br /&gt;
   echo&lt;br /&gt;
   echo &amp;quot;Tipo         : &amp;quot;$t&lt;br /&gt;
   echo &amp;quot;Data         : &amp;quot;$d&lt;br /&gt;
   echo &amp;quot;Prelevamento : &amp;quot;$p&lt;br /&gt;
   echo &amp;quot;Versamento   : &amp;quot;$v&lt;br /&gt;
   echo&lt;br /&gt;
   echo &amp;quot;Salvare i dati?[Si,No]&amp;quot;&lt;br /&gt;
   read s &amp;gt; /dev/null&lt;br /&gt;
   if [ &amp;quot;$s&amp;quot; != &amp;quot;s&amp;quot; ]&lt;br /&gt;
   then&lt;br /&gt;
    continue&lt;br /&gt;
   fi&lt;br /&gt;
    echo &amp;quot;$t $d $p $v 0.00&amp;quot; | awk '{ print $1&amp;quot;\t&amp;quot;$2&amp;quot;\t&amp;quot;$3&amp;quot;\t&amp;quot;$4&amp;quot;\t&amp;quot;$5}' &amp;gt;&amp;gt; $dati&lt;br /&gt;
  done&lt;br /&gt;
&lt;br /&gt;
 ;;&lt;br /&gt;
&lt;br /&gt;
 L|l) clear; head -1 $dati; tail +2 $dati | tail -20;;&lt;br /&gt;
&lt;br /&gt;
 M|m) cat $saldi_mensili;;&lt;br /&gt;
&lt;br /&gt;
 E|e)&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;elaborazione in corso ... attendere&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;copio $dati in $dati.bk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  cp $dati $dati&amp;quot;.bk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  #nel caso awk riconosca il punto come separatore decimale decommentare&lt;br /&gt;
&lt;br /&gt;
  #cp $dati Conto.vir&lt;br /&gt;
&lt;br /&gt;
  #e commentare il comando seguente&lt;br /&gt;
&lt;br /&gt;
  sed -e 's/\./,/g' $dati &amp;gt; Conto.vir&lt;br /&gt;
  echo &amp;quot;awk su Conto.vir --&amp;gt; Conto2.vir&amp;quot;&lt;br /&gt;
  awk -f elaboraconto-awk.awk Conto.vir &amp;gt; Conto2.vir&lt;br /&gt;
  echo &amp;quot;fine awk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # nel caso awk riconosca il punto come separatore decimale commentare&lt;br /&gt;
&lt;br /&gt;
  sed -e 's/,/\./g' Conto2.vir &amp;gt; Conto.pun;&lt;br /&gt;
&lt;br /&gt;
  # e decommentare la seguente riga&lt;br /&gt;
&lt;br /&gt;
  #mv Conto2.vir Conto.pun&lt;br /&gt;
&lt;br /&gt;
  echo 'OP 	DATA      	PRELEVAM	VERSAMENTI	SALDO_MESE	   SALDO	NOP' &amp;gt; $saldi_mensili&lt;br /&gt;
&lt;br /&gt;
  sed -n /SLM/p Conto.pun &amp;gt;&amp;gt; $saldi_mensili&lt;br /&gt;
&lt;br /&gt;
  sed /SLM/d Conto.pun &amp;gt; $dati&lt;br /&gt;
&lt;br /&gt;
  rm Conto.pun Conto.vir Conto2.vir&lt;br /&gt;
&lt;br /&gt;
  echo;echo &amp;quot;elaborazione terminata&amp;quot;&lt;br /&gt;
 ;;&lt;br /&gt;
 D|d)&lt;br /&gt;
  echo&lt;br /&gt;
  echo `tail -1 $dati`&lt;br /&gt;
  echo &amp;quot;Cancellare la riga?[Si,No]&amp;quot;&lt;br /&gt;
  read s &amp;gt; /dev/null&lt;br /&gt;
  if [ &amp;quot;$s&amp;quot; != &amp;quot;s&amp;quot; ]&lt;br /&gt;
  then&lt;br /&gt;
   continue&lt;br /&gt;
  fi&lt;br /&gt;
   echo &amp;quot;cancellazione del'ultima riga in corso ...&amp;quot;&lt;br /&gt;
   s=`wc -l $dati | sed -e 's/^\ *//' | sed -e 's/\ .*$//'`&lt;br /&gt;
   sed ${s}d $dati &amp;gt; $dati&amp;quot;.bk&amp;quot;&lt;br /&gt;
   cp $dati&amp;quot;.bk&amp;quot; $dati&lt;br /&gt;
 ;;&lt;br /&gt;
 G|g)&lt;br /&gt;
   # comandi per il tracciamento dei grafici&lt;br /&gt;
   cut -f5 $dati | sed /[A-z].*/d | tail -240 &amp;gt; gcbp&lt;br /&gt;
   cut -f6 $saldi_mensili | sed /[A-z].*/d | tail -24 &amp;gt; mcbp&lt;br /&gt;
   echo &amp;quot;Saldi degli ultimi 240 movimenti e saldi mensili&amp;quot;&lt;br /&gt;
   echo &amp;quot;Fare click sul grafico per continuare&amp;quot;&lt;br /&gt;
   echo 'plot &amp;quot;gcbp&amp;quot; title &amp;quot;Conto&amp;quot; with linesp lt 0 lw 2 pt 3' &amp;gt; plot&lt;br /&gt;
   echo 'pause mouse' &amp;gt;&amp;gt; plot&lt;br /&gt;
   echo 'plot &amp;quot;mcbp&amp;quot; title &amp;quot;saldo mensile&amp;quot; with impulses lt 2 lw 5' &amp;gt;&amp;gt; plot&lt;br /&gt;
   echo 'pause mouse' &amp;gt;&amp;gt; plot&lt;br /&gt;
   gnuplot plot&lt;br /&gt;
   rm mcbp gcbp plot&lt;br /&gt;
 ;;&lt;br /&gt;
 Q|q)&lt;br /&gt;
      rm elaboraconto-awk.awk;&lt;br /&gt;
      exit;;&lt;br /&gt;
   *) continue;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Premere invio per continuare&amp;quot;&lt;br /&gt;
read a &amp;gt; /dev/null&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
############################## Fine ##################################&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Dipendenze:  bash, sed, awk, gnuplot&lt;br /&gt;
* Data: 21/10/2007&lt;br /&gt;
* Autore: Mimmoforlug&lt;/div&gt;</summary>
		<author><name>Slacky</name></author>	</entry>

	</feed>