Archive for the ‘ Dynamics AX ’ Category

Müşteri cirosunu hesaplayan bir query örneği

Merhaba

Müşteri adatandırma adıyla yaptığım bir raporda kullandığım müşterinin belli kriterlere göre cirosunu hesaplayan query’ i paylaşıyorum. Burda Query kullanmamın asıl  sebebi range olarak verilecek olan değerlerin bazen boşta gelebiliyor olması. Boş olma durumununda hesaplanması için query de if le kontroller yapmak zorunda kaldım. 

Metodu çağıran kod şöyle:


 element.sumCiro(CustTrans.AccountNum, CustTrans.OrderAccount,
                         CustTrans.ETGSalesResponsible , CustTrans.ETGSalesUnitId);

Metodumuz şöyle:


void sumCiro(AccountNum _accountNum , CustAccount _custAccount , EmplId _emplId , smmSalesUnitId _unitId)
{
    CustTrans   custTrans;

    Query                   q;
    QueryRun                qRun;
    QueryBuildDataSource    qbdsCustTrans;
    QueryBuildRange         qbrEmplID;
    QueryBuildRange         qbrCustAccount;
    QueryBuildRange         qbrAccountNum;
    QueryBuildRange         qbrUnitId;

    ;
    Ciro = 0;

    q   = new query();
    qbdsCustTrans = q.addDataSource(tableNum(CustTrans));
    qbdsCustTrans.addSelectionField(fieldNum(CustTrans, AmountMst), SelectionField::Sum);

    if(printAccountNum)
    {
        qbrAccountNum = qbdsCustTrans.addRange(fieldNum(CustTrans, AccountNum));
        qbrAccountNum.value(sysQuery::value(_accountNum));
    }
    if(printOrderAccount)
    {
        qbrCustAccount = qbdsCustTrans.addRange(fieldNum(CustTrans, OrderAccount));
        qbrCustAccount.value(sysQuery::value(_custAccount));
    }
    if(printSalesRes)
    {
        qbrEmplID = qbdsCustTrans.addRange(fieldNum(CustTrans, ETGSalesResponsible));
        qbrEmplID.value(sysQuery::value(_emplId));
    }
    if(printUnitID)
    {
        qbrUnitId = qbdsCustTrans.addRange(fieldNum(CustTrans, ETGSalesUnitId));
        qbrUnitId.value(sysQuery::value(_unitId));
    }

    qbdsCustTrans.addRange(fieldNum(CustTrans, ETGReversed)).value(sysQuery::value( ETGReverseType::No));
    qbdsCustTrans.addRange(fieldNum(CustTrans,
               TransType)).value(sysQuery::valueNot( LedgerTransType::Settlement));

    qbdsCustTrans.addRange(fieldnum(CustTrans, TransDate)).value(sysquery::range(startDate , endDate));
    qbdsCustTrans.addRange(fieldnum(CustTrans, AmountMST)).value('( AmountMST > 0 )');

    qRun = new QueryRun(q);
    while(qRun.next())
    {
       custTrans = qRun.get(tableNum(CustTrans));

       Ciro = CustTrans.AmountMST;

    }
}

Selamlar.

Microsoft Dynamics AX 2009 – Development Academy Eğitimi

Tarih: 16,17, 23, 24, 30 Eylül – 1,7,8, 14, 15, 21, 22, 28 Ekim – 4 Kasım 2011

Süre: 15  gün

Eğitmen: Fatih Demirci

Eğitim Hakkında: Bu eğitim, katılımcıları en temel düzeyden başlayarak Dynamics Ax içinde geliştirme yapabilecek seviyeye getirmeyi amaçlamaktadır. Eğitim süresince Dynamics AX geliştirici adayının gerçek ortamda karşılaşabileceği örnekler incelenerek hedefe yönelik çalışmalar yapılmaktadır.

Katılımcı Profili: Dynamics AX geliştirici adayları

Bu kursu bitirdiğinizde: Katılımcılar eğitim sonunda, Dynamics AX 2009 ile temel düzeyde kod geliştirme özelliklerini ve geliştirme ortamı yeteneklerini öğrenmiş olacaklardır. Bu seviye, katılımcıların geliştirmelerin büyük kısmının yapılabilmesi için yeterlidir.

Ön Gereksinimler:

  • Temel Microsoft Windows kullanım bilgisi
  • Programlama metodolojisi ve entegre geliştirme ortamları ile ilgili temel bilgiler (.net platformuna aşinalık)
  • Genel Microsoft Dynamics AX bilgi birikimi faydalı olmakla birlikte şart değildir.

Ek olarak, tavsiye edilen ancak şart olmayan 280020 – Introduction to Microsoft Dynamics AX 2009 eğitimi faydalı olabilir.

Eğitim İçeriği:

  • MorphX’e giriş
  • Dynamics AX’ın mimarisi ve temel kavramları
  • Kullanıcı yetkilendirme, Kullanıcı ara yüzleri (Formlar)
  • DataDictionary, Rapor düzenlemeleri
  • X++’a giriş, X++ kontrol cümlecikleri
  • Sınıflar ve nesneler
  • Veri tabanına erişim, İstisna yönetimi
  • Geliştirme araçları
  • Veri işleme (IO, FileIO, XML, ODBC, Microsoft® Excel® )
  • Sınıflar, raporlar ve formlar, Numara serileri

Ücrete dahil olanlar:

  • Eğitimin son günü (15.gün) her bir kişi için bir defalık sınav hakkı
  • Eğitime katılacak her bir katılımcı için 10 TL değerinde yemek kuponu
  • Her bir katılımcı için (pdf formatında) kitap.

 

Eğitim Bedeli:  1800 USD + KDV / Kişi

Yer: Datatraining (ETG), İnönü cad. Çetinkaya İş Merkezi No: 92 Kat:5 Kozyatağı / İstanbul

Tel: 0(216) 380 60 00

Dil: Oturum Türkçe olarak sunulacaktır.

Kayıt için: Handan Yazıcıoğlu (handan@datatraining.net)

Label kodunun dile göre içeriğine kod ekranından ulaşmak

Merhaba

Label kodunun metnine ulaşmak için bu job örneğini kullanabilirsiniz.

static void retrieveLabel(Args args)
{
    Syslabel  label = new label("TR" ); //”En-us”
    Str     someTxt;
    ;
    someTxt = strFmt( label.extractString( literalStr("@SYS92165") ) );
    info(someTxt);
}

Ax’ta formun verikaynağındaki kayıtları kodla seçmek

Merhaba

Örneğin muşteriler formunda CTRL veya Shift tuşlarıyla birden çok kayıt seçebilirsiniz. Bazı durumlarda belli kritere uyan kayıtları seçili hale getirmek isteyebilirsiniz. Mesala para birimi dolardan farklı olan müşterileri seçip onların Id lerini görelim. CustTable formuna bir buton ekleyip click(); metoduna şu kodu yazalim.


void clicked()
{
    CustTable   custTableMark;
    CustTable   buffer;
    ;
    while select custTableMark
        where custTableMark.Currency != "USD" // herhangi bir kriter verebilirsiniz
    {
    // datasource taki kayıtları işaretliyoruz
    // CTRL veya Shift ile seçmişiz gibi davranır
        custTable_ds.markRecord(custTableMark,1); // 0 ve 1  işaretlemeyi belirler
    }

// DataSource'ta seçtiğimiz kayıtları dolanmak için bu kodu kullanabiliriz.
    for (buffer = custTable_ds.getFirst(true) ? custTable_ds.getFirst(true) : custTable_ds.cursor();
                  buffer;
                  buffer = custTable_ds.getnext())
    {
        info(buffer.AccountNum);
    }
}

Selamlar.

Axapta editöründeki Script menusune ekleme yapmak

Merhaba

Axapta editorunda sağ script menusu mevcut bazı uygulamalar mevcut. Sizde bu menuye kendi scriptlerinizi ekleyebilirsiniz.
Öreneğin benim geliştirmelerde kullandığım standart bir yorum satırı var. Şu şekilde ;

// <ETG – etg_fd > GN :002   T : 28.05.2011  A : Stok kartı düzeltmeleri

// <ETG – etg_fd > GN :002

Tanımı şöyle ;

// <ETG – /*Revizyon yapan*/> GN: /*Geliştirme no*/   T: /* Tarihi buraya yazıyoruz*/ A: /* açıklama*/
// Kodu Buraya Yazalım
// <ETG – /*Revizyon yapan*/> GN:

Bu kodu Script menusune eklemek için EditorScript klasına şu metodu eklemeliyiz.

Read more

Benzersiz kayıt anahtarını yeniden adlandırma.(renamePrimaryKey)

Merhaba,

Axaptada örneğin CustTable formunda sağ tıklayıp kayıt bilgileri derseniz aşağıdaki ekran açılır.

Yeniden adlandır butonu ile müşteri kodunu değiştirebilirsiniz. Ax bütün ilişkili tablolarda müşteri kodunu değiştirir. Bu işlem PrimaryKey olan diğer alanlar içinde gecerlidir. Farklı formlarda bu fonksiyonu kullanabilirsiniz. Ancak bu işlem tek bir kayıt için çalışır. Öreneğin siz bütün müşterilerin başında “M-” olsun istiyorsunuz bunu kodla yapmanız gerekir.

Örnek bir job yazalım:

Read more

Microsoft Dynamics CRM 2011 Application Eğitimi

 Tarih: 30-31 Mayıs/1-2 Haziran 2011

Süre: 4 gün

 

Hakkında: Toplam 4 iş günü sürecek bu eğitim, katılımcılara Microsoft Dynamics CRM 2011 uygulamasını kullanmak için gerekli becerileri kazandıracaktır. İçerik, kullanıcı arayüzü ve uygulama fonksiyonalitesi, özellikle de Satış Pazarlama Otomasyonu, Servis ve Servis Planlama üzerinde yoğunlaşmaktadır.

 

Katılımcı Profili: İçerik, Microsoft Dynamics CRM uygulama danışmanı olmak isteyen profesyoneller için hazırlanmıştır.

Read more

Form üzerinde ItemId çoğaltmak

Merhaba

InventTable (Madde kartları) formuda bir stok kodunu çoğaltmak isterseniz bir kaç tabloda kayıt oluşturmanız gerekir. Forda bu işlemler için metodlar mevcut. Bizde formda Create() metodunu kullanarak madde kodu hariç bütün alanları aynı olan bir kayıt oluşturuyoruz. Madde kodunu kullanıcının girmesini bekliyoruz kaydettiğinde Madde kodu hariç bire bir aynı kayıtları elde ediyoruz.

Bunun için inventTable a bir buton ekleyelim ve Clicked() metodundan şu metodu çağıralım.

Burada copyTableFields metodumu kullandım. Şu yazımda bu metottan bahsetmiştim.

 void ItemCopy()
{
    InventTable inventTableCopy;
    InventTableModule InventTableModulePurch ,InventTableModuleInvent, InventTableModuleSales;   
    ;   
Read more

Global bir findRecId() metodunu nasıl yazabiliriz

Merhaba

Ax ile yazılım yaparken bir çok kez RecId ye göre sorgulama yapmak zorunda kalmışsınızdır. Genelde Tablolarda findRecId() metodu bulunmaz. Ya direk select cümleciği yazarsınız veya tabloya  findRecId() metodu eklersiniz. Bu daha  iyi bir çözüm olur tabiki. Ancak global  klasına findRecId() metodu eklmek ve heryerden kullanmak daha pratik bir çözüm olabilir. Nasıl yazabileceğimize bakalım.

Herhangi bir tabloyu parametre olarak alabileceği için common kullanıyoruz.

static common findRecId(common _table,
                        RecId   _recId,
                        Boolean _forUpdate = false)
{
Read more

Herhangi bir tablo satırını bire bir çoğaltmak

Merhaba

Örneğin bir SalesTable kaydınız var. Bu kaydın bütün alanlarını başka bir satıra kopyalamak istiyorsunuz. Standartta olan data() metodunu kullanabilirsiniz. Örnek verecek olursak.

static void RecorKopyala(Args _args)
{
    SalesTable salesTable;
    SalesTable salesTableCopy;
    ;
    salesTable = SalesTable::find(“s00001″);
      salesTableCopy.data(salesTable);
    salesTableCopy.SalesId = “s0002″;
    salesTableCopy.insert();
    // salesTable ve salesTableCopy aynı bilgileri içerirler SalesId hariç
}
Read more
Page 10 of 21« First...8910111220...Last »