RSS

Etiket arşivi: Microsoft Dynamics AX

Tesise özgü varsayılan ambarın bulunması

Stok kartları üzerinde “tesise özgü sipariş ayalarında” tanımlı olan ambar bilgisini bulmaya yarayan bir kodtur.

// Changed on 19 Oca 2011 at 14:25:31 by mesut
//Ambar bazında takip edilen fakat satış sipariş satırında ambar kısmı boş olan
//Satırlar için tesise özgü varsayılan satış ambarının getirilmesi
static void findSalesLineInventLocationDim(Args _args)
{

 Inventdim           dim,newDim;
 Salesline           salesline;
 InventTable         inventTable;
 ;
 ttsbegin;
 while select forupdate salesline
 join dim
 where salesline.InventDimId  == dim.inventDimId
 &&    dim.InventLocationId == " "
 {

 inventTable = InventTable::find(salesline.ItemId);
 newDim.data(dim);

 newDim.InventLocationId      =  inventTable.inventItemOrderSetupMap(InventItemOrderSetupType::Sales,
                                 InventDim::findOrCreate(newDim).InventDimId).inventLocationId( newDim.InventLocationId,
                                                                                                inventTable,
                                                                                                newDim.InventSiteId);

     info(newDim.InventLocationId);
 }
 ttscommit;

}

NOT: Yazıda belirtilen kodun, değiştirilmeden veya değiştirilerek, development/test/canlı ortamlarında kullanılması sonucu oluşabilecek olumlu/olumsuz durumlarda tüm sorumluluk kodu kullanan kişiye aittir.

Mesut BOZTAŞ

Dynamics AX ERP Danışmanı ve
İstanbul Ticaret Üni. Y.Lisans öğrencisi

İstanbul

http://www.etg-it.com

Reklamlar
 
Yorum yapın

Yazan: 19/01/2011 in 3S, Geliştirme, Genel

 

Etiketler: , ,

Microsoft Dynamics AX Zirvede!

Microsoft Dynamics AX Ürün Odaklı orta ölçekli firmalarda ERP için son Gartner Raporunda Lider olarak konumlandırılmış!

http://www.gartner.com/technology/media-products/reprints/microsoft/vol10/article22/article22.html

Mesut BOZTAŞ
Dynamics AX ERP Danışmanı ve
İstanbul Ticaret Üni. Y.Lisans öğrencisi

http://www.etg-it.com

 
1 Yorum

Yazan: 24/12/2010 in Genel

 

Etiketler:

Genel Adres defterinde mükerrer kayıtları listelemek

Genel adres defteri ile ilgili yeni bir yazı ile karşınızdayım. Bir önceki yazıda genel adres defteride mükerrer olan kayıtları gösteren bir kod örneği vermiştim. Fakat tekrar eden herbir kaydın hangi kayıtlar ilişkili olduğunu o kodda yakalayamıyorduk. Sadece ABC ltd. şirketi kaydı tekerrür etmişse bana (Adres defter kodu- adı[ABC ltd.]) formatında bir bilgi dönüyordu. Eğer bu bilgiye ek olarak ABC ltd. değerine sahip olan adres defteri kayıtları hangisidir sorunun cevabını arıyorsanız aşağıdaki kodu kullanabilirsiniz. Böylece mükerrer olan tüm kayıtları bir çırpıda elde edip daha sonra istediğim işlemi (silme, güncelleme, birleştirme) kolayca yapabilirim…

