11 Aralık 2012 Salı

CRM 2011 JAVASCRIPT- KULLANICI ROLU (GETUSERROLES)


Entityler üzerinde calısırken kullanıcının rolune gore işlem yapabilme yetkısı verılmesı gerektıgınde oncelıkle kullanıcının rollerını bılmek lazım.Bunu da Xrm.Page.context.getUserRoles() ifadesiyle elde edebiliyoruz.

Xrm.Page.context.getUserRoles() ifadesını kullanınca kullanıcının rollerı bir dizi halınde doner.Bellı bir role gore ıslem yapabilme yetkisi vereceksek tek yapmak gereken dizinin elemanlarında aradıgımız degerle eslestırmek.

Önemli: Dizinin satırları bize kullanıcı rolunun guid degeri verir.Eger kullanıcı rolunun adını almak ıstıyorsak ya fetchxml yoluyla ya da jquery kullanarak elimizdekı guid degere karsılık gelen rolu Crm içerısındekı guvenlık rolu entitysınden cekmemız gerekmektedir.

Asagıda ornek bir kod satırı bulunmaktadır.

Örnek:
Asagıda guid degerıne sahip oldugum bir user rolunu bulup,ona gore belırlı bır alanın enable ozellıgını set edıyorum.


function funk1() {

    var deger= Xrm.Page.getAttribute("attributename").getValue();
    if (deger== 1) {
        var currentUserRoles = Xrm.Page.context.getUserRoles(); // kullanıcının rollerını alma
        if (currentUserRoles != null && currentUserRoles.length != 0)// kullanıcı rollerını tek tek dolasma
            for (var i = 0; i < currentUserRoles.length; i++) {
                var userRole = currentUserRoles[i];
                if (userRole.toString() == 'CF3289F2-2398-E111-9F2C-00155D1A5106') {
                    Xrm.Page.getControl("check").setDisabled(false);
                    break;
                }
                else {
                    Xrm.Page.getControl("check").setDisabled(true);
                    break;
                }

            }

    }

}

10 Aralık 2012 Pazartesi

CRM 2011 JAVASCRİPT-SAVE METOTLARI (Varlığı javascript ile kaydetme)




Entity i kaydetmek için 3 tip vardır.

1.Entity formundaki SAVE butonu

Xrm.Page.data.entity.save();
2.  Formdaki 'SAVE AND NEW'

Xrm.Page.data.entity.save('saveandnew');

3. 'SAVE AND CLOSE'
Xrm.Page.data.entity.save('saveandclose');


Kaydetme Modları
Save
 Code: 1
 Function: crmForm.Save();

SaveAndClose
 Code: 2
 Function: crmForm.SaveAndClose();

SaveAsCompleted
 Code: 58
 Function: SaveAsCompleted();

SaveAndNew
 Code: 59
 Function: crmForm.SubmitCrmForm(59, true, true, false);

7 Aralık 2012 Cuma

CRM 2011-INVOICE PRICING LOCK and UNLOCK


LOCK:
                    
  LockInvoicePricingRequest lockInvoiceRequest =
                        new LockInvoicePricingRequest()
                    {
                        InvoiceId = _invoiceId
                    };
                    _serviceProxy.Execute(lockInvoiceRequest);

                    Console.WriteLine("Invoice pricing lock.");

UNLOCK:


  UnlockInvoicePricingRequest unlockInvoiceRequest =
                        new UnlockInvoicePricingRequest()
                    {
                        InvoiceId = _invoiceId
                    };
                    _serviceProxy.Execute(unlockInvoiceRequest);

                    Console.WriteLine("Invoice pricing unlocked.");

CRM 2011-ORDER DAN INVOICE OLUSTURMA (Convert the sales order to an Invoice)


ConvertSalesOrderToInvoiceRequest  clasıını kullanarak order dan invoice olusturabiliyoruz.
Gereklı olan hangı order ve hangı sutunlarının invoice a donusecegını vermek.

Örnek:
ColumnSet invoiceColumns =new ColumnSet(){AllColumns=true};//tum kolonları invoice donustur.

ConvertSalesOrderToInvoiceRequest req =
    new ConvertSalesOrderToInvoiceRequest()
    {
        SalesOrderId = new Guid("5481CF89-BFC1-E011-844B-1CC1DEF177B7"),
        ColumnSet = invoiceColumns
    };
ConvertSalesOrderToInvoiceResponse response =
                                                            (ConvertSalesOrderToInvoiceResponse)service.Execute(req);
Invoice invoice = (Invoice)response.Entity;

CRM 2011-TEKLİFİ ACTİVE DURUMUNA GETİRME(QUOTE ACTIVE)


 SetStateRequest activateQuote = new SetStateRequest()
                    {
                        EntityMoniker = quote.ToEntityReference(),// teklifi referans ver
                        State = new OptionSetValue((int)QuoteState.Active),// durumu active yap
                        Status = new OptionSetValue((int)quote_statuscode.InProgress) // bir status ver
                    };
                    _serviceProxy.Execute(activateQuote); // classı calıstır.

CRM içerisinden açılan custom page den açılan crm sayfasının yenilenmesi(Page Refresh)


function xrmpagerefresh() 

{
            window.parent.opener.parent.location.reload();
 }

"window.parent.opener.parent" bu kod ile sayfayı actıgımız crm sayfasına gecıs yaparız ve artık onunla ilgili javascriptler yazabiliriz.

Mesela custom page den  actıgımız crm sayfasıyla ilgili bazı degerleri cekelım.

var serverurl= window.parent.opener.parent.Xrm.Page.context.getServerUrl();
var organizationname= window.parent.opener.parent.Xrm.Page.context.getOrgUniqueName();

Bu gibi örnekleri turetebiliriz.

CRM 2011-SALES ORDER CLOSE İŞLEMİ


FulfillSalesOrderRequest classını kullanarak orderclose olusturarak siparişi kapatabiliriz.Status da bir durum vermek gereklidir.

Örnek;
FulfillSalesOrderRequest request = new FulfillSalesOrderRequest
            {
                OrderClose = new OrderClose
                {
                    SalesOrderId = new EntityReference 
                        { LogicalName = SalesOrder.EntityLogicalName, Id = _salesOrderId.Value }
                    
                },
                Status = new OptionSetValue(newStatus)
            };
FulfillSalesOrderResponse response= (FulfillSalesOrderResponse)crmService.Execute(request);