Finally added support for half typed date strings which really should
[infodrom.org/service.infodrom.org] / src / InfoCon / buch / infocon
index 8410a65..da37618 100755 (executable)
@@ -143,7 +143,7 @@ sub sales_list
        printf " Zahlungsausgänge                                       %9.2f\n", -$sum_neg
            if ($sum_neg > 0);
        print "==================================================================\n";
-       printf " Summe                                                  %9.2f\n", $sum_pos - $sum_neg;
+       printf " Summe                                                  %9.2f\n\n", $sum_pos - $sum_neg;
     }
 }
 
@@ -219,6 +219,8 @@ sub buchung_input
     my $weiter = 'y';
     my $i;
     my $query;
+    my ($date_sec,$date_min,$date_hour,$date_mday,$date_mon,$date_year,$date_wday,$date_isdst)
+       = localtime();
 
     print "Buchungseingabe\n\n";
     while ($weiter =~ /[JjYy]/) {
@@ -227,6 +229,19 @@ sub buchung_input
            if ($fieldname[$i] eq "Category" && $ans eq "?") {
                @categories = &get_categories() if ($#categories);
                printf "  %s\n", join (", ",@categories);
+           } elsif ($fieldname[$i] eq "Datum") {
+               if ($ans =~ /^\d+\.\d+.\d+$/) {
+                   $input[$i] = $ans;
+                   $i++;
+               } elsif ($ans =~ /^\d+\.\d+.$/) {
+                   $ans .= $date_year + 1900;
+                   $input[$i] = $ans;
+                   $i++;
+               } elsif ($ans =~ /^\d+\.$/) {
+                   $ans .= sprintf ("%d.%d", $date_mon + 1, $date_year + 1900);
+                   $input[$i] = $ans;
+                   $i++;
+               }
            } else {
                $input[$i] = $ans;
                $i++;
@@ -246,7 +261,7 @@ sub buchung_input
            $input[6] *= -1 if ($input[6] > 0);
        }
 
-       $query = sprintf ("INSERT INTO sales VALUES (%d,'%s','%s','%s',%8.2f,%8.2f,%8.2f,%d)",
+       $query = sprintf ("INSERT INTO $table VALUES (%d,'%s','%s','%s',%8.2f,%8.2f,%8.2f,%d)",
                          &get_next_nr(), &date_to_string($input[0]), $input[1], $input[2], $input[4],
                          $input[5], $input[6], $input[7]);
        $sth = $dbh->do($query);
@@ -306,7 +321,12 @@ while ($i <= $#ARGV) {
        } elsif ($ARGV[$i] eq "input") {
            &buchung_input();
        } elsif ($ARGV[$i] eq "unpaid") {
-               &sales_list("paid = 0");
+           $saved_table = $table;
+           $table = "sales_dm";
+           &sales_list("paid = 0");
+           $table = "sales";
+           &sales_list("paid = 0");
+           $table = $table_saved;
        } else {
            &usage();
        }