]> git.sur5r.net Git - c128-kasse/blobdiff - src/kasse.c
log deposits and new credits to printer
[c128-kasse] / src / kasse.c
index 64bb176a504395bf8f620b4595ad34cb7cae8912..19b9b18e93c81d22ce8b9feba8c1ecf1789f6c38 100644 (file)
@@ -106,26 +106,34 @@ 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) {
-       BYTE c;
+static void print_log(char *name, int item_price, int einheiten, char *nickname, char *rest) {
        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);
                exit(1);
        }
-               
-       sprintf(print_buffer, "%c[%lu] %s - %s - %s - %d - an %s\r",  17,
-                       items_sold, time, name, price, 
+
+       sprintf(print_buffer, "%c[%lu] %s - %-9s - %s - r %s - %d - an %s\r",  17,
+                       items_sold, time, name, price, rest,
                        einheiten, (*nickname != '\0' ? nickname : "Unbekannt"));
+       print_the_buffer();
+}
+
+void print_the_buffer() {
+       BYTE c;
 RETRY:
        c = cbm_open((BYTE)4, (BYTE)4, (BYTE)0, NULL);
        if (c != 0) {
@@ -158,8 +166,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 +214,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 +240,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;
 }