0

I am having a custom 'Clone SR' button which should be copying only certain elements from open case and creating a new case. For this, I have a component using recordData for fetching fields to be copied over and recordEditForm to pre-populate and set those fields. However when I click on 'save' button, it seems to save even the fields which I don't want to e.g. EntitlementId should not be set but is being set on newly created SR. The culprit seems to be following lines in the controller: const fields = event.getParam('fields'); component.find('myRecordForm').submit(fields);

Can someone recommend how can I set only the selected fields and save the record?

Component code:

    <aura:component implements="flexipage:availableForRecordHome,force:hasRecordId" access="global" controller="NAS_CaseConsoleController">
    
    <aura:attribute name="caseId" type="String" />
    <aura:attribute name="isOpen" type="boolean" default="false" description="displays edit page modal if true" />
    <aura:attribute name="RecordType" type="String" />
    
    <aura:attribute name="case" type="Object"/>
    <aura:attribute name="simplecase" type="Object"/>
    <aura:attribute name="caseError" type="String"/>
    <force:recordData aura:id="RecordLoader"
        recordId="{!v.caseId}"
        fields="AccountId,ContactId,Priority,Type,Product_Line__c,Application_Group__c,Application__c,Application_Version__c,Firmware_OS__c,Hardware_Line__c,Product_Family__c,Product_Version__c,Chassis__c,Firmware_OS_Version__c,Load_Module__c,Technology_Protocol__c,Serial_number__c,Licence_Reference__c"
        targetRecord="{!v.case}"
        targetFields="{!v.simplecase}"
        targetError="{!v.caseError}"
    />
    
    <lightning:button variant="brand" label="Clone SR" title="Clone SR" onclick="{!c.openModal }" />
    
    <aura:if isTrue="{!v.isOpen}">
        <section role="dialog" tabindex="-1" class="slds-modal slds-fade-in-open slds-modal_small" aria-labelledby="modal-heading-01" aria-modal="true" aria-describedby="modal-content-id-1">
            <div class="slds-modal__container">
                <header class="slds-modal__header">
                    <h2 id="modal-heading-01" class="slds-modal__title slds-hyphenate">New SR</h2>
                </header>
                <div class="slds-modal__content slds-p-around_medium slds-is-relative" id="modal-content-id-1">
                    <lightning:spinner alternativeText="Loading" size="medium" aura:id="editViewSpinner" variant="brand"/>
                    <lightning:recordEditForm aura:id="myRecordForm"
                                              objectApiName="Case" 
                                              recordTypeId="{!v.RecordType}" 
                                              onsubmit="{!c.handleSubmit}" 
                                              onsuccess="{!c.handleSuccess}" 
                                              onerror="{!c.handleError}"
                                              onload="{!c.handleLoad}"
                                              >
                        <lightning:messages />
                        <h3 class="slds-section__title slds-theme--shade primaryPaletteBorder test-id__section-header-container">
                            <span class="test-id__section-header-title section-header-title slds-p-horizontal--small slds-truncate">End Customer Information</span>
                            </h3>
                        <div class="slds-grid slds-wrap">
                            <div class="slds-col slds-size_1-of-2">
                                <label for="AccountId">Account Name</label>
                                <lightning:inputField aura:id="AccountId" fieldName="AccountId" value="{!v.simplecase.AccountId}" variant="label-hidden"/>
                            </div>
                            <div>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                 <label for="SuppliedEmail">Web Mail</label>
                                <lightning:inputField aura:id="SuppliedEmail" fieldName="SuppliedEmail" variant="label-hidden"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                 <label for="ContactId">Contact Name</label>
                                <lightning:inputField aura:id="ContactId" fieldName="ContactId" value="{!v.simplecase.ContactId}" variant="label-hidden"/>
                            </div>

                        </div>
                        <br></br>
                            <h3 class="slds-section__title slds-theme--shade primaryPaletteBorder test-id__section-header-container">
                            <span class="test-id__section-header-title section-header-title slds-p-horizontal--small slds-truncate">Case Detail</span>
                            </h3>
                        
                         <div class="slds-grid slds-wrap">
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Status" value="New" />
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <label for="OwnerId">Owner</label>
                                <lightning:inputField aura:id="OwnerId" fieldName="OwnerId" variant="label-hidden"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Origin"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="CaseNumber"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Type"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="NAS_Case_Number__c" disabled="true"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Priority" value="{!v.simplecase.Priority}"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Parent_Case__c" value="{!v.simplecase.CaseNumber}"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <label for="RecordTypeId">Record Type</label>
                                <lightning:inputField aura:id="RecordTypeId" fieldName="RecordTypeId" value="{!v.RecordType}" variant="label-hidden" disabled="true"/>
                            </div>
                             <div>
                                 
                             </div>
                        </div> 
                        <br></br>
                        <h3 class="slds-section__title slds-theme--shade primaryPaletteBorder test-id__section-header-container">
                            <span class="test-id__section-header-title section-header-title slds-p-horizontal--small slds-truncate">Case Information</span>
                        </h3>
                        <div>
                            <div class="slds-col slds-size_1-of-1">
                                <lightning:inputField aura:id="field" fieldName="Subject" required="true"/>
                            </div>
                            <div class="slds-col slds-size_1-of-1">
                                <lightning:inputField aura:id="field" fieldName="Description"/>
                            </div>
                        </div>
                        <h3 class="slds-section__title slds-theme--shade primaryPaletteBorder test-id__section-header-container">
                            <span class="test-id__section-header-title section-header-title slds-p-horizontal--small slds-truncate">Product Information/Platform</span>
                        </h3>
                        <div class="slds-grid slds-wrap">
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Product_Line__c" value="{!v.simplecase.Product_Line__c}"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Application_Group__c" value="{!v.simplecase.Application_Group__c}"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Hardware_Line__c" value="{!v.simplecase.Hardware_Line__c}"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Application__c" value="{!v.simplecase.Application__c}"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Product_Family__c" value="{!v.simplecase.Product_Family__c}"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Application_Version__c"  value="{!v.simplecase.Application_Version__c}"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Product_Version__c"  value="{!v.simplecase.Product_Version__c}"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Firmware_OS__c"  value="{!v.simplecase.Firmware_OS__c}"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Chassis__c"  value="{!v.simplecase.Chassis__c}"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Firmware_OS_Version__c"  value="{!v.simplecase.Firmware_OS_Version__c}"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Load_Module__c"  value="{!v.simplecase.Load_Module__c}"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Technology_Protocol__c"  value="{!v.simplecase.Technology_Protocol__c}"/>
                            </div>
                        </div>
                        <h3 class="slds-section__title slds-theme--shade primaryPaletteBorder test-id__section-header-container">
                            <span class="test-id__section-header-title section-header-title slds-p-horizontal--small slds-truncate">Asset Information</span>
                        </h3>
                        <div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Serial_number__c"  value="{!v.simplecase.Serial_number__c}"/>
                            </div>
                            <div class="slds-col slds-size_1-of-2">
                                <lightning:inputField aura:id="field" fieldName="Licence_Reference__c"  value="{!v.simplecase.Licence_Reference__c}"/>
                            </div>
                        
                        </div>
                        <div class="slds-align_absolute-center slds-p-around_medium">
                            <lightning:button label="Cancel" onclick="{!c.handleCancel}" variant="neutral" />
                            <lightning:button type="Submit" label="Save" variant="brand" />
                        </div>
                        
                    </lightning:recordEditForm>
                    
                </div>
            </div>
        </section>
        <div class="slds-backdrop slds-backdrop_open"></div>
    </aura:if>
</aura:component>

Controller:

({
    openModal : function(component, event, helper) {
        var action = component.get('c.getRecordTypeId');
        action.setParams ({
            "recordtype" : "SR"
        });
        action.setCallback(this, function(response){
            var state = response.getState();
            if(state === 'SUCCESS'){
                //alert('Record Type Id: ' + response.getReturnValue());
                if(response.getReturnValue()!= 'Not Found')
                {
                    component.set('v.RecordType', response.getReturnValue());
                    component.set('v.isOpen', true);
                    $A.util.removeClass(component.find('editViewSpinner'),'slds-hide');
                }
            } else {
                console.log('error loading record type Id. state'+state);
            }
        });
        $A.enqueueAction(action);
    },
    
    handleLoad : function(component, event, helper){
        $A.util.addClass(component.find('editViewSpinner'),'slds-hide');
        
    },
    
    handleCancel: function(component, event, helper){
        component.set('v.isOpen', false);
    },
    
    handleSubmit : function(component, event, helper) {
        event.preventDefault();       // stop the form from submitting
        $A.util.removeClass(component.find('editViewSpinner'),'slds-hide');
        const fields = event.getParam('fields');
        component.find('myRecordForm').submit(fields);
    },
    
    
    handleSuccess : function(component, event, helper){
        var payload = event.getParams();
       // console.log('Payload :' + JSON.stringify(payload));
       // console.log('payload response id:' + payload.response.id);
       // console.log('payload Case Number:' + payload.response.fields.CaseNumber.value);
        var caseid = payload.response.id;
        var CaseNum =payload.response.fields.CaseNumber.value;
        $A.util.addClass(component.find('editViewSpinner'),'slds-hide');
        var toastEvent = $A.get('e.force:showToast');
        toastEvent.setParams({
            type : 'success',
            message : CaseNum + ' Case Created Successfully'
        });
        toastEvent.fire();
        component.set('v.isOpen', false);
         $A.get( "e.force:navigateToSObject" ).setParams( {
            "recordId": caseid,
            "slideDevName": "detail"
        } ).fire();
        
    },
    
    handleError : function(component, event, helper){
        $A.util.addClass(component.find('editViewSpinner'),'slds-hide');
        var toastEvent = $A.get('e.force:showToast');
        toastEvent.setParams({
            type : 'error',
            message : 'Case creation Failed'
        });
        toastEvent.fire();
    },
    
    
})

1 Answer 1

0

I was troubleshooting it further and found that there is a trigger on case, which is adding entitlement onto Asset. So will need a logic to bypass that trigger. So my code is working as expected and I just need to bypass the trigger.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .