RSS

Kategori arşivi: 3S

Microsoft Dynamics AX Stok-Satınalma-Satış modülü kategorisi

Stok hareketi üzerindeki rezervasyonu kaldırmak

Uzun süre sonra tekrar merhaba,

Bir geliştirme kapsamında transfer günlüğü satırlarını kullanarak işlem yapmak istiyorduk, fakat günlük satırlarındaki miktarlar ya sistem ya kullanıcı tarafından fiziksel veya siparişe göre rezerv edilmişti. Bizim geliştirmemizin ilerleyebilmesi adına varsa bu tür rezervasyonların günlük işleme başlamadan önce kaldırılması gerekiyordu.

Malumunuz üzere rezervasyon ile ilgili kodlar çok dallı budaklı ve karışık bir mahiyete sahiptir. Bende uzun süre uğraştıktan sonra tam ümidi keserken, Mr.Google da yazılmış bir kod öbeği buldum. Kod çok basit fakat inanılmaz derecede de doğru çalışıyordu. Onu biraz düzenledim ve aşağıdaki son halini verdim. Sizde olursa kendi ihtiyaçlarınıza göre uyarlayıp kullanabilirsiniz.

Güle güle kullanın.

// Changed on 22 May 2012 at 09:22:42 by etg_m
// Code is added to InventJournalTable methods
void removeAllJournalLinesReservation()
{

InventUpd_Reservation       res;
InventMovement              inventmovement;
Inventtrans                 inventtrans;
InventJournalTrans          inventJournalTrans
;
if(this.Posted)
return;

while select inventJournalTrans
index hint LineIdx
where inventJournalTrans.JournalId  == this.JournalId
{
while select inventTrans
index hint TransIdIdx
where inventTrans.InventTransId == inventJournalTrans.InventTransId
&&   (inventTrans.StatusIssue   == statusIssue::ReservOrdered ||
      inventTrans.StatusIssue   == statusIssue::ReservPhysical)
  {
   inventmovement  =   inventTrans.inventmovement(true);
   res =  InventUpd_Reservation::newInventDim(inventmovement,inventTrans.inventDim(),abs(inventTrans.Qty),true);
   res.updatenow();
  }
}
}

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 2012

http://www.etg-it.com

 
Yorum yapın

Yazan: 22/05/2012 in 3S, Geliştirme

 

Etiketler: , , ,

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

 
Yorum yapın

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

 

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: , , , ,

 
%d blogcu bunu beğendi: