return sprintf("%4d%02d%02d", $year,$mon,$day);
}
+sub valid_isodate
+{
+ my $date = shift;
+ my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
+
+ return sprintf('%04d-%02d-%02d', $year+1900, $mon+1, $mday) unless defined $date;
+
+ if ($date =~ /^(\d+)\.(\d+)\.?$/) {
+ if ($mon == 0 && $2 > 9) {
+ $date = sprintf('%04d-%02d-%02d', $year+1900-1, $2, $1);
+ } else {
+ $date = sprintf('%04d-%02d-%02d', $year+1900, $2, $1);
+ }
+ } elsif ($date !~ /^(\d+)-(\d+)-(\d+)$/) {
+ return undef;
+ }
+ return $date;
+}
+
sub pay_invoice
{
my $nr = shift;
my $sth;
if ($pay) {
+ my $date = valid_isodate $opt_date;
+
+ die "Invalid date\n" unless defined $date;
+
$query = sprintf("UPDATE sales SET paid=1,billing_date=%s WHERE nr = %d",
- defined $opt_date ? $dbh->quote($opt_date) : 'now()', $nr);
+ defined $date ? $dbh->quote($date) : 'now()', $nr);
} else {
$query = sprintf("UPDATE sales SET paid=0,billing_date=NULL WHERE nr = %d", $nr);
}
print " --buchung-input|-bi\n";
print " --buchung-unpaid\n";
print " --buchung-hidden\n";
- print " --date yyyy-mm-dd (for --pay)\n";
+ print " --date [yyyy-mm-dd|dd.mm.] (for --pay)\n";
print " --pay <nr> | --unpay <nr>\n";
print " --hide <nr> | --unhide <nr>\n";
print " --list-categories|-lc\n";