X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Flib%2FRT%2FInterface%2FWeb_Vendor.pm;h=3aad3fee27785fee5787276a7f76614b5a67eea9;hb=589f6cda04f1ada45e71ab7c352bdb750a332f6d;hp=a5f5b882795a7d66dd3e7d20a0c813d9dc97995f;hpb=f3a97201def678ff5cb382520132f303a16d0d12;p=freeside.git diff --git a/rt/lib/RT/Interface/Web_Vendor.pm b/rt/lib/RT/Interface/Web_Vendor.pm index a5f5b8827..3aad3fee2 100644 --- a/rt/lib/RT/Interface/Web_Vendor.pm +++ b/rt/lib/RT/Interface/Web_Vendor.pm @@ -259,14 +259,22 @@ sub ProcessTicketBasics { # the UI for editing WillResolve through Ticket Basics should allow # setting it to null - my $to_date = delete($ARGSRef->{'WillResolve_Date'}); - my $DateObj = RT::Date->new($session{'CurrentUser'}); - if ( $to_date ) { - $DateObj->Set(Format => 'unknown', Value => $to_date); - } else { - $DateObj->Set(Value => 0); + if ( exists $ARGSRef->{'WillResolve_Date'} ) { + my $to_date = delete($ARGSRef->{'WillResolve_Date'}); + my $DateObj = RT::Date->new($session{'CurrentUser'}); + if ( $to_date ) { + $DateObj->Set(Format => 'unknown', Value => $to_date); + if ( $DateObj->Unix > time ) { + $ARGSRef->{'WillResolve'} = $DateObj->ISO; + } else { + warn "Ticket ".$TicketObj->Id.": WillResolve date '$to_date' not accepted.\n"; + # and then don't set it in ARGSRef + } + } elsif ( $TicketObj and $TicketObj->WillResolveObj->Unix > 0 ) { + $DateObj->Set(Value => 0); + $ARGSRef->{'WillResolve'} = $DateObj->ISO; + } } - $ARGSRef->{'WillResolve'} = $DateObj->ISO; if ( $ARGSRef->{'Queue'} and ( $ARGSRef->{'Queue'} !~ /^(\d+)$/ ) ) { my $tempqueue = RT::Queue->new($RT::SystemUser); @@ -340,6 +348,13 @@ sub ProcessTicketDates { Value => $ARGSRef->{ $field . '_Date' } ); + if ( $field eq 'WillResolve' + and $DateObj->Unix > 0 + and $DateObj->Unix <= time ) { + push @results, "Can't set WillResolve date in the past."; + next; + } + my $obj = $field . "Obj"; if ( ( defined $DateObj->Unix ) and ( $DateObj->Unix != $Ticket->$obj()->Unix() ) )