]> git.sur5r.net Git - c128-kasse/commitdiff
log the remaining credits
authorMichael Stapelberg <michael@stapelberg.de>
Sat, 31 Oct 2009 11:21:11 +0000 (12:21 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Sat, 31 Oct 2009 11:21:11 +0000 (12:21 +0100)
src/general.c
src/kasse.c

index 8a9041d9b66905b8c406d89c9b5493d2cf5a600e..3708d46d6d216444eae7085b5398c2ccb8f8225a 100644 (file)
@@ -42,7 +42,7 @@ char *format_euro(char *s, int maxlen, int cent){
        if (len >= maxlen)
                return NULL;
        // workaround to produce a leading zero for cents.. %0.2d won't work 
-       sprintf(s, "%d,%s%dEUR", cent / 100, ((cent%100)<10?"0":""), cent % 100);
+       sprintf(s, "%2d,%s%dEUR", cent / 100, ((cent%100)<10?"0":""), cent % 100);
        return s;
 }
 
index b1ac476035fba04c3277810abaaea181a6dd3493..f286d0c306bd9250e03c2475e13f85fc1a8836e6 100644 (file)
@@ -106,17 +106,21 @@ static char retry_or_quit() {
 }
 
 /* Prints a line and logs it to file */
-static void print_log(char *name, int item_price, int einheiten, char *nickname) {
+static void print_log(char *name, int item_price, int einheiten, char *nickname, char *rest) {
        BYTE c;
        char *time = get_time();
        char price[10];
        /* Format: 
-          Transaction-ID (Anzahl verkaufter Einträge, inklusive des zu druckenden!)
-          Uhrzeit
-          Eintragname (= Getränk)
-          Preis (in Cents)
-          Anzahl
-          Nickname (falls es vom Guthaben abgezogen wird)
+          Transaction-ID (Anzahl verkaufter Einträge, inklusive des zu druckenden!) -- 6-stellig
+          Uhrzeit -- 8-stellig
+          Eintragname (= Getränk) -- 9-stellig
+          Preis (in Cents) -- 7-stellig
+          Anzahl -- 2-stellig
+          Nickname (falls es vom Guthaben abgezogen wird) -- 10-stellig
+          restguthaben (9-stellig)
+
+          + 7 leerzeichen
+          --> 48 zeichen
           */
        if (format_euro(price, 10, item_price) == NULL) {
                cprintf("Preis %d konnte nicht umgerechnet werden\r\n", item_price);
@@ -158,8 +162,12 @@ BYTE buy(char *name, unsigned int price) {
        int einheiten;
        char *input;
        char nickname[11];
+       char rest[9];
        struct credits_t *credit;
 
+       memset(rest, ' ', sizeof(rest));
+       rest[8] = '\0';
+
        cprintf("Wieviel Einheiten \"%s\"? [1] \r\n", name);
        while (1) {
                c = getchar();
@@ -202,10 +210,16 @@ BYTE buy(char *name, unsigned int price) {
                        }
                        /* substract money */
                        credit->credit -= (price * einheiten);
-                       cprintf("\r\nVerbleibendes Guthaben fuer %s: %d Cents. Druecke RETURN...\r\n",
-                               nickname, credit->credit);
+
+                       if (format_euro(rest, 10, credit->credit) == NULL) {
+                               cprintf("Preis %d konnte nicht umgerechnet werden\r\n", credit->credit);
+                               exit(1);
+                       }
+
+                       cprintf("\r\nVerbleibendes Guthaben fuer %s: %s. Druecke RETURN...\r\n",
+                               nickname, rest);
                        toggle_videomode();
-                       cprintf("\r\nDein verbleibendes Guthaben betraegt %d Cents.\r\n", credit->credit);
+                       cprintf("\r\nDein verbleibendes Guthaben betraegt %s.\r\n", rest);
                        toggle_videomode();
                        get_input();
                        matches++;
@@ -222,7 +236,7 @@ BYTE buy(char *name, unsigned int price) {
        money += price * einheiten;
        items_sold += einheiten;
        if (printing == 1)
-               print_log(name, price, einheiten, nickname);
+               print_log(name, price, einheiten, nickname, rest);
 
        return einheiten;
 }