• Jonas Júnior
  • NEWBIE
  • 30 Points
  • Member since 2019

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 3
    Questions
  • 4
    Replies
I need validate one checkbox. If your value change to true, the form fields should be disable until another condition be attended. This another condition is already done, but I cannot do with the fields stay disable. I need help please.

The JavaScript code:
<script>
	function disableFields(){
		if (document.getElementById('isLowIncomeCheck') == true) {
			$('tipoBaixaRenda').prop('disabled',true);
			$('tipoDocumento').prop('disabled',true);
	
			console.log('I am in disableFields method'));
			document.getElementById('tipoBaixaRenda').disabled = true;
			document.getElementById('tipoDocumento').disabled = true;
			document.getElementById('grauParentesco').disabled = true;
			document.getElementById('numDocumento').disabled = true;
			document.getElementById('clienteBeneficiado').disabled = true;
			document.getElementById('ufNascimento').disabled = true;
			document.getElementById('codigoUfc').disabled = true;
			document.getElementById('dataNascimento').disabled = true;
			//I need disable the button below too
		}
	}
</script>
The VF code:
<apex:pageBlock title="Cliente Baixa Renda" id="block1">
	<!-- I need validate the checkbox below. If it change to true the fields above should be disabled -->
	<apex:inputcheckbox id="isLowIncomeCheck" required="false" value="{!isLowIncome}">
		<apex:actionsupport oncomplete="disableFields()" event="onclick" rerender="lowIncomeForm" action="{!verifySaveLoad}" />
	</apex:inputcheckbox>
	<apex:outputPanel layout="block" id="lowIncomeForm" >
		<apex:pageBlockSection id="formBaixaRenda" rendered="{!isLowIncome}" columns="2" collapsible="true">
			<apex:inputField value="{!thisCase.CNT_O_cliente_beneficiado__c}" >
				<apex:actionSupport oncomplete="removeNoneValue()" event="onchange" action="{!isBenefited}" reRender="formBaixaRenda" />
			</apex:inputField>
			<apex:inputField id="tipoBaixaRenda" value="{!thisCase.CNT_Tipo_de_Baixa_Renda__c}" rendered="true" />
			<apex:inputField id="tipoDocumento" value="{!thisCase.CNT_Tipo_de_Documento__c}" /> 
			<apex:inputField id="grauParentesco" value="{!thisCase.CNT_Grau_de_parentesco__c}" /> 
			<apex:inputField id="numDocumento" value="{!thisCase.CNT_Numero_do_Documento__c}" /> 
			<apex:inputField id="clienteBeneficiado" rendered="{!IF(thisCase.CNT_O_cliente_beneficiado__c = 'Não', true, false)}" value="{!thisCase.CNT_Nome_do_Titular_do_Benef_cio__c}" />
			<apex:inputField id="ufNascimento" value="{!thisCase.CNT_UF_Nascimento__c}"  />
			<apex:inputField id="codigoUfc" value="{!thisCase.CNT_Codigo_UF__c}" />
			<apex:inputField id="dataNascimento" value="{!thisCase.CNT_Data_de_nascimento__c}" />
			<apex:pageBlockSectionItem />  
			<apex:commandButton style="align:left;"  value="Salvar" action="{!save}"/> 
		</apex:pageBlockSection>
	</apex:outputPanel>
</apex:pageBlock>
I will appreciate any help or suggestion.

Thanks,
Junior, Jonas C.
Hi guys,

I am building a new Lightining Component and need help, please. I have two columns in my main page. I have an Object called: Produtos__c. The left column needs show all Produtos__c.Category__c from the database (DONE). When the user to click in some category, I need show all records with the category clicked by user in right column (NEED HELP).

Something like this:
User-added image
As saw, all products are being shown.

Project details:

InfoSalesMain.cmp
<aura:component controller="InfoSalesController" implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,force:lightningQuickAction,lightning:isUrlAddressable" access="global" > 
    
    <aura:handler name="init" value="this" action="{!c.doInit}" />
    
    <aura:attribute name="idProduto" type="String" />
    <aura:attribute name="DetalheProduto" type="Boolean" default="false" />
    <aura:attribute name="Name" type="String"/>
    <aura:attribute name="listaProduto" type="List" default="[]"/>
    <aura:attribute name="listaProdutoCategoria" type="List" default="[]"/>
    <aura:attribute name="listaProdutoByCategory" type="List" default="[]"/>
    <aura:attribute name="produto" type="Object" />
    
    <div class="slds-grid slds-wrap">
        <div class="slds-size_1-of-6">
            <div class="slds-box slds-theme_default">
                Bem-vindo, {!v.Name}
                <br /><br />
                <b>CATEGORIAS EXISTENTES</b>
                <br /><br />
                <aura:iteration items="{! v.listaProdutoCategoria }" var="produto">
                    <ul class="slds-list_horizontal">
                        <li> <a onclick="{!c.categoriaSelecionada}" href="#">{! produto.Category__c }</a> </li>
                    </ul>
                </aura:iteration>
            </div>
        </div>
        <div class="slds-size_5-of-6">
            <div class="slds-box slds-theme_default">
                <lightning:card>
                    <div class="slds-p-left_medium slds-p-right_medium">
                        <ul class="slds-list_vertical slds-has-dividers_top-space">
                            <aura:iteration items="{! v.listaProduto }" var="produto" >
                                <!-- Activate the next line when discovered how get ProdutoByCategory -->
                                <!-- <aura:iteration items="{! v.listaProdutoByCategory }" var="produto" > -->
                                <li class="slds-list__item">
                                    <!-- Here will be the produto image -->
                                    <lightning:avatar size="large" src="/docs/component-library/app/images/examples/avatar2.jpg" initials="CR" fallbackIconName="standard:person_account" alternativeText="Cindy Rice" class="slds-m-right_small"/>
                                    <b>Descrição: </b> {! produto.Description__c }<br/>
                                    <b>Preço:</b> R$ {! produto.Price__c }
                                </li>
                            </aura:iteration>
                        </ul>
                    </div>
                </lightning:card>
            </div>
        </div>
    </div>
    <!-- NEXT SCREEN IS NOT COMPLETE -->
    <aura:if isTrue="{! v.DetalheProduto }">
        <c:DetalheProduto idProduto="{! v.idProduto }"/> 
    </aura:if>
</aura:component>
InfoSalesController.apxc
public class InfoSalesController {
    
    @AuraEnabled
    public static String saveProduto_CTRL(String jsonProduto){
        Produto__c produto = (Produto__c) Json.deserialize(jsonProduto, Produto__c.class);        
        UPSERT produto;
        return 'Produto inserido com sucesso';   
    }
    
    @AuraEnabled
    public static Produto__c getProdutoSObj(){
        Produto__c prod = [SELECT Id, Capacidade__c, Category__c, Description__c, Foto__c, Frequencia__c, Inches__c, Price__c, Socket__c, Storage__c FROM Produto__c];
        return prod;
    }
    
    @AuraEnabled
    public static String deleteProduto_CTRL(String jsonProduto){
        
        Produto__c produto = (Produto__c) Json.deserialize(jsonProduto, Produto__c.class);
        delete produto;
        return 'Produto excluído com sucesso';
    }
    
    @AuraEnabled
    public static List<Produto__c> getListProduto_CTRL(){
        List<Produto__c> listReturnProd = [SELECT Id, Description__c, Foto__c, Price__c, Category__c FROM Produto__c];
        listReturnProd.sort();
        System.debug('listReturnProd: '+listReturnProd);
        return listReturnProd;       
    }
    
    @AuraEnabled
    public static List<AggregateResult> getProdutoCategory_CTRL(){
        List<AggregateResult> listReturnCategoryProd =[SELECT Category__c FROM Produto__c GROUP BY Category__c ORDER BY Category__c ASC];
        return listReturnCategoryProd;
    }
    
    @AuraEnabled
    public static List<Produto__c> getProdutoByCategory_CTRL(String paramCtgSelecionada){
        List<Produto__c> listReturnProdutoByCategory = [SELECT Id, Description__c, Foto__c, Price__c, Category__c FROM Produto__c WHERE Category__c =: paramCtgSelecionada];
        return listReturnProdutoByCategory;
    }
    
    @AuraEnabled
    public static String getUserName() {
        return userinfo.getName();
    }
    
}
InfoSalesMainController.js
({
 	doInit: function(component, event, helper) {
        helper.getUser(component);
        helper.getProdutos(component);
        helper.getCategoriaProduto(component);
    },
    categoriaSelecionada : function(component, event, helper) {
    	//helper.getCategoriaSelecionada(component);
    	var src = event.getSource();
        var name = src.get("v.value");
        component.set("listaProdutoByCategory",name);
    }
})
InfoSalesMainHelper.js
({
    getUser : function(component){
        var action = component.get("c.getUserName");
        action.setCallback(this, function(response){
            var state = response.getState();
            if (state === "SUCCESS") {
                component.set("v.Name", response.getReturnValue());
            }
        });
        $A.enqueueAction(action);
    },
    getProdutos : function(component) {
        var action = component.get("c.getListProduto_CTRL");
        action.setCallback(this, function(response) {
            var state = response.getState();
            if (state === "SUCCESS") {
                component.set('v.listaProduto', response.getReturnValue());
            } else if (state === "ERROR") {
                alert('Erro: Lista vazia');
                var errors = response.getError();
                if (errors) {
                    if (errors[0] && errors[0].message) {
                        console.log("Error message: " + 
                                    errors[0].message);
                    }
                } else {
                    console.log("Unknown error");
                }
            }
        });
        $A.enqueueAction(action);
    },
    getCategoriaProduto : function(component) {
        var action = component.get("c.getProdutoCategory_CTRL");
        action.setCallback(this, function(response) {
            var state = response.getState();
            if (state === "SUCCESS") {
                component.set('v.listaProdutoCategoria', response.getReturnValue());
            } else if (state === "ERROR") {
                alert('Erro: Lista vazia');
                var errors = response.getError();
                if (errors) {
                    if (errors[0] && errors[0].message) {
                        console.log("Error message: " + 
                                    errors[0].message);
                    }
                } else {
                    console.log("Unknown error");
                }
            }
        });
        $A.enqueueAction(action);
    },
    
	getCategoriaSelecionada : function(component) {
        var action = component.get("c.getProdutoByCategory_CTRL");
        action.setParams({ 
            paramCtgSelecionada : component.get("v.categoriaClicada")//How to pass this variable to apex?
        });
        action.setCallback(this, function(response) {
            var state = response.getState();
            if (state === "SUCCESS") {
                component.set('v.listaProdutoByCategory', response.getReturnValue());
            } else if (state === "ERROR") {
                alert('Erro: Lista vazia');
                var errors = response.getError();
                if (errors) {
                    if (errors[0] && errors[0].message) {
                        console.log("Error message: " + 
                                    errors[0].message);
                    }
                } else {
                    console.log("Unknown error");
                }
            }
        });
        $A.enqueueAction(action);
    }
    
})
What I need to do? What I am forgetting?
Hey guys,

I need help with the code below. It work, but when the second for is running I`m afraid that it cause a system error because it's runing many times the same consult. What I need to do is change this to use a Map<key,value> and stay with only one for and a Map<key,value>. How I do this?
 
public static void stopAccountDelete (List<Account> listAcc){

        try{
            for(Account acc : listAcc){
                for(Opportunity opp : [SELECT AccountId FROM Opportunity WHERE IsWon = true]){
                    if(acc.Id == opp.AccountId){
                        acc.Id.adderror('Account cannot be deleted, because exists a Opportunity associated!');
                    }
                }
            }
        }

        catch (DmlException e) {
            System.debug('DML error: ' + e.getMessage());
        }

        catch (Exception ex) {
            System.debug('System error: ' + ex.getMessage());
        }

    }
Thanks,
Junior, Jonas C.
I need validate one checkbox. If your value change to true, the form fields should be disable until another condition be attended. This another condition is already done, but I cannot do with the fields stay disable. I need help please.

The JavaScript code:
<script>
	function disableFields(){
		if (document.getElementById('isLowIncomeCheck') == true) {
			$('tipoBaixaRenda').prop('disabled',true);
			$('tipoDocumento').prop('disabled',true);
	
			console.log('I am in disableFields method'));
			document.getElementById('tipoBaixaRenda').disabled = true;
			document.getElementById('tipoDocumento').disabled = true;
			document.getElementById('grauParentesco').disabled = true;
			document.getElementById('numDocumento').disabled = true;
			document.getElementById('clienteBeneficiado').disabled = true;
			document.getElementById('ufNascimento').disabled = true;
			document.getElementById('codigoUfc').disabled = true;
			document.getElementById('dataNascimento').disabled = true;
			//I need disable the button below too
		}
	}
</script>
The VF code:
<apex:pageBlock title="Cliente Baixa Renda" id="block1">
	<!-- I need validate the checkbox below. If it change to true the fields above should be disabled -->
	<apex:inputcheckbox id="isLowIncomeCheck" required="false" value="{!isLowIncome}">
		<apex:actionsupport oncomplete="disableFields()" event="onclick" rerender="lowIncomeForm" action="{!verifySaveLoad}" />
	</apex:inputcheckbox>
	<apex:outputPanel layout="block" id="lowIncomeForm" >
		<apex:pageBlockSection id="formBaixaRenda" rendered="{!isLowIncome}" columns="2" collapsible="true">
			<apex:inputField value="{!thisCase.CNT_O_cliente_beneficiado__c}" >
				<apex:actionSupport oncomplete="removeNoneValue()" event="onchange" action="{!isBenefited}" reRender="formBaixaRenda" />
			</apex:inputField>
			<apex:inputField id="tipoBaixaRenda" value="{!thisCase.CNT_Tipo_de_Baixa_Renda__c}" rendered="true" />
			<apex:inputField id="tipoDocumento" value="{!thisCase.CNT_Tipo_de_Documento__c}" /> 
			<apex:inputField id="grauParentesco" value="{!thisCase.CNT_Grau_de_parentesco__c}" /> 
			<apex:inputField id="numDocumento" value="{!thisCase.CNT_Numero_do_Documento__c}" /> 
			<apex:inputField id="clienteBeneficiado" rendered="{!IF(thisCase.CNT_O_cliente_beneficiado__c = 'Não', true, false)}" value="{!thisCase.CNT_Nome_do_Titular_do_Benef_cio__c}" />
			<apex:inputField id="ufNascimento" value="{!thisCase.CNT_UF_Nascimento__c}"  />
			<apex:inputField id="codigoUfc" value="{!thisCase.CNT_Codigo_UF__c}" />
			<apex:inputField id="dataNascimento" value="{!thisCase.CNT_Data_de_nascimento__c}" />
			<apex:pageBlockSectionItem />  
			<apex:commandButton style="align:left;"  value="Salvar" action="{!save}"/> 
		</apex:pageBlockSection>
	</apex:outputPanel>
</apex:pageBlock>
I will appreciate any help or suggestion.

Thanks,
Junior, Jonas C.
Hi guys,

I am building a new Lightining Component and need help, please. I have two columns in my main page. I have an Object called: Produtos__c. The left column needs show all Produtos__c.Category__c from the database (DONE). When the user to click in some category, I need show all records with the category clicked by user in right column (NEED HELP).

Something like this:
User-added image
As saw, all products are being shown.

Project details:

InfoSalesMain.cmp
<aura:component controller="InfoSalesController" implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,force:lightningQuickAction,lightning:isUrlAddressable" access="global" > 
    
    <aura:handler name="init" value="this" action="{!c.doInit}" />
    
    <aura:attribute name="idProduto" type="String" />
    <aura:attribute name="DetalheProduto" type="Boolean" default="false" />
    <aura:attribute name="Name" type="String"/>
    <aura:attribute name="listaProduto" type="List" default="[]"/>
    <aura:attribute name="listaProdutoCategoria" type="List" default="[]"/>
    <aura:attribute name="listaProdutoByCategory" type="List" default="[]"/>
    <aura:attribute name="produto" type="Object" />
    
    <div class="slds-grid slds-wrap">
        <div class="slds-size_1-of-6">
            <div class="slds-box slds-theme_default">
                Bem-vindo, {!v.Name}
                <br /><br />
                <b>CATEGORIAS EXISTENTES</b>
                <br /><br />
                <aura:iteration items="{! v.listaProdutoCategoria }" var="produto">
                    <ul class="slds-list_horizontal">
                        <li> <a onclick="{!c.categoriaSelecionada}" href="#">{! produto.Category__c }</a> </li>
                    </ul>
                </aura:iteration>
            </div>
        </div>
        <div class="slds-size_5-of-6">
            <div class="slds-box slds-theme_default">
                <lightning:card>
                    <div class="slds-p-left_medium slds-p-right_medium">
                        <ul class="slds-list_vertical slds-has-dividers_top-space">
                            <aura:iteration items="{! v.listaProduto }" var="produto" >
                                <!-- Activate the next line when discovered how get ProdutoByCategory -->
                                <!-- <aura:iteration items="{! v.listaProdutoByCategory }" var="produto" > -->
                                <li class="slds-list__item">
                                    <!-- Here will be the produto image -->
                                    <lightning:avatar size="large" src="/docs/component-library/app/images/examples/avatar2.jpg" initials="CR" fallbackIconName="standard:person_account" alternativeText="Cindy Rice" class="slds-m-right_small"/>
                                    <b>Descrição: </b> {! produto.Description__c }<br/>
                                    <b>Preço:</b> R$ {! produto.Price__c }
                                </li>
                            </aura:iteration>
                        </ul>
                    </div>
                </lightning:card>
            </div>
        </div>
    </div>
    <!-- NEXT SCREEN IS NOT COMPLETE -->
    <aura:if isTrue="{! v.DetalheProduto }">
        <c:DetalheProduto idProduto="{! v.idProduto }"/> 
    </aura:if>
</aura:component>
InfoSalesController.apxc
public class InfoSalesController {
    
    @AuraEnabled
    public static String saveProduto_CTRL(String jsonProduto){
        Produto__c produto = (Produto__c) Json.deserialize(jsonProduto, Produto__c.class);        
        UPSERT produto;
        return 'Produto inserido com sucesso';   
    }
    
    @AuraEnabled
    public static Produto__c getProdutoSObj(){
        Produto__c prod = [SELECT Id, Capacidade__c, Category__c, Description__c, Foto__c, Frequencia__c, Inches__c, Price__c, Socket__c, Storage__c FROM Produto__c];
        return prod;
    }
    
    @AuraEnabled
    public static String deleteProduto_CTRL(String jsonProduto){
        
        Produto__c produto = (Produto__c) Json.deserialize(jsonProduto, Produto__c.class);
        delete produto;
        return 'Produto excluído com sucesso';
    }
    
    @AuraEnabled
    public static List<Produto__c> getListProduto_CTRL(){
        List<Produto__c> listReturnProd = [SELECT Id, Description__c, Foto__c, Price__c, Category__c FROM Produto__c];
        listReturnProd.sort();
        System.debug('listReturnProd: '+listReturnProd);
        return listReturnProd;       
    }
    
    @AuraEnabled
    public static List<AggregateResult> getProdutoCategory_CTRL(){
        List<AggregateResult> listReturnCategoryProd =[SELECT Category__c FROM Produto__c GROUP BY Category__c ORDER BY Category__c ASC];
        return listReturnCategoryProd;
    }
    
    @AuraEnabled
    public static List<Produto__c> getProdutoByCategory_CTRL(String paramCtgSelecionada){
        List<Produto__c> listReturnProdutoByCategory = [SELECT Id, Description__c, Foto__c, Price__c, Category__c FROM Produto__c WHERE Category__c =: paramCtgSelecionada];
        return listReturnProdutoByCategory;
    }
    
    @AuraEnabled
    public static String getUserName() {
        return userinfo.getName();
    }
    
}
InfoSalesMainController.js
({
 	doInit: function(component, event, helper) {
        helper.getUser(component);
        helper.getProdutos(component);
        helper.getCategoriaProduto(component);
    },
    categoriaSelecionada : function(component, event, helper) {
    	//helper.getCategoriaSelecionada(component);
    	var src = event.getSource();
        var name = src.get("v.value");
        component.set("listaProdutoByCategory",name);
    }
})
InfoSalesMainHelper.js
({
    getUser : function(component){
        var action = component.get("c.getUserName");
        action.setCallback(this, function(response){
            var state = response.getState();
            if (state === "SUCCESS") {
                component.set("v.Name", response.getReturnValue());
            }
        });
        $A.enqueueAction(action);
    },
    getProdutos : function(component) {
        var action = component.get("c.getListProduto_CTRL");
        action.setCallback(this, function(response) {
            var state = response.getState();
            if (state === "SUCCESS") {
                component.set('v.listaProduto', response.getReturnValue());
            } else if (state === "ERROR") {
                alert('Erro: Lista vazia');
                var errors = response.getError();
                if (errors) {
                    if (errors[0] && errors[0].message) {
                        console.log("Error message: " + 
                                    errors[0].message);
                    }
                } else {
                    console.log("Unknown error");
                }
            }
        });
        $A.enqueueAction(action);
    },
    getCategoriaProduto : function(component) {
        var action = component.get("c.getProdutoCategory_CTRL");
        action.setCallback(this, function(response) {
            var state = response.getState();
            if (state === "SUCCESS") {
                component.set('v.listaProdutoCategoria', response.getReturnValue());
            } else if (state === "ERROR") {
                alert('Erro: Lista vazia');
                var errors = response.getError();
                if (errors) {
                    if (errors[0] && errors[0].message) {
                        console.log("Error message: " + 
                                    errors[0].message);
                    }
                } else {
                    console.log("Unknown error");
                }
            }
        });
        $A.enqueueAction(action);
    },
    
	getCategoriaSelecionada : function(component) {
        var action = component.get("c.getProdutoByCategory_CTRL");
        action.setParams({ 
            paramCtgSelecionada : component.get("v.categoriaClicada")//How to pass this variable to apex?
        });
        action.setCallback(this, function(response) {
            var state = response.getState();
            if (state === "SUCCESS") {
                component.set('v.listaProdutoByCategory', response.getReturnValue());
            } else if (state === "ERROR") {
                alert('Erro: Lista vazia');
                var errors = response.getError();
                if (errors) {
                    if (errors[0] && errors[0].message) {
                        console.log("Error message: " + 
                                    errors[0].message);
                    }
                } else {
                    console.log("Unknown error");
                }
            }
        });
        $A.enqueueAction(action);
    }
    
})
What I need to do? What I am forgetting?
Hey guys,

I need help with the code below. It work, but when the second for is running I`m afraid that it cause a system error because it's runing many times the same consult. What I need to do is change this to use a Map<key,value> and stay with only one for and a Map<key,value>. How I do this?
 
public static void stopAccountDelete (List<Account> listAcc){

        try{
            for(Account acc : listAcc){
                for(Opportunity opp : [SELECT AccountId FROM Opportunity WHERE IsWon = true]){
                    if(acc.Id == opp.AccountId){
                        acc.Id.adderror('Account cannot be deleted, because exists a Opportunity associated!');
                    }
                }
            }
        }

        catch (DmlException e) {
            System.debug('DML error: ' + e.getMessage());
        }

        catch (Exception ex) {
            System.debug('System error: ' + ex.getMessage());
        }

    }
Thanks,
Junior, Jonas C.