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();
},
})