// Changed on 01 Ara 2010 at 12:11:36 by mesut
static void findDuplicateDirPartyRecordsByName(Args _args)
{
    DirpartyTable   party;

    name            firstName,lastName;
    dirPartyId      firstPartyId, lastPartyId;
    int             i= 1;
    container       c;
    ;

    while select party
                order by name
    {
        firstName    = party.Name;
        firstPartyId = party.PartyId;

        if(!lastName)
            {
              lastName    = party.Name;
              lastPartyId = party.PartyId;
            }
        else
        if(firstName == lastName)
        {
            //To prevent adding first record every cycle
            // If second record, goes else....
            if(i == 1)
                {
                    c   = conins(c,i,firstPartyId);
                    c   = conins(c,i+1,firstName);
                    c   = conins(c,i+2,lastPartyId);
                    c   = conins(c,i+3,lastName);
                    i   = 5;
                }
            else
                {
                    c   = conins(c,i,firstPartyId);
                    c   = conins(c,i+1,firstName);
                    i   = i + 2;
                }

            lastName      = party.Name;
            lastPartyId   = party.PartyId;

        }
        //Records changed.Add to info anymore
        else
        {
            //Add a blank record in container
            c = conins(c,conlen(c)+1,"");

            i = conlen(c);

            //Only add duplicate records to info
            if(conlen(c) > 1)
              {
                 info(any2str(conpeek(c,1 < i ? 1 : i))   + " " + any2str(conpeek(c,3 < i ? 3 : i))  + " " + any2str(conpeek(c,5 < i ? 5 : i ))  +
                " " + any2str(conpeek(c,7 < i ? 7 : i ))  + " " + any2str(conpeek(c,9 < i ? 9 : i))  + " " + any2str(conpeek(c,11 < i ? 11 : i)) +
                " " + any2str(conpeek(c,13 < i ? 13 : i)) + " " + any2str(conpeek(c,15 < i ? 15 :i)) + " " + any2str(conpeek(c,2)) );
              }
              //clear container
              c = condel(c,1,conlen(c));

            lastName    = party.Name;
            lastPartyId = party.PartyId;
            i = 1;
        }

    }

}

Bu durum nasıl oluyor peki?
1- Genel adres defteri bir çok tablo ile ortak kullanımda olduğu için kullanıcıların farkında olmadan aynı isimle kayıt girmeleri ya da mevcut kaydı kabul etmeyip aynı isimde tekrar kayıt açmaları sonucu oluşabilmektedir.
2- Özellikle ilk veri aktarımı sırasından farklı şirketlere aynı Müşteri, satıcı, iş ilişkisi kodları atılırken her şirkette farklı adres defter koduna sahip oluyorlar. Bu şirketlerde Sanal şirket bünyesinde ise kaydın her güncellenmesinde sistem güncelleme hatası vermektedir.

NOT: Yazıda belirtilen kodun, değiştirilmeden veya değiştirilerek, development/test/canlı ortamlarında kullanılması sonucu oluşabilecek olumlu/olumsuz durumlarda tüm sorumluluk kodu kullanan kişiye aittir.

Mesut BOZTAŞ
Dynamics AX ERP Danışmanı ve
İstanbul Ticaret Üni. Y.Lisans öğrencisi

İstanbul

http://www.etg-it.com

 
 

Etiketler: , , , , , ,

Varsayılan sipariş ayarları formunun boş gelmesi

Bugün bazı stok kartları için varsayılan satış tesisini tanımlama ihtiyacı doğdu. Her zamanki gibi Stok yönetimi –> Madde ayrıntıları –> Kurulum butonu –> Varsayılan sipariş ayarları formunu açmak istedim. Fakat her seferinde boş bir ekranla karşılaşıyordum…
1
2

Daha sonra araştırmalarım sonucu bu stok kartlarının veri aktarımı ile gelen stok kartları olduğunu tespit ettim ve stok kartı veri aktarımı sırasında boş değerlerle veri atılması gereken InventItemPurchSetup (Madde satınalma sipariş ayarları),InventItemInventSetup(Madde stoksipariş ayarları), InventItemSalesSetup (Madde satış sipariş ayarları) tablolarına kayıt atılmadığını gözlemledim. Bu 3 tablodan herhangi birinde dahi kayıt bulunamazsa form yukardaki gibi açılmaktadır.

Bu tablolara aşağıdaki job ile ilgili boş değerleri oluşturduktan sonra sorun çözüldü.

job farklı kurallara göre tekrar düzenlenebilir.

// Changed on 30 Kas 2010 at 13:37:43 by mesut
static void insertDefaultDimValues(Args _args)
{
    InventTable             inventTable;
    InventItemPurchSetup    inventItemPurchSetup;
    InventItemInventSetup   inventItemInventSetup;
    InventItemSalesSetup    inventItemSalesSetup;

    InventDimId             inventDimIdBlank = InventDim::inventDimIdBlank();
    ;
    ttsbegin;
    //Satınalma için
    while select inventTable
        where  inventTable.DimGroupId like "R*"
            notexists join inventItemPurchSetup
                where inventItemPurchSetup.ItemId      == inventTable.ItemId &&
                      inventItemPurchSetup.InventDimId == inventDimIdBlank

     {
        inventItemPurchSetup.initValue();

        inventItemPurchSetup.ItemId             = inventTable.ItemId;
        inventItemPurchSetup.InventDimId        = inventDimIdBlank;
        inventItemPurchSetup.InventDimIdDefault = inventDimIdBlank;

        inventItemPurchSetup.insert();
     }

     //Stok için
      while select inventTable
        where  inventTable.DimGroupId like "R*"
            notexists join inventItemInventSetup
               where inventItemInventSetup.ItemId      == inventTable.ItemId &&
                     inventItemInventSetup.InventDimId == inventDimIdBlank

     {
        inventItemInventSetup.initValue();

        inventItemInventSetup.ItemId             = inventTable.ItemId;
        inventItemInventSetup.InventDimId        = inventDimIdBlank;
        inventItemInventSetup.InventDimIdDefault = inventDimIdBlank;

        inventItemInventSetup.insert();
     }
     //Satış için
     while select inventTable
        where  inventTable.DimGroupId like "R*"
            notexists join inventItemSalesSetup
               where inventItemSalesSetup.ItemId      == inventTable.ItemId &&
                     inventItemSalesSetup.InventDimId == inventDimIdBlank

     {
        inventItemSalesSetup.initValue();

        inventItemSalesSetup.ItemId             = inventTable.ItemId;
        inventItemSalesSetup.InventDimId        = inventDimIdBlank;
        inventItemSalesSetup.InventDimIdDefault = inventDimIdBlank;

        inventItemSalesSetup.insert();
     }

    ttscommit;
}

NOT: Yazıda belirtilen kodun, değiştirilmeden veya değiştirilerek, development/test/canlı ortamlarında kullanılması sonucu oluşabilecek olumlu/olumsuz durumlarda tüm sorumluluk kodu kullanan kişiye aittir.

Mesut BOZTAŞ
Dynamics AX ERP Danışmanı ve
İstanbul Ticaret Üni. Y.Lisans öğrencisi

İstanbul

http://www.etg-it.com

 
Yorum yapın

Yazan: 30/11/2010 in 3S, Geliştirme

 

Etiketler: , , , ,

CEE şirketi yok hatası ve çözümü

Kaynak:  Sanal şirket eğer genel adres defter tablolarını kullanıyorsa her kullanıcı sanal şirket hesaplarındaki şirketlerin genel adres defteri tablolarını en az görme yetkisine sahip olmalıdır.

hata

hata2

Note: Users must have access to the company which the master number sequence is being used. If a user has access to CEU but not CEE, the system will not be able to retrieve the next party ID when creating new parties and the user will receive an error.

Çözüm: Kullanıcılar sanal şirket kapsamındaki tüm şirketlerde en azından Genel Adreses defteri görme yetkisine sahip olmalıdır.

Mesut BOZTAŞ
Dynamics AX ERP Danışmanı ve
İstanbul Ticaret Üni. Y.Lisans öğrencisi

İstanbul

http://www.etg-it.com

 
 

Etiketler: ,

Neden Dynamics AX 2009?

Neden Dynamics Ax başlıklı PDF dosyasını incelemek için burayı tıklayınız.

Mesut BOZTAŞ

Dynamics AX ERP Danışmanı ve
İstanbul Ticaret Üni. Y.Lisans öğrencisi

İstanbul

http://www.etg-it.com

 
Yorum yapın

Yazan: 09/11/2010 in Genel

 

Etiketler: ,

Genel adres defterinde tekrarları toplu olarak kontrol etmek…

Genel adres defteri Dynamics 2009  ile hayatımıza giren bir kavram. Eskiden bir tek ortak tabloda tutulan adres bilgileri için şuan birbirleriyle onca garip ilişkiye sahip birçok tablonun birleşimiyle oluşmuş olan yapının adıdır. Bir şirketteki iş ilişkiniz hem müşteriniz hem satıcınız ise aynı Adres defter kodu ile sistem tutulmaktadır. Benzer yapı, çalışan , başvuran ve ilgili kişiler içinde geçerlidir. Genel adres defteri tabloları sanal şirket kurulumuna eklenirse şirketlerarası müşteriler, iş ilişkileri, müşteri adayları, satıcılar, ilgi kişiler ve çalışanlarda şirketler arasında ortak kullanılır. Bugün bu durumdan dolayı farklı şirketlerde tekerrür eden kayıtlarla karşılaştım. Bunların normal tespiti sistemde tek tek yapılmaktadır.

Genel Adres defteri = \\Temel modülü –> Ortak formlar –> Genel Adres Defteri

Genel Adres defteri

Açılan ekrandan hangi parametrelere göre tekrarları kontrol edeceğimizi belirtip Tamam butonu basarız ve sistem tekrar kontrolü yapar ve sonucu bir bilgi ekranıyla bize bilgilendirir.

Tekrar

Fakat birden çok kaydın tekrar edip etmediğini kontrol etmek için bu yöntem biraz zaman alıcıdır. Bugün bunu toplu yapabilmek için aşağıdaki kodu yazdım. Kodu geliştirerek tekrar eden kayıtlardan biri sildirilebilir fakat bunun için çok özellikle de Adres defteri tabloları sanal şirket kurulumunda kullanılmışsa çok dikkatli ve birçok durum düşünülerek kod yazılmalıdır. Benim vaktim kısıtlıydı, uğraşmadım 🙂

// Changed on 09 Kas 2010 at 11:59:55 by mesut
static void controlDirPartyDuplicates(Args _args)
{
     DirPartyCheckDuplicate      partyCheckDuplicate = new DirPartyCheckDuplicate();
     DirPartyTable               partyTable;
     DirSystemPrivacyGroupType   privacyGroupType;
     ;
     while select partyTable order by name asc
     {

         privacyGroupType = DirSystemPrivacyGroupType::Public;
         partyTable = DirPartyTable::find(partyTable.PartyId);

         partyCheckDuplicate.parmPartyId(partyTable.PartyId);
         partyCheckDuplicate.parmPrivacyGroupType(privacyGroupType);
         //Adı ve türüne göre tekrarları aramak istiyorum..Bunlar
         //Harici telefon, şehir ve posta koduna göre de yapılabilir.
         partyCheckDuplicate.parmNameVal(true);
         partyCheckDuplicate.parmTypeVal(true);

         partyCheckDuplicate.run();
     }

NOT: Yazıda belirtilen kodun, değiştirilmeden veya değiştirilerek,  development/test/canlı ortamlarında kullanılması sonucu oluşabilecek olumlu/olumsuz durumlarda tüm sorumluluk kodu kullanan kişiye aittir.



Mesut BOZTAŞ

Dynamics AX ERP Danışmanı ve
İstanbul Ticaret Üni. Y.Lisans öğrencisi

İstanbul

http://www.etg-it.com

 
Yorum yapın

Yazan: 09/11/2010 in Geliştirme, Genel

 

Etiketler: , , ,

 
%d blogcu bunu beğendi: