Szanse sprzedaży, podobnie jak inne obiekty, mają tzw. stan i status (statecode i statuscode). Kiedy zamykamy szanse sprzedaży z poziomu interfejsu Microsoft Dynamics CRM, nie zastanawiamy się często, co tak naprawdę robi CRM „pod spodem”. Otóż, system zmienia wtedy stan i status konkretnej szansy sprzedaży.
Jeśli chcemy zamknąć szansę sprzedaży programistycznie (z poziomu kodu), nie zmieniamy jednak jej stanu, jak robilibyśmy to w przypadku innych obiektów. Aby zamknąć szansę sprzedaży, należy użyć jednej z dwóch klas: WinOpportunityRequest albo LoseOpportunityRequest. Obiekty te mają dwie właściwości, które powinniśmy ustawić: opportunityclose i status. Ten pierwszy obiekt reprezentuje działanie odzwierciedlające zamknięcie szansy sprzedaży. Działanie to ma szereg właściwości, które możemy chcieć ustawić, np. actualend czy actualrevenue.
Przykładowy kod może wyglądać tak (należy dodać właściwe wartości):

opportunityclose zamkniecie = new opportunityclose();
zamkniecie.opportunityid = new Lookup();
zamkniecie.opportunityid.Value = GUID_SZANSY_SPRZEDAZY;
zamkniecie.actualrevenue = WARTOSC_SZANSY_SPRZEDAZY;
zamkniecie.actualend = AKTUALNA_DATA;

WinOpportunityRequest winReq = new WinOpportunityRequest();
winReq.OpportunityClose = zamkniecie;
winReq.Status = -1; // -1 pozwoli systemowi ustawić domyślny status

crmService.Execute(winReq);

Analogicznie, można zamknąć szansę sprzedaży jako przegraną, używając LoseOpportunityRequest. Miłego programowania!

Reklama