From d6be918b7d20df7fdb5e07d6a68260b3a23db74c Mon Sep 17 00:00:00 2001 From: parnic Date: Thu, 10 Aug 2023 17:44:18 -0500 Subject: [PATCH] Null 'fixed' field if target not a 'done' status (#3) When transitioning a task to a non-Done status, we don't want to set the Fixed field to anything, and want to clear it if it was already set. Fix #2 --- Module.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Module.php b/Module.php index f429209..ba31813 100644 --- a/Module.php +++ b/Module.php @@ -86,6 +86,7 @@ public static function handleSmartCommitMessage($item, ServiceLocator $services) $services); $transitionId = null; + $transitionToStatusType = null; if ($availableTransitions && is_array($availableTransitions) && array_key_exists('transitions', $availableTransitions) && is_array($availableTransitions['transitions'])) { foreach ($availableTransitions['transitions'] as $availableTransition) { @@ -98,6 +99,10 @@ public static function handleSmartCommitMessage($item, ServiceLocator $services) if (strpos($availableTransitionName, $transitionCommand['command']) === 0) { $transitionId = $availableTransition['id']; + + if (isset($availableTransition['to']) && isset($availableTransition['to']['statusCategory'])) { + $transitionToStatusType = $availableTransition['to']['statusCategory']['key']; + } break; } } @@ -150,6 +155,15 @@ public static function handleSmartCommitMessage($item, ServiceLocator $services) if ($clFieldNumeric) { $clObj = array($clField => $item->getId()); } + + // if this isn't a "done" transition, make sure the fixed field is nulled out + if ($transitionToStatusType && $transitionToStatusType !== 'done') { + $logger->debug("JiraSmartCommits: nulling changelist field value because target status is not a Done status (is {$transitionToStatusType})."); + $clObj = array($clField => null); + } else { + $logger->debug("JiraSmartCommits: desired status is a 'done' status type, continuing with setting fixed field to {$item->getId()}."); + } + $msg = array( 'fields' => $clObj, );