JScript eksempelkode: Control Closed Opportunity Dialogbox

Control Closed Opportunity Dialogbox

Remarks

The following code will only fire if a Opportunity is closed when the form is open. The code will not fire if the buttons, in the Ribbon; Closed as Won and Close as Lost is clicked.

Calling Code

function checkOpportunityClose() {
    // Check if Opportunity is closed
    if (event.Mode == 5){
        var array = getCloseOppInformation();
 
        // If Statecode = Lost, and CompetitorId = ""
        if (array[0] == 2 && array[4] == ""){
            alert('You selected Lost, please enter a Competitor')
            event.returnValue = false;   
        }
    }
}

 

Helper Code

function getCloseOppInformation() {
//******************************************************************
//* This function is used to retrieve the values from the close 
//* opportunity dialog.
//*
//* Please this function in the save event of the form to stop the
//* form from closing and prompt user for required fields.
//*
//* When saving, event.Mode=5 (deactivate event mode) indicates
//* that user closed the opportunity (won or lost)
//*
//* PARAMETERS
//* None
//*
//* RETURNVALUES
//* Returns:  array of values whereby:
//* [0] = 'statecode';      //1 = won, 2 = lost
//* [1] = 'statuscode';     //status reason
//* [2] = 'actualrevenue';  //actual revenue
//* [3] = 'actualend';      //actual close date
//* [4] = 'competitorid';   //competitorid
//* [5] = 'description';    //description
//* [6] = 'activityid';     //this is GUID for the new Close Opportunity activity
//* 
//* ORIGIN
//* Author:         Geron Profet (www.crmxpg.nl)
//* Original Idea:  http://a33ik.blogspot.com/2010/06/extended-handling-of-save-event-in.html
//******************************************************************
    var state = crmFormSubmit.crNewState.value;
    var status = crmFormSubmit.crNewStatus.value;
    var arr = new Array();
    arr[0] = state;
    arr[1] = status;

    // Build array of fields on close opp. (in order of appearance)
    var arrFields = new Array();
    arrFields[0] = 'statecode';     //1 = won, 2 = lost
    arrFields[1] = 'statuscode';    //status reason
    arrFields[2] = 'actualrevenue'; //actual revenue
    arrFields[3] = 'actualend';     //actual close date
    arrFields[4] = 'competitorid';  //competitorid
    arrFields[5] = 'description';   //description
    arrFields[6] = 'activityid';    // The  GUID for the Close Opportunity activity

    var xml = crmFormSubmit.crActivityXml.value;
    var XmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    XmlDoc.async = false;
    XmlDoc.loadXML(xml);

    for (var i = 0; i < arrFields.length; i++) {
        // Get close out information
        if (i > 1) {
            var xmlnode = XmlDoc.selectSingleNode("//opportunityclose/" + arrFields[i]);
            if (xmlnode != null) {
                arr[i] = xmlnode.nodeTypedValue;
            } else {
                arr[i] = "";
            }
        }
    }
    return arr;
}

Bliv medlem af CRMUG DK

De regionale afdelinger i CRMUG giver mulighed for a mødes med andre medlemmer af CRMUG i dit lokalområde. Hermed får du mulighed for at mødes ansigt til ansigt og vidensdele med andre brugere af Microsoft Dynamics CRM i dit område.

Læs mere den Danske afdeling af CRMUG...

Om Henrik Jensen

Jeg har altid fingeren på pulsen når det drejer sig om Microsofts produkter & teknologier, og især når det handler om Microsoft Dynamics CRM.

Henrik Jensen

Jeg har arbejdet professionelt i IT-branchen mere end 25 års, deraf mere end 18 år med CRM-systemer, og samtidig indehaver af mere end 50 Microsoft-certificeringer.

Mobil: +45 20 300 300
E-mail: hj@easyconsult.dk

EASYConsult ApS

Læs mere...

Downloads, værktøjer, installation og JScript

Downloade komponenter til MS CRM:
    • Microsoft Dynamics CRM 4.0
    • Microsoft Dynamics CRM 2011
    • Microsoft Dynamics CRM 2013
    • Microsoft Dynamics CRM 2015
    • Microsoft Dynamics CRM 2016

Liste over Opdateringspakker (Rollups):
    • Microsoft Dynamics CRM 4.0
    • Microsoft Dynamics CRM 2011
    • Microsoft Dynamics CRM 2013
    • Microsoft Dynamics CRM 2015
    • Microsoft Dynamics CRM 2016

Værktøjer til MS CRM:
    • Liste med værktøjer til MS CRM

Krav og opsætninger til installation:
    • Krav og opsætninger MS CRM 2011
    • Krav og opsætninger MS CRM 2013
    • Krav og opsætninger MS CRM 2015
    • Krav og opsætninger MS CRM 2016

JScript eksempelkode:
    • Javascript API-reference
    • Javascript eksempelkode

Diverse værktøjer:
    • Sysinternals
    • PowerShell og MS CRM 2011

Visual Studio, SSIS og Kingswaysoft
    • Visual Studio 2017
    • Dataværktøjer (SSIS) 2017
    • Kingswaysoft
    • SSIS Navnekonventioner

Månedsliste

Forbehold

Alt hvad du læser på denne blog er alene udtryk for mine egne holdninger og meninger, og kan ikke henføres til andet end som så.

De løsninger jeg fremstiller på denne blog er ikke nødvendigvis testet i et driftsmiljø. Hvis du gør brug af mine løsninger er det på eget ansvar.