Posts Tagged ‘ Hierarchy

Proje teklif satırından otomatik WBS kaydı oluşturmak (AX 2012)

Merhaba

Ax 2012′de proje tekliflerini girerken teklif satırından otomatik WBS satırlarının oluşturulması için yazdığım metodu sizinle paylaşıyorum.

Bu metot sayesinden wbs ve teklif arasından etkileşimi sağlamış oluyoruz.

void addItemToWBS()
{
    PSAActivityEstimates    estimates;
    Hierarchy               hierarchy;
    HierarchyIdBase         hierarchyId;
    HierarchyTreeTable      hierarchyTreeTable;
    ;
    hierarchyId = HierarchyLinkTable::findRefTableRecId(tablenum(SalesQuotationTable),
                SalesQuotationTable.RecId).HierarchyId;
    hierarchyTreeTable   = HierarchyTreeTable::findbyNameonHierarchy(hierarchyId ,
           "FD_AnaKategori"); // Hangi kategoriye bağlanacak
    smmActivities      = smmActivities::find(hierarchyTreeTable.activityNumber());

    estimates.clear();
    estimates.ActivityNumber     = smmActivities.ActivityNumber;
    estimates.initFromInventTable(InventTable);
    estimates.InventDimId        = SalesQuotationLine.inventDimId;
    estimates.ItemId             = SalesQuotationLine.ItemId;
    estimates.ProjCategoryId     = SalesQuotationLine.ProjCategoryId;
    estimates.Quantity           = SalesQuotationLine.SalesQty;
    estimates.ProjTransType      = SalesQuotationLine.ProjTransType;
    estimates.Worker             = SalesQuotationLine.ProjectWorker;
    estimates.UnitSalesPrice     = SalesQuotationLine.SalesPrice;
    estimates.UnitCostPrice      = SalesQuotationLine.CostPrice;
    estimates.TotalSalesPrice    = SalesQuotationLine.LineAmount;
    estimates.TotalCostPrice     = SalesQuotationLine.SalesQty * SalesQuotationLine.CostPrice;
    estimates.LinePropertyId     = SalesQuotationLine.LinePropertyId;
    estimates.Description        = SalesQuotationLine.ProjDescription;
    estimates.PRGSalesUnit       = SalesQuotationLine.SalesUnit;
    estimates.insert();

    ttsBegin;
    SalesQuotationLine.selectForUpdate(true);
    SalesQuotationLine.PSARefRecId  = estimates.RecId;
    SalesQuotationLine.doUpdate();
    ttsCommit;

}

Update ve Delete kodları SalesQuotationLine içinde psaUpdateActivityEstimates() ve psaDeleteActivityEstimates() adiyla mevcut. Sistem bunları kullanıyor.

Selamlar.

Axaptada hiyerarşık bir tabloyu ağaç yapısıyla yönetmek

Merhaba

Bazı durumlarda hiyerarşık yapılar kurmak zorunda kalabilirsiniz. Bunu yönetmenin en iyi yolu ağaç(Tree) yapısını kullanmaktır. Axapta standardında bir çok yerde ağaç yapısını görebilirsiniz. Örneğin: LedgerRowDefDesigner formunda sürükle bırakla çalışan bir ağaç yapısı mevcut. Ayrıca  tutorial_Form_TreeControl örnek formu da size fikir verebilir.

Ben örneğimde bir hiyerarşi tablosunun form açıldığında ağaç yapısıyla görüntülenmesini ve  ağaç elemanlarının (Node)  bu form vasıtasıyla düzenlenmesinin (güncelleme , silme ve ekleme) nasıl yapılacağını anlatacağım.

Örnek olarak şöyle bir tablomuz  olsun :

ETGItemGroupTable :    ItemGroupId    ,    ItemGroupName    ,    ItemGroupLevel   ,    ItemGroupIdParent
ItemGroupId  ,   ItemGroupIdParent   =  EDT – DTItemGroupId

ItemGroupId  ,   ItemGroupIdParent   aynı EDT den oluşturuyoruz. Hiyerarşik yapıyı ItemGroupIdParent sayesinde kuracağız.

ItemGroupLevel   Burada  hiyerarşiyle pek ilgisi olmayan benim kurgumla alakalı olan bir seviye kodu var. Ben bu hiyerarşideki bütün elamanların birer seviye kodu olsun istiyorum ve bu kod 1-8 arasında olabilir. Formda gerekli kontrolleri buna göre yazıyorum.

Ulaşmak istediğim form görünümü şu şekilde

Yeni bir form oluşturup veri kaynağını ekleyip tasarımdada gerekli elemanları ekleyelim. Ağaç elemanımızı da ekledikten sonra bazı metodlar yazmamız gerekiyor onlara gecelim.

Read more