<?xml version="1.0" encoding="UTF-8"?>
<Flow xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>65.0</apiVersion>
    <areMetricsLoggedToDataCloud>false</areMetricsLoggedToDataCloud>
    <assignments>
        <name>Set_Account_Values</name>
        <label>Set Account Values</label>
        <locationX>0</locationX>
        <locationY>0</locationY>
        <assignmentItems>
            <assignToReference>varAccount.Active__c</assignToReference>
            <operator>Assign</operator>
            <value>
                <elementReference>NewActiveValue</elementReference>
            </value>
        </assignmentItems>
        <assignmentItems>
            <assignToReference>varAccount.Deactivation_Reason__c</assignToReference>
            <operator>Assign</operator>
            <value>
                <elementReference>Deactivation_Reason</elementReference>
            </value>
        </assignmentItems>
        <connector>
            <targetReference>Update_Account</targetReference>
        </connector>
    </assignments>
    <customProperties>
        <name>ScreenProgressIndicator</name>
        <value>
            <stringValue>{&quot;location&quot;:&quot;top&quot;,&quot;type&quot;:&quot;simple&quot;}</stringValue>
        </value>
    </customProperties>
    <decisions>
        <name>Check_Active_Opps</name>
        <label>Check Active Opps</label>
        <locationX>0</locationX>
        <locationY>0</locationY>
        <defaultConnector>
            <targetReference>Provide_Inactive_Reason</targetReference>
        </defaultConnector>
        <defaultConnectorLabel>Doesn&apos;t Have Active Opps</defaultConnectorLabel>
        <rules>
            <name>Has_Active_Opps</name>
            <conditionLogic>and</conditionLogic>
            <conditions>
                <leftValueReference>Get_Active_Opps</leftValueReference>
                <operator>IsNull</operator>
                <rightValue>
                    <booleanValue>false</booleanValue>
                </rightValue>
            </conditions>
            <connector>
                <targetReference>Block_Deactivation</targetReference>
            </connector>
            <label>Has Active Opps</label>
        </rules>
    </decisions>
    <decisions>
        <name>Is_being_set_to_inactive</name>
        <label>Is being set to inactive?</label>
        <locationX>0</locationX>
        <locationY>0</locationY>
        <defaultConnector>
            <targetReference>Set_Account_Values</targetReference>
        </defaultConnector>
        <defaultConnectorLabel>No</defaultConnectorLabel>
        <rules>
            <name>Yes</name>
            <conditionLogic>and</conditionLogic>
            <conditions>
                <leftValueReference>NewActiveValue</leftValueReference>
                <operator>EqualTo</operator>
                <rightValue>
                    <booleanValue>false</booleanValue>
                </rightValue>
            </conditions>
            <connector>
                <targetReference>Get_Active_Opps</targetReference>
            </connector>
            <label>Yes</label>
        </rules>
    </decisions>
    <environments>Default</environments>
    <formulas>
        <name>ConfirmMessage</name>
        <dataType>String</dataType>
        <expression>IF(
  {!varAccount.Active__c},
  &quot;Deactivate&quot;,
  &quot;Activate&quot;
)</expression>
    </formulas>
    <formulas>
        <name>NewActiveValue</name>
        <dataType>Boolean</dataType>
        <expression>NOT({!varAccount.Active__c})</expression>
    </formulas>
    <interviewLabel>CA - {!$Flow.CurrentDateTime}</interviewLabel>
    <label>CA - Account Toggle Active</label>
    <processMetadataValues>
        <name>BuilderType</name>
        <value>
            <stringValue>LightningFlowBuilder</stringValue>
        </value>
    </processMetadataValues>
    <processMetadataValues>
        <name>CanvasMode</name>
        <value>
            <stringValue>AUTO_LAYOUT_CANVAS</stringValue>
        </value>
    </processMetadataValues>
    <processMetadataValues>
        <name>OriginBuilderType</name>
        <value>
            <stringValue>LightningFlowBuilder</stringValue>
        </value>
    </processMetadataValues>
    <processType>Flow</processType>
    <recordLookups>
        <name>Get_Account</name>
        <label>Get Account</label>
        <locationX>0</locationX>
        <locationY>0</locationY>
        <assignNullValuesIfNoRecordsFound>false</assignNullValuesIfNoRecordsFound>
        <connector>
            <targetReference>Confirmation_Modal</targetReference>
        </connector>
        <filterLogic>and</filterLogic>
        <filters>
            <field>Id</field>
            <operator>EqualTo</operator>
            <value>
                <elementReference>recordId</elementReference>
            </value>
        </filters>
        <object>Account</object>
        <outputReference>varAccount</outputReference>
        <queriedFields>Id</queriedFields>
        <queriedFields>Active__c</queriedFields>
        <queriedFields>Deactivation_Reason__c</queriedFields>
    </recordLookups>
    <recordLookups>
        <name>Get_Active_Opps</name>
        <label>Get Active Opps</label>
        <locationX>0</locationX>
        <locationY>0</locationY>
        <assignNullValuesIfNoRecordsFound>false</assignNullValuesIfNoRecordsFound>
        <connector>
            <targetReference>Check_Active_Opps</targetReference>
        </connector>
        <filterLogic>and</filterLogic>
        <filters>
            <field>AccountId</field>
            <operator>EqualTo</operator>
            <value>
                <elementReference>varAccount.Id</elementReference>
            </value>
        </filters>
        <filters>
            <field>StageName</field>
            <operator>NotEqualTo</operator>
            <value>
                <stringValue>Complete</stringValue>
            </value>
        </filters>
        <filters>
            <field>StageName</field>
            <operator>NotEqualTo</operator>
            <value>
                <stringValue>Cold</stringValue>
            </value>
        </filters>
        <filters>
            <field>StageName</field>
            <operator>NotEqualTo</operator>
            <value>
                <stringValue>Inactive</stringValue>
            </value>
        </filters>
        <getFirstRecordOnly>true</getFirstRecordOnly>
        <object>Opportunity</object>
        <queriedFields>Id</queriedFields>
        <storeOutputAutomatically>true</storeOutputAutomatically>
    </recordLookups>
    <recordUpdates>
        <name>Update_Account</name>
        <label>Update Account</label>
        <locationX>0</locationX>
        <locationY>0</locationY>
        <inputReference>varAccount</inputReference>
    </recordUpdates>
    <screens>
        <name>Block_Deactivation</name>
        <label>Block Deactivation</label>
        <locationX>0</locationX>
        <locationY>0</locationY>
        <allowBack>false</allowBack>
        <allowFinish>true</allowFinish>
        <allowPause>false</allowPause>
        <fields>
            <name>BlockDeactivationMessage</name>
            <fieldText>&lt;p style=&quot;text-align: center;&quot;&gt;You can&apos;t deactivate this account because it has active opportunities.&lt;/p&gt;</fieldText>
            <fieldType>DisplayText</fieldType>
            <styleProperties>
                <verticalAlignment>
                    <stringValue>top</stringValue>
                </verticalAlignment>
                <width>
                    <stringValue>12</stringValue>
                </width>
            </styleProperties>
        </fields>
        <nextOrFinishButtonLabel>Close</nextOrFinishButtonLabel>
        <showFooter>true</showFooter>
        <showHeader>true</showHeader>
    </screens>
    <screens>
        <name>Confirmation_Modal</name>
        <label>Confirmation Modal</label>
        <locationX>0</locationX>
        <locationY>0</locationY>
        <allowBack>true</allowBack>
        <allowFinish>true</allowFinish>
        <allowPause>false</allowPause>
        <connector>
            <targetReference>Is_being_set_to_inactive</targetReference>
        </connector>
        <fields>
            <name>Text</name>
            <fieldText>&lt;p style=&quot;text-align: center;&quot;&gt;Are you sure you want to &lt;strong&gt;{!ConfirmMessage} &lt;/strong&gt;this account?&lt;/p&gt;</fieldText>
            <fieldType>DisplayText</fieldType>
            <styleProperties>
                <verticalAlignment>
                    <stringValue>top</stringValue>
                </verticalAlignment>
                <width>
                    <stringValue>12</stringValue>
                </width>
            </styleProperties>
        </fields>
        <nextOrFinishButtonLabel>Confirm</nextOrFinishButtonLabel>
        <showFooter>true</showFooter>
        <showHeader>false</showHeader>
    </screens>
    <screens>
        <name>Provide_Inactive_Reason</name>
        <label>Provide Inactive Reason</label>
        <locationX>0</locationX>
        <locationY>0</locationY>
        <allowBack>true</allowBack>
        <allowFinish>true</allowFinish>
        <allowPause>false</allowPause>
        <connector>
            <targetReference>Set_Account_Values</targetReference>
        </connector>
        <fields>
            <name>Text2</name>
            <fieldText>&lt;p style=&quot;text-align: center;&quot;&gt;Please explain why you’re deactivating this Account&lt;/p&gt;</fieldText>
            <fieldType>DisplayText</fieldType>
            <styleProperties>
                <verticalAlignment>
                    <stringValue>top</stringValue>
                </verticalAlignment>
                <width>
                    <stringValue>12</stringValue>
                </width>
            </styleProperties>
        </fields>
        <fields>
            <name>Deactivation_Reason</name>
            <dataType>String</dataType>
            <fieldText>Deactivation Reason</fieldText>
            <fieldType>InputField</fieldType>
            <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
            <isRequired>true</isRequired>
            <styleProperties>
                <verticalAlignment>
                    <stringValue>top</stringValue>
                </verticalAlignment>
                <width>
                    <stringValue>12</stringValue>
                </width>
            </styleProperties>
            <validationRule>
                <errorMessage>&lt;p&gt;Please limit your response to 255 characters.&lt;/p&gt;</errorMessage>
                <formulaExpression>LEN({!Deactivation_Reason}) &lt;= 255</formulaExpression>
            </validationRule>
        </fields>
        <nextOrFinishButtonLabel>Confirm</nextOrFinishButtonLabel>
        <showFooter>true</showFooter>
        <showHeader>false</showHeader>
    </screens>
    <start>
        <locationX>0</locationX>
        <locationY>0</locationY>
        <connector>
            <targetReference>Get_Account</targetReference>
        </connector>
    </start>
    <status>Active</status>
    <variables>
        <name>recordId</name>
        <dataType>String</dataType>
        <isCollection>false</isCollection>
        <isInput>true</isInput>
        <isOutput>false</isOutput>
    </variables>
    <variables>
        <name>varAccount</name>
        <dataType>SObject</dataType>
        <isCollection>false</isCollection>
        <isInput>true</isInput>
        <isOutput>false</isOutput>
        <objectType>Account</objectType>
    </variables>
</Flow>
