X-Git-Url: https://git.infodrom.org/?p=infodrom%2Fdtaus;a=blobdiff_plain;f=dtaus.c;h=4a8851613dd894cc6d5ee6e369c7992e2511677d;hp=e533b6738c3556c23d422528f7218924ef85c045;hb=9b4d285a11a61180100f2931c5dc6e5ebcca9ca4;hpb=17a77b96bc84a5e310cebf990cce40c83ea3b3fd diff --git a/dtaus.c b/dtaus.c index e533b67..4a88516 100644 --- a/dtaus.c +++ b/dtaus.c @@ -27,6 +27,7 @@ #include #include #include +#include "latex.h" #define DEFAULT_EURO #ifndef DEFAULT_EURO @@ -66,7 +67,7 @@ dtaus_record recA[] = { {"Currency", 127, 1, OPT}, {"Euro", 127, 1, OPT}, {"DM", 127, 1, OPT}, - {NULL, 0, 0} + {NULL, 0, 0, 0} }; #define A_TRANS 0 @@ -104,7 +105,7 @@ dtaus_record recC[] = { #else {"Betrag-DM", 50, 11, IGN}, #endif - {NULL, 0, 0} + {NULL, 0, 0, 0} }; #define C_NAME 0 @@ -143,7 +144,7 @@ dtaus_record recE[] = { #else {"Summe-DM", 17, 13, IGN}, #endif - {NULL, 0, 0} + {NULL, 0, 0, 0} }; #define E_COUNT 0 @@ -273,6 +274,7 @@ char *real2string(char *s) { static char res[20]; char *cp; + char *xp; /* only to avoid a GCC warning */ strncpy(res, s, sizeof(res)-1); res[sizeof(res)-1] = 0; @@ -287,13 +289,15 @@ char *real2string(char *s) if (*cp == '.' || *cp == ',') { if (*(cp+1)) { /* 1st decimal place */ - if (isdigit(*(cp+1))) - *(cp++) = *(cp+1); + xp = cp+1; + if (*xp && isdigit(*xp)) + *(cp++) = *xp; else *(cp++) = '0'; /* 2nd decimal place */ - if (*(cp+1) && isdigit(*(cp+1))) - *(cp++) = *(cp+1); + xp = cp+1; + if (*xp && isdigit(*xp)) + *(cp++) = *xp; else *(cp++) = '0'; } else { @@ -1116,13 +1120,12 @@ void dtaus2control (char *cdtaus, char *ccontrol) fclose(fdtaus); } -int control2dtaus (char *ccontrol, char *cdtaus, char *cbeleg, char *ccheck) +int control2dtaus (char *ccontrol, char *cdtaus, char *cbeleg, char *ccheck, char *latex) { FILE *fdtaus, *fcontrol, *fbeleg, *fcheck; void *buf; char *ident; int recindex; - char tmp[30]; char line[100]; char *valA[A_LEN], *valC[C_LEN]; int count; @@ -1131,6 +1134,10 @@ int control2dtaus (char *ccontrol, char *cdtaus, char *cbeleg, char *ccheck) char *cp; int textindex = 0; int len, i; + char *type = NULL; + char *currency = NULL; + char date_todo[11]; + char ssum_val[30], ssum_kto[30], ssum_blz[30]; if (!cdtaus) { if (!(fdtaus = fopen("dtaus0.txt", "w"))) @@ -1194,24 +1201,33 @@ int control2dtaus (char *ccontrol, char *cdtaus, char *cbeleg, char *ccheck) control_nextline ((void *)line, 100, fcontrol); } if (((recindex = rec_index("art", REC_A)) != -1) && valA[recindex] && strlen(valA[recindex])) { - fprintf(fbeleg, "\n\n"); - fprintf(fbeleg, "\n Begleitzettel\n\n"); - fprintf(fbeleg, "\n Belegloser Datentraegeraustausch\n\n"); if (valA[recindex][0] == 'L') - fprintf(fbeleg, "\n Sammeleinziehungsauftrag\n\n"); + type = strdup ("Sammeleinziehungsauftrag"); else if (valA[recindex][0] == 'G') - fprintf(fbeleg, "\n Sammelueberweisungsauftrag\n\n"); + type = strdup ("Sammelueberweisungsauftrag"); + else + type = strdup ("Sammelauftrag"); + + if (use_euro) + currency = strdup ("Euro"); + else + currency = strdup ("DM"); + + if (valA[A_TODO]) + sprintf (date_todo, valA[A_TODO]); else - fprintf(fbeleg, "\n Sammelauftrag\n\n"); + memset (date_todo, 0, sizeof (date_todo)); + + fprintf(fbeleg, "\n\n"); + fprintf(fbeleg, "\n Begleitzettel\n\n"); + fprintf(fbeleg, "\n Belegloser Datentraegeraustausch\n\n"); + fprintf(fbeleg, "\n %s\n\n", type); fprintf(fbeleg, "\n VOL ........................:\n"); fprintf(fbeleg, "\n Erstellungsdatum ...........: %s\n", get_date()); - if (valA[A_TODO]) { - fprintf(fbeleg, "\n Ausfuehrungsdatum ..........: %s\n", valA[A_TODO]); + if (date_todo) { + fprintf(fbeleg, "\n Ausfuehrungsdatum ..........: %s\n", date_todo); } - if (use_euro) - fprintf(fbeleg, "\n Waehrung ...................: Euro\n"); - else - fprintf(fbeleg, "\n Waehrung ...................: DM\n"); + fprintf(fbeleg, "\n Waehrung ...................: %s\n", currency); } if (!dtaus_writeA(fdtaus, valA)) { fprintf (stderr, "Konnte den Anfangsdatensatz nicht schreiben.\n"); @@ -1284,7 +1300,7 @@ int control2dtaus (char *ccontrol, char *cdtaus, char *cbeleg, char *ccheck) /* Convert commast to dots for later processing */ for (i=0; line[i]; i++) if (line[i] == ',') line[i] = '.'; - if ((cp = index (line, '.')) == NULL) { + if ((cp = strchr (line, '.')) == NULL) { if (!(valC[recindex] = (char *)malloc (strlen(line)+4))) return 0; sprintf (valC[recindex], "%s.00", line); @@ -1334,23 +1350,30 @@ int control2dtaus (char *ccontrol, char *cdtaus, char *cbeleg, char *ccheck) */ dtaus_writeE(fdtaus, count, sum_val, sum_blz, sum_kto); fprintf (fcheck, " --------------------------------------------------------------------\n"); - bigint_sprintf (tmp, "%s", sum_val); fprintf (fbeleg, "\n Anzahl .....................: %d\n", count); - recindex=strlen(tmp); - tmp[recindex+1] = '\0'; - tmp[recindex] = tmp[recindex-1]; - tmp[recindex-1] = tmp[recindex-2]; - tmp[recindex-2] = '.'; - fprintf (fcheck, " %-52s %14s\n", "Summe", tmp); - fprintf (fbeleg, "\n Summe ......................: %s\n", tmp); - bigint_sprintf (tmp, "%s", sum_kto); - fprintf (fbeleg, "\n Kontrollsumme Kontonummern .: %s\n", tmp); - bigint_sprintf (tmp, "%s", sum_blz); - fprintf (fbeleg, "\n Kontrollsumme Bankleitzahlen: %s\n", tmp); + bigint_sprintf (ssum_val, "%s", sum_val); + recindex=strlen(ssum_val); + ssum_val[recindex+1] = '\0'; + ssum_val[recindex] = ssum_val[recindex-1]; + ssum_val[recindex-1] = ssum_val[recindex-2]; + ssum_val[recindex-2] = '.'; + fprintf (fcheck, " %-52s %14s\n", "Summe", ssum_val); + fprintf (fbeleg, "\n Summe ......................: %s\n", ssum_val); + bigint_sprintf (ssum_kto, "%s", sum_kto); + fprintf (fbeleg, "\n Kontrollsumme Kontonummern .: %s\n", ssum_kto); + bigint_sprintf (ssum_blz, "%s", sum_blz); + fprintf (fbeleg, "\n Kontrollsumme Bankleitzahlen: %s\n", ssum_blz); fprintf (fbeleg, "\n Unsere Kontonummer .........: %s\n", valA[A_KTO]); fprintf (fbeleg, "\n Unsere Bankleitzahl ........: %s\n", valA[A_BLZ]); fprintf (fbeleg, "\n\n\n\n\n __________________________________________________\n"); fprintf (fbeleg, " Ort, Datum Unterschrift\n"); + + if (latex) + generate_latex_receipt (latex, type, get_date(), date_todo, + currency, count, + ssum_val, ssum_kto, ssum_blz, + valA[A_KTO], valA[A_BLZ]); + for (recindex=0; recindex