Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Uncaught Error in $A.getCallback() [Cannot read property 'getElement' of
- undefined]
- throws at https://xxxx--sandboxv1.lightning.force.com/auraFW/javascript/nRhh35vBDuL0P3mlbcWPkg/aura_prod.js:8:15
- Object.updateAriaDescribedBy()@https://xxxx--sandboxv1.lightning.force.com/components/lightning/select.js:3:315
- Object.updateHelpMessage()@https://xxxx--sandboxv1.lightning.force.com/components/lightning/select.js:4:106
- Object.showHelpMessage()@https://xxxx--sandboxv1.lightning.force.com/components/lightning/select.js:7:239
- Object.eval()@https://xxxx--sandboxv1.lightning.force.com/components/lightning/select.js:8:60
- eval()@https://xxxx--sandboxv1.lightning.force.com/libraries/lightning/eventEmitterLibrary/EventEmitter.js:1:550
- b.emit()@https://xxxx--sandboxv1.lightning.force.com/libraries/lightning/eventEmitterLibrary/EventEmitter.js:1:528
- a.leave()@https://xxxx--sandboxv1.lightning.force.com/libraries/lightning/interactingStateLibrary/InteractingState.js:2:134
- eval()@https://xxxx--sandboxv1.lightning.force.com/libraries/lightning/rateLimitLibrary/debounce.js:1:349
- <aura:component controller="createOrderFromWonOpprotunityController" implements="force:lightningQuickActionWithoutHeader,flexipage:availableForRecordHome,force:hasRecordId,force:hasSObjectName" access="global">
- <aura:attribute name="isWon" type="Boolean" default="false"/>
- <aura:attribute name="shouldContinue" type="Boolean" default="false"/>
- <aura:attribute name="notified" type="String" />
- <aura:handler name="init" value="{!this}" action="{!c.doInit}" />
- <div class="slds-scope">
- <div id="notificationRes"><span style="color: red;">{!v.notified}</span><br/></div>
- recordId = {!v.recordId}
- shouldContinue = {!v.shouldContinue}
- <aura:if isTrue="{!v.isWon == false}">
- <p> Your current opportunity is not <strong>closed</strong>. Please select on of the status below.</p>
- <lightning:select aura:id="selectClosedStage" name="selectClosedStage" label="Select an Stage Status" onchange="{!c.changeStatus}">
- <option value="">choose one...</option>
- <option value="Closed Won">Closed Won</option>
- <option value="Closed Lost">Closed Lost</option>
- </lightning:select>
- <aura:set attribute="else">
- <c:createOrderFromWonOpportunityAfterClosedWon recordId="{!v.recordId}" shouldContinue="{!v.shouldContinue}"/>
- </aura:set>
- </aura:if>
- </div>
- ({
- doInit : function(component, event, helper) {
- var action = component.get("c.isClosedWon");
- action.setParams({
- "oppId" : component.get("v.recordId")
- });
- action.setCallback(this, function(response) {
- var state = response.getState();
- console.log("doInit >> val >> " + response.getReturnValue());
- console.log("doInit >> state >> " + state);
- if (state === "SUCCESS") {
- component.set("v.isWon", response.getReturnValue());
- if (response.getReturnValue())
- component.set("v.shouldContinue", true);
- else
- component.set("v.shouldContinue", false);
- } else {
- component.set("v.notified", "A server Error occuried, please try again later.");
- }
- });
- $A.enqueueAction(action);
- },
- changeStatus : function (component, event, helper) {
- try {
- var selectValue = component.find("selectClosedStage").get("v.value");
- var action = component.get("c.CustomUpdateRecord");
- action.setParams({
- "oppId" : component.get("v.recordId"),
- "stageName" : selectValue
- });
- console.log('changeStatus >> selectValue >> '+ selectValue);
- action.setCallback(this, function(response) {
- var res = response.getReturnValue();
- console.log("changeStatus >> val >> " + response.getReturnValue());
- console.log("changeStatus >> state >> " + response.getState());
- if (selectValue === 'Closed Won') {
- component.set("v.isWon", true);
- component.set("v.shouldContinue", true);
- } else {
- component.set("v.isWon", false);
- component.set("v.shouldContinue", false);
- component.set("v.notified", 'the current opportunity is Closed Lost. No Order can be created for it');
- }
- });
- $A.enqueueAction(action);
- } catch (e) {
- console.log(e);
- }
- }
- })
- <aura:component controller="createOrderFromWonOpprotunityController">
- <aura:attribute name="recordId" type="String"/>
- <aura:attribute name="shouldContinue" type="Boolean"/>
- <aura:attribute name="errorCheck" type="List" />
- <pre>
- under child :
- recordId = {!v.recordId}
- shouldContinue = {!v.shouldContinue}
- </pre>
- <aura:if isTrue="{!v.shouldContinue}">
- <div class="slds-grid slds-grid--align-spread">
- You are about to convert the current Opportunity to an Order.<br/>
- If you are ready, Please click on "Confirm" button below<br/>
- <lightning:button label="Confirm" onclick="{!c.doSubmit}" class="slds-m-top--medium" />
- </div>
- <aura:set attribute="else">
- <p>Sorry you can not convert the current Opportunity to an Order for the following reason.</p>
- <aura:iteration items="{!v.errorCheck}" var="item">
- <span style="color: red;"> - {!item}</span>
- </aura:iteration>
- </aura:set>
- </aura:if>
- </aura:component>
- ({
- doSubmit : function (component, event, helper) {
- console.log("confirm has been hit");
- var action = component.get("c.createOrder");
- action.setParams({
- "oppId" : component.get("v.recordId")
- });
- console.log("cdoSubmit >> " + component.get("v.recordId"));
- action.setCallback(this, function(response) {
- var res = response.getReturnValue();
- console.log("res >> " + res);
- if (response.getState() === 'SUCCESS') {
- var NotificationError = [];
- if (res !== 'SUCCESS' && res !== '') {
- switch(res) {
- case 'NotClosedWon':
- NotificationError.push("change this Opportunity Status as Won before continuing.");
- break;
- case 'NoProduct' :
- NotificationError.push("The current Opportunity does not have any associated products");
- break;
- case 'ErrorAccountBillingCity' :
- NotificationError.push("The Account associated to the current Opportunity is missing the Billing City Information.");
- break;
- case 'ErrorAccountBillingStreet' :
- NotificationError.push("The Account associated to the current Opportunity is missing the Billing Street Information.");
- break;
- case 'ErrorAccountBillingState' :
- NotificationError.push("The Account associated to the current Opportunity is missing the Billing State Information.");
- break;
- case 'ErrorAccountBillingPostalCode' :
- NotificationError.push("The Account associated to the current Opportunity is missing the Billing Postal Code Information.");
- break;
- case 'ErrorAccountBillingCountry' :
- NotificationError.push("The Account associated to the current Opportunity is missing the Billing Country Information.");
- break;
- case 'ErrorNoContactAssociated' :
- NotificationError.push("The Account associated to the current Opportunity do not have any Contact associated.");
- break;
- case 'Error' :
- component.set("v.notified", "An Error happened, please try again. If it persists please contact your administrator");
- break;
- } //end switch
- component.set("v.errorCheck", NotificationError);
- component.set("v.shouldContinue", false);
- console.log(NotificationError);
- } //end if
- else {
- console.log("after Process: " + res);
- var resultsToast = $A.get("e.force:showToast");
- resultsToast.setParams({
- "title": "Conversion done succesfully",
- "message": "Your Order is now available under the Order tab. Please review and Activate."
- });
- $A.get("e.force:closeQuickAction").fire();
- resultsToast.fire();
- }
- } else {
- component.set("v.errorCheck", ["An Error happened, please try again. If it persists please contact your administrator"]);
- }
- });
- $A.enqueueAction(action);
- }
- })
- public with sharing class createOrderFromWonOpprotunityController {
- @AuraEnabled
- public static Boolean isClosedWon (String oppId) {
- try {
- Opportunity opp = [SELECT Id, IsClosed, StageName FROM Opportunity Where Id= :oppId][0];
- if( opp.StageName.equals('Closed Won'))
- return true;
- else return false;
- } catch(Exception e) {
- system.debug(e);
- }
- return false;
- }
- @AuraEnabled
- public static Boolean CustomUpdateRecord (String oppId, String stageName) {
- try {
- Opportunity opp = [SELECT Id, IsClosed, StageName FROM Opportunity Where Id= :oppId][0];
- opp.StageName = stageName;
- update opp;
- return true;
- } catch(Exception e) {
- system.debug(e);
- }
- return false;
- }
- public static String isMissingData(String oppId) {
- try {
- Opportunity opp = [SELECT Id, AccountId, IsClosed, StageName, CloseDate, OrderId__c FROM Opportunity Where Id= :oppId][0];
- system.debug(opp);
- Boolean shouldContinue = opp.IsClosed && opp.StageName == 'Closed Won'; //&& (opp.OrderId__c == null || opp.OrderId__c == '');
- system.debug('shouldContinue >>> ' + shouldContinue);
- if (shouldContinue) {
- if (isMissingOpportunityProduct(oppId))
- return 'NoProduct';
- else {
- String missingInfoAccount = isMissingAccountInfo(opp);
- if (!missingInfoAccount.equals(''))
- return missingInfoAccount;
- String oppSED = isMissingOpportunityProductStartEndDate(oppId);
- if (!oppSED.equals(''))
- return oppSED;
- /*
- String missingIntakeForm = MissingIntakeForm(oppId);
- if (!missingIntakeForm.equals(''))
- return missingIntakeForm;
- */
- }
- } else {
- return 'NotClosedWon';
- }
- return 'SUCCESS';
- }catch(Exception e) {
- system.debug(e);
- return 'Error';
- }
- }
- public static String isMissingAccountInfo(Opportunity opp) {
- Account acc = [SELECT Id, AccountNumber, BillingStreet, BillingCity, BillingPostalCode, BillingState, BillingCountry FROM Account WHERE Id = :opp.AccountId][0];
- system.debug(acc);
- Contact contact = [SELECT Id FROM Contact WHERE AccountId = :acc.Id][0];
- if (acc.BillingCity == null)
- return 'ErrorAccountBillingCity';
- if (acc.BillingStreet == null)
- return 'ErrorAccountBillingStreet';
- if (acc.BillingPostalCode == null)
- return 'ErrorAccountBillingPostalCode';
- if (acc.BillingState == null)
- return 'ErrorAccountBillingState';
- if (acc.BillingCountry == null)
- return 'ErrorAccountBillingCountry';
- if (contact == null)
- return 'ErrorNoContactAssociated';
- return '';
- }
- public static Boolean isMissingOpportunityProduct(String oppId) {
- try {
- List<OpportunityLineItem> ProductsInOpportunity = [SELECT Id FROM OpportunityLineItem WHERE OpportunityId = :oppId];
- return ProductsInOpportunity.size() == 0;
- } catch(Exception e) {
- system.debug(e);
- return true;
- }
- }
- public static String isMissingOpportunityProductStartEndDate(String oppId) {
- List<OpportunityLineItem> ProductsInOpportunity = [SELECT Id, Product2Id, ServiceDate, End_Date__c FROM OpportunityLineItem WHERE OpportunityId = :oppId];
- if (ProductsInOpportunity.size() > 0) {
- for(OpportunityLineItem line : ProductsInOpportunity) {
- if (line.ServiceDate == null || line.End_Date__c == null)
- return 'MissingDate';
- }
- }
- return '';
- }
- public static String isMissingIntakeForm(String oppId) {
- try {
- List<OpportunityLineItem> ProductsInOpportunity = [SELECT Id, Name, OpportunityId, Intake_Form_Required__c,
- IntakeFormId__c, Product2Id, Product_Intake_Form__c
- FROM OpportunityLineItem
- WHERE OpportunityId = :oppId];
- system.debug('ProductsInOpportunity');
- system.debug(ProductsInOpportunity);
- for (OpportunityLineItem item : ProductsInOpportunity) {
- if (item.Intake_Form_Required__c == true ) {
- Product2 pro = [SELECT Id, Name, Product_Intake_Form__c FROM Product2 WHERE Id = : item.Product2Id][0];
- String objIntakeFormName = pro.Product_Intake_Form__c;
- String query = 'SELECT Id FROM ' + objIntakeFormName + ' WHERE OpportunityProductId__c = ''+ item.Id +''';
- List<SObject> IntakeForms = Database.query(query);
- if (IntakeForms.size() == 0)
- return 'missingIntakeForm#'+ pro.Name;
- else {
- if (item.Product_Intake_Form__c == '' || item.Product_Intake_Form__c == null)
- item.Product_Intake_Form__c = objIntakeFormName;
- item.IntakeFormId__c = IntakeForms[0].Id;
- update item;
- }
- }
- }
- return '';
- }
- catch(Exception e) {
- system.debug(e);
- return 'missingIntakeForm#Error';
- }
- }
- @AuraEnabled
- public static String createOrder(String oppId) {
- try {
- //if (updateOppAsWon)
- // createOrderFromWonOpprotunityController.CustomUpdateRecord(oppId);
- system.debug('createOrder');
- String res = createOrderFromWonOpprotunityController.isMissingData(oppId);
- if (!res.equals('SUCCESS'))
- return res;
- Opportunity opp = [SELECT Id,IsClosed, Name, AccountId, Amount, CloseDate, Description, HasOpportunityLineItem,
- OwnerId, Pricebook2Id, StageName, OrderId__c
- FROM Opportunity
- WHERE Id = :oppId][0];
- system.debug(opp);
- List<OpportunityLineItem> ProductsInOpportunity = [SELECT Id, Name, Name__c, Description, OpportunityId, Product2Id, PricebookEntryId, ProductCode, UnitPrice,
- ListPrice, Final_Price__c, Months__c, SetupFee__c, ServiceDate, End_Date__c, Booking_Date__c,
- Product_Intake_Form__c, IntakeFormId__c
- FROM OpportunityLineItem
- WHERE OpportunityId = :oppId];
- Account acc = [SELECT Id, AccountNumber, BillingStreet, BillingCity, BillingPostalCode, BillingState, BillingCountry FROM Account WHERE Id = :opp.AccountId][0];
- if (opp.HasOpportunityLineItem) {
- system.debug(ProductsInOpportunity);
- system.debug(acc);
- Order order = new Order();
- order.AccountId = acc.Id;
- order.BillToContactId = [SELECT Id FROM Contact WHERE AccountId = :acc.Id][0].Id;
- order.BillingStreet = acc.BillingStreet;
- order.BillingCity = acc.BillingCity;
- order.BillingPostalCode = acc.BillingPostalCode;
- order.BillingState = acc.BillingState;
- order.BillingCountry = acc.BillingCountry;
- order.OpportunityId = opp.Id;
- order.Pricebook2Id = opp.Pricebook2Id;
- order.Name = 'Order_' + opp.Name;
- order.OwnerId = opp.OwnerId;
- order.EffectiveDate = system.today();
- order.Status = 'Draft'; // is status set to Activate, it cannot be changed
- insert order;
- system.debug(order);
- List<OrderItem> orderItems = new List<OrderItem>();
- for (OpportunityLineItem oppItem : ProductsInOpportunity) {
- Product2 pro = [SELECT Id, Name, ProductCode FROM Product2 WHERE Id = : oppItem.Product2Id][0];
- OrderItem orderProduct = new OrderItem();
- orderProduct.OrderId = order.Id;
- orderProduct.Name__c = oppItem.Name__c;
- orderProduct.Status__c = 'Draft';
- orderProduct.Product2Id = pro.Id;
- orderProduct.Product_Name__c = pro.Name;
- orderProduct.PricebookEntryId = oppItem.PricebookEntryId;
- orderProduct.Description = oppItem.Description;
- orderProduct.Quantity = oppItem.Months__c;
- orderProduct.Month__c = oppItem.Months__c;
- orderProduct.UnitPrice = oppItem.UnitPrice;
- orderProduct.ServiceDate = oppItem.ServiceDate; // correspond to start date
- orderProduct.EndDate = oppItem.End_Date__c;
- orderProduct.Booking_Date__c = oppItem.Booking_Date__c;
- orderItems.add(orderProduct);
- }
- insert orderItems;
- opp.OrderId__c = order.Id;
- update opp;
- system.debug(opp);
- return 'SUCCESS'; //order.Id;
- }
- } catch( Exception e) {
- system.debug(e);
- return 'Error';
- }
- return '';
- }
- }
Add Comment
Please, Sign In to add comment