[Rt-commit] r4791 - in rtir/branches/1.9-EXPERIMENTAL: lib/RT/Action
ruz at bestpractical.com
ruz at bestpractical.com
Wed Mar 22 09:58:20 EST 2006
Author: ruz
Date: Wed Mar 22 09:58:19 2006
New Revision: 4791
Modified:
rtir/branches/1.9-EXPERIMENTAL/ (props changed)
rtir/branches/1.9-EXPERIMENTAL/lib/RT/Action/RTIR_ResolveChildren.pm
Log:
r982 at cubic-pc: cubic | 2006-03-22 06:15:16 +0300
* If a IR is linked to several Incidents, this IR should be resolved
when all the Incidents are resolved, this IR shouldn't be resolved
meanwhile there are open Incidents.
** Add comment in such situation
Modified: rtir/branches/1.9-EXPERIMENTAL/lib/RT/Action/RTIR_ResolveChildren.pm
==============================================================================
--- rtir/branches/1.9-EXPERIMENTAL/lib/RT/Action/RTIR_ResolveChildren.pm (original)
+++ rtir/branches/1.9-EXPERIMENTAL/lib/RT/Action/RTIR_ResolveChildren.pm Wed Mar 22 09:58:19 2006
@@ -74,24 +74,48 @@
sub Commit {
my $self = shift;
+ my $id = $self->TicketObj->Id;
my $query = "(Queue = 'Incident Reports'"
." OR Queue = 'Investigations'"
." OR Queue = 'Blocks'"
- .") AND MemberOf = " . $self->TicketObj->Id
+ .") AND MemberOf = " . $id
." AND ("
+ # TODO: move to per queue statuses lists
. join(" AND ", map "Status != '$_'", RT->Config->Get('InactiveStatus') )
.")";
my $members = new RT::Tickets( $self->TransactionObj->CurrentUser );
$members->FromSQL( $query );
while ( my $member = $members->Next ) {
+ if ( $self->HasOtherUnresolvedParents( $member ) ) {
+ $member->Comment(Content => <<END);
+
+Linked Incident \#$id was resolved, but ticket still has unresolved linked Incidents.
+
+END
+ next;
+ }
my ($res, $msg) = $member->Resolve;
$RT::Logger->info( "Couldn't resolve ticket: $msg" ) unless $res;
}
return 1;
}
+sub HasOtherUnresolvedParents {
+ my $self = shift;
+ my $child = shift;
+
+ my $query = "Queue = 'Incidents'"
+ ." AND id != ". $self->TicketObj->Id
+ ." AND HasMember = ". $child->id
+ ." AND ( ". join(" OR ", map "Status = '$_'", RT->Config->Get('ActiveStatus') ) ." ) ";
+
+ my $tickets = new RT::Tickets( $self->TransactionObj->CurrentUser );
+ $tickets->FromSQL( $query );
+ return $tickets->Count;
+}
+
# }}}
eval "require RT::Action::RTIR_ResolveChildren_Vendor";
More information about the Rt-commit
mailing list