summaryrefslogtreecommitdiff
path: root/LedgerSMB/Form.pm
diff options
context:
space:
mode:
authoreinhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46>2007-03-25 00:33:10 +0000
committereinhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46>2007-03-25 00:33:10 +0000
commit96cf16a1bea8681d3a9c549d981198ebfa59cfb8 (patch)
treee49826396fe5d1318b4129ed96675a945d2c3265 /LedgerSMB/Form.pm
parent50a429c050917a0972f6f55b6cfc73b219b91f76 (diff)
Fixing date format issues with report timeframes
git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/branches/1.2@1007 4979c152-3d1c-0410-bac9-87ea11338e46
Diffstat (limited to 'LedgerSMB/Form.pm')
-rwxr-xr-xLedgerSMB/Form.pm42
1 files changed, 34 insertions, 8 deletions
diff --git a/LedgerSMB/Form.pm b/LedgerSMB/Form.pm
index becea191..699c8695 100755
--- a/LedgerSMB/Form.pm
+++ b/LedgerSMB/Form.pm
@@ -1362,6 +1362,16 @@ sub print_button {
sub db_init {
my ($self, $myconfig) = @_;
$self->{dbh} = $self->dbconnect_noauto($myconfig) || $self->dberror();
+ %date_query = (
+ 'mm/dd/yy' => 'set DateStyle to \'SQL, US\'',
+ 'mm-dd-yy' => 'set DateStyle to \'POSTGRES, US\'',
+ 'dd/mm/yy' => 'set DateStyle to \'SQL, EUROPEAN\'',
+ 'dd-mm-yy' => 'set DateStyle to \'POSTGRES, EUROPEAN\'',
+ 'dd.mm.yy' => 'set DateStyle to \'GERMAN\''
+ );
+
+ $self->{dbh}->do($date_query{$myconfig->{dateformat}});
+ $self->{db_dateformat} = $myconfig->{dateformat}; #shim
my $query =
"SELECT t.extends,
@@ -2984,32 +2994,47 @@ sub split_date {
($rv, $yy, $mm, $dd);
}
+sub format_date {
+ # takes an iso date in, and converts it to the date for printing
+ my ($self, $date) = @_;
+ my $datestring;
+ if ($date =~ /^\d{4}\D/){ # is an ISO date
+ $datestring = $self->{db_dateformat};
+ my ($yyyy, $mm, $dd) = split(/\W/, $date);
+ $datestring =~ s/y+/$yyyy/;
+ $datestring =~ s/mm/$mm/;
+ $datestring =~ s/dd/$dd/;
+ } else { # return date
+ $datestring = $date;
+ }
+ $datestring;
+}
sub from_to {
- my ($self, $yy, $mm, $interval) = @_;
+ my ($self, $yyyy, $mm, $interval) = @_;
my @t;
my $dd = 1;
- my $fromdate = "$yy${mm}01";
+ my $fromdate = "$yyyy-${mm}-01";
my $bd = 1;
if (defined $interval) {
if ($interval == 12) {
- $yy++;
+ $yyyy++;
} else {
if (($mm += $interval) > 12) {
$mm -= 12;
- $yy++;
+ $yyyy++;
}
if ($interval == 0) {
@t = localtime(time);
$dd = $t[3];
$mm = $t[4] + 1;
- $yy = $t[5] + 1900;
+ $yyyy = $t[5] + 1900;
$bd = 0;
}
}
@@ -3018,19 +3043,20 @@ sub from_to {
if (++$mm > 12) {
$mm -= 12;
- $yy++;
+ $yyyy++;
}
}
$mm--;
- @t = localtime(Time::Local::timelocal(0,0,0,$dd,$mm,$yy) - $bd);
+ @t = localtime(Time::Local::timelocal(0,0,0,$dd,$mm,$yyyy) - $bd);
$t[4]++;
$t[4] = substr("0$t[4]",-2);
$t[3] = substr("0$t[3]",-2);
$t[5] += 1900;
- ($fromdate, "$t[5]$t[4]$t[3]");
+ ($self->format_date($fromdate),
+ $self->format_date("$t[5]-$t[4]-$t[3]"));
}