155 lines
2.3 KiB
Plaintext
155 lines
2.3 KiB
Plaintext
## import "menue.x"
|
|
|
|
# define MAX_AUSZUG 20
|
|
|
|
struct auszug
|
|
{
|
|
long a_datum;
|
|
short a_betrag;
|
|
short a_no_grund;
|
|
};
|
|
|
|
auszug()
|
|
{
|
|
char buf[36];
|
|
|
|
while (!input(11, buf))
|
|
pr_kunde();
|
|
konto = atol(buf);
|
|
pr_auszug();
|
|
}
|
|
|
|
|
|
auszuege()
|
|
{
|
|
register int cnt;
|
|
|
|
for ( ; ; )
|
|
{
|
|
cnt = 0;
|
|
## retrieve buchung
|
|
## (
|
|
## konto = $konto
|
|
## )
|
|
## {
|
|
cnt++;
|
|
break;
|
|
## }
|
|
if (!cnt)
|
|
return;
|
|
pr_auszug();
|
|
}
|
|
}
|
|
|
|
|
|
pr_auszug()
|
|
{
|
|
register struct auszug **ap;
|
|
register struct auszug *a;
|
|
register int i;
|
|
register int j;
|
|
struct auszug abuf[MAX_AUSZUG];
|
|
struct auszug *apbuf[MAX_AUSZUG];
|
|
extern int cmpa();
|
|
extern char *ctime();
|
|
|
|
if (get_konto())
|
|
{
|
|
error("ungueltige Kontonummer");
|
|
return;
|
|
}
|
|
get_bank();
|
|
get_kunde();
|
|
get_name();
|
|
get_vorname();
|
|
get_str();
|
|
get_ort();
|
|
cls(1, 1, 25, 80);
|
|
on_revers();
|
|
cursor(1, 1);
|
|
for (i = 0; i < 80; i++)
|
|
putchar(' ');
|
|
cursor(2, 1);
|
|
for (i = 0; i < 80; i++)
|
|
putchar(' ');
|
|
cursor(1, 1);
|
|
printf("KONTOAUSZUG #%ld# %s %s", konto, bank, ctime(&datum));
|
|
cursor(2, 1);
|
|
printf("NEUER SALDO %ld", saldo);
|
|
off_revers();
|
|
cursor(3, 1);
|
|
on_bold();
|
|
printf("%s, %s aus %s %s, %d", name, vorname, str, ort, plz);
|
|
off_bold();
|
|
i = 0;
|
|
a = abuf;
|
|
ap = apbuf;
|
|
## use (+buchung)
|
|
## retrieve buchung $konto == konto
|
|
## (
|
|
## datum = $datum,
|
|
## betrag = $betrag,
|
|
## no_grund = $no_grund
|
|
## )
|
|
## {
|
|
a->a_datum = datum;
|
|
a->a_betrag = betrag;
|
|
a->a_no_grund = no_grund;
|
|
*ap++ = a++;
|
|
## delete
|
|
if (i++ == MAX_AUSZUG)
|
|
break;
|
|
## }
|
|
## commit
|
|
if (!i)
|
|
{
|
|
error("keine Kontoauszuege vorhanden");
|
|
goto done;
|
|
}
|
|
qsort(apbuf, i, sizeof (struct auszug *), cmpa);
|
|
on_revers();
|
|
cursor(4, 1);
|
|
for (j = 0; j < 80; j++)
|
|
putchar(' ');
|
|
cursor(4, 1);
|
|
printf("UMSAETZE %-35s BUCHUNGSDATUM", "BUCHUNGSTEXT");
|
|
off_revers();
|
|
cursor(5, 1);
|
|
ap = apbuf;
|
|
while (i--)
|
|
{
|
|
a = *ap++;
|
|
no_grund = a->a_no_grund;
|
|
get_grund();
|
|
if (!plus)
|
|
on_blinking();
|
|
printf("%8d", a->a_betrag);
|
|
if (!plus)
|
|
off_blinking();
|
|
printf(" %-35s %s", grund, ctime(&a->a_datum));
|
|
a++;
|
|
}
|
|
done:
|
|
if (Batch)
|
|
return;
|
|
cursor(2, 60);
|
|
on_revers();
|
|
on_blinking();
|
|
printf("continue<enter>");
|
|
off_blinking();
|
|
off_revers();
|
|
fflush(stdout);
|
|
while ((i = getchar()) > 0 && i != '\n')
|
|
continue;
|
|
}
|
|
|
|
|
|
cmpa(a, b)
|
|
register struct auszug *a;
|
|
register struct auszug *b;
|
|
{
|
|
if (a->a_datum == b->a_datum)
|
|
return (0);
|
|
return (a->a_datum < b->a_datum);
|
|
}
|