Aracılığıyla paylaş


Stok hareketlerini konsolide etme

Zamanla, stok hareketi tablosu (InventTrans) büyümeye ve daha fazla veritabanı alanı tüketmeye devam eder. Bu nedenle, tabloya göre yapılan sorgular zamanla yavaşlar. Bu makalede, sistem performansının iyileştirilmesine yardımcı olmak amacıyla envanter işlemleriyle ilgili verileri birleştirmek için Envanter işlemi birleştirme özelliğini nasıl kullanabileceğiniz açıklanmaktadır.

Not

Seçili kapalı genel muhasebe döneminde yalnızca mali olarak güncelleştirilmiş stok hareketleri konsolide edilebilir. Konsolide edilebilmesi için mali olarak güncelleştirilmiş gidiş stok hareketlerinin Satıldı çıkış durumuna sahip olması ve geliş stok hareketlerinin giriş durumunun Satın alındı olması gerekir.

Stok hareketlerini konsolide ettiğinizde, ilgili tüm hareketler InventTransArchive tablosuna taşınır. Stok çıkış hareketleri ve stok girişi hareketleri, madde kodu (itemId) ve stok boyutu kimliği (inventDimId) kombinasyonuna göre ayrı ayrı konsolide edilir ve özetlenen çıkış ve özetlenen giriş hareketlerine yerleştirilir.

Bir itemId ve inventDimId kombinasyonu yalnızca bir giriş veya çıkış hareketi içeriyorsa hareket konsolide edilmez.

Not

Envanter işlemlerinizi birleştirdikten sonra, InventTransArchive kayıtlarını bir Microsoft Azure veri gölüne taşımak için Dataverse uzun vadeli saklamayla arşivleme özelliğini kullanarak depolama ve sistem performansını daha da optimize edebilirsiniz. Daha fazla bilgi için bkz Dynamics 365 Supply Chain Management içindeki stok hareket verilerini arşivleme.

Sisteminizdeki özelliği etkinleştirme

Sisteminiz bu makalede açıklanan özelliği zaten içermiyorsa Özellik yönetimi'ne gidin ve Envanter işlemleri birleştirme özelliğini açın. Bu özellik, etkinleştirildikten sonra devre dışı bırakılamaz.

Stok hareketlerini konsolide etmeden önce dikkat edilmesi gerekenler

Stok hareketlerini konsolide etmeden önce, işlemden etkilenecekleri için aşağıdaki iş senaryolarını göz önünde bulundurmalısınız:

  • Satın alma siparişi satırları gibi ilgili belgelerden stok hareketlerini denetlediğinizde, bunlar konsolide edilmiş olarak gösterilir. Konsolide edilen hareketleri gözden geçirmek için Stok yönetimi > Periyodik görevler > Temizleme > Stok hareketi konsolidasyonu'na gitmelisiniz.
  • Konsolide edilen dönemler için stok kapanışı iptal edilemez.
  • Konsolide dönemler için standart maliyet dönüştürme işlemi yapılamaz.
  • Stok hareketlerini konsolide ettiğinizde, stok hareketlerinden elde edilen stok raporları etkilenir. Bu raporlar stok yaşlandırma raporunu ve stok değer raporlarını içerir.
  • Stok tahminleri, konsolide dönemlerin öngörülen süreleri sırasında çalıştırılırsa etkilenebilir.

Ön Koşullar

Stok hareketleri yalnızca aşağıdaki koşulların karşılandığı dönemlerde konsolide edilebilir:

  • Genel muhasebe dönemi kapatılmalıdır.
  • Stok kapanışı, konsolidasyonunun dönem bitiş tarihinde veya sonrasında çalıştırılmalıdır.
  • Dönem, konsolidasyonun dönem tarihinden en az bir yıl önce olmalıdır.
  • Mevcut stok yeniden hesaplamaları bulunmamalıdır.

Stok hareketlerinizi konsolide etme

Stok hareketlerini konsolide etmek için bu adımları izleyin.

  1. Stok yönetimi>Periyodik görevler>Temizleme>Stok hareketlerini konsolide etme öğesine gidin.

    Stok hareketi konsolide etme sayfası görüntülenir ve konsolide işlem kayıtlarının listesini gösterir.

  2. Stok hareketi konsolide etmek için Eylem Bölmesinde Stok hareketi konsolidasyonu'nu seçin.

  3. Stok hareketi konsolidasyonu iletişim kutusunda, Parametreler hızlı sekmesinde aşağıdaki alanları ayarlayın:

    • Kapalı genel muhasebe dönemindeki başlangıç tarihi: Konsolidasyona dahil edilecek en erken hareket tarihini seçin.
    • Kapalı genel muhasebe dönemindeki bitiş tarihi: Konsolidasyona dahil edilecek en yeni hareket tarihini seçin.

    Not

    Yalnızca ön koşulları karşılayan dönemler seçim için kullanılabilir.

  4. Arka planda çalıştır hızlı sekmesinde, toplu işleme ayrıntılarını gerektiği gibi ayarlayın. 'da toplu işler için olağan adımları izleyin Microsoft Dynamics 365 Supply Chain Management.

  5. Tamam'ı seçin.

  6. Devam etmek istediğinizi onaylamanızı isteyen bir ileti alırsınız. İletiyi dikkatlice okuyun ve devam etmek istiyorsanız Evet'i seçin.

    Stok hareketi konsolidasyon işinizin toplu iş kuyruğuna eklendiğini bildiren bir ileti alırsınız. İş, seçilen döneme ait stok hareketlerini birleştirmeye başlar.

Konsolide stok hareketlerini görüntüle

Stok hareketi konsolidasyon sayfası konsolidasyon geçmişinizin tamamını gösterir. Kılavuzdaki her satır, konsolidasyonunun oluşturulduğu tarih, oluşturan kullanıcı ve durumu gibi bilgileri gösterir.

Sayfanın üst kısmında açılan listede, kılavuzda gösterilen konsolidasyonlara filtre uygulamak için aşağıdaki değerlerden birini seçin:

  • Etkin : Yalnızca etkin konsolidasyonları gösterir.
  • Tümü – Tüm konsolidasyonları göster.

Kılavuzdaki her konsolidasyon için aşağıdaki bilgiler sağlanır:

  • Etkin – Onay işareti, konsolidasyonun etkin olduğunu gösterir.
  • Başlangıç tarihi : Konsolidasyona dahil edilebilecek en eski hareketin tarihi.
  • Bitiş tarihi : Konsolidasyona dahil edilebilecek en yeni hareketin tarihi.
  • Zamanlayan : Konsolidasyonu oluşturan kullanıcı hesabı.
  • Yürütüldü – Konsolidasyonun oluşturulduğu tarih.
  • Geçerli güncelleştirmeyi durdur– Onay işareti, konsolidasyonun devam ettiğini ancak duraklatıldığını gösterir.
  • Durum – Konsolidasyonun işlenme durumu. Olası değerler Beklemede, Devam Ediyor ve Tamamlandı'dır.

Kılavuzun üstündeki araç çubuğu, seçili bir konsolidasyonla çalışmak için kullanabileceğiniz aşağıdaki düğmeleri sağlar:

  • Konsolide işlemler – Seçilen konsolidasyonun tüm ayrıntılarını görüntüleyin. Görüntülenen Konsolide hareketler sayfası konsolidasyondaki tüm hareketleri gösterir.

    Konsolide hareketler sayfasında belirli bir hareket hakkında daha fazla bilgi görüntülemek için kılavuzda hareketi seçin ve sonra eylem bölmesinde Konsolide işlem ayrıntıları'nı seçin. Görüntülenen Konsolide hareket ayrıntıları sayfası, genel muhasebe deftere nakli, ilgili alt genel muhasebe referansları ve mali boyutlar gibi bilgileri gösterir.

  • Duraklat – Şu anda işlenmekte olan seçili bir konsolidasyonu duraklatın. Duraklatma yalnızca arşivleme görevi oluşturulduktan sonra etkinleşir. Bu nedenle, duraklatma etkili olmadan önce kısa bir gecikme olabilir. Bir konsolidasyon duraklatılmışsa Geçerli güncelleştirmeyi durdur alanında bir onay işareti görünür.

  • Özgeçmiş – Şu anda duraklatılmış olan seçili bir konsolidasyon için işlemeye devam edin.

Özel alanları desteklemek için kodunuzu genişletme

InventTrans tablosu bir veya daha fazla özel alan içeriyorsa, adlandırılmalarına bağlı olarak, kodu onları destekleyecek şekilde genişletmeniz gerekebilir.

  • InventTrans tablosundaki özel alanlar InventtransArchive tablosundakilerle aynı alan adlarına sahipse bu alanlar 1:1 eşlenir. Bu nedenle, özel alanları inventTrans tablosunun InventoryArchiveFields alanlar grubuna koyabilirsiniz.
  • InventTrans tablosundaki özel alan adları InventtransArchive tablosundaki alan adlarıyla eşleşmezse, bunları eşlemek için kod eklemeniz gerekir. Örneğin, InventTrans.CreatedDateTime adlı bir sistem alanınız varsa InventTransArchive tablosunda farklı bir adla (örneğin InventtransArchive.InventTransCreatedDateTime) bir alan oluşturmanız ve aşağıdaki örnek kodda görüldüğü gibi, InventTransArchiveProcessTask ve InventTransArchiveSqlStatementHelper sınıflarına uzantılar eklemeniz gerekir.

Aşağıdaki örnek kod, gerekli uzantının InventTransArchiveProcessTask sınıfına nasıl ekleneceğinin bir örneğini gösterir.

[ExtensionOf(classStr(InventTransArchiveProcessTask))]
Final class InventTransArchiveProcessTask_Extension
{

    protected void addInventTransFields(SysDaSelection _selectionObject)
    {
        _selectionObject.add(fieldStr(InventTrans, ModifiedBy))
            .add(fieldStr(InventTrans, CreatedBy)).add(fieldStr(InventTrans, CreatedDateTime));

        next addInventTransFields(_selectionObject);
    }


    protected void addInventTransArchiveFields(SysDaSelection _selectionObject)
    {
        _selectionObject.add(fieldStr(InventTransArchive, InventTransModifiedBy))
            .add(fieldStr(InventTransArchive, InventTransCreatedBy)).add(fieldStr(InventTransArchive, InventTransCreatedDateTime));

        next addInventTransArchiveFields(_selectionObject);
    }
}

Aşağıdaki örnek kod, gerekli uzantının InventTransArchiveSqlStatementHelper sınıfına nasıl ekleneceğinin bir örneğini gösterir.

[ExtensionOf(classStr(InventTransArchiveSqlStatementHelper))]
final class InventTransArchiveSqlStatementHelper_Extension
{
    private str     inventTransModifiedBy;  
    private str     inventTransCreatedBy;
    private str     inventTransCreatedDateTime;

    protected void initialize()
    {
        next initialize();
        inventTransModifiedBy = new SysDictField(tablenum(InventTrans), fieldNum(InventTrans, ModifiedBy)).name(DbBackend::Sql);
        inventTransCreatedDateTime = new SysDictField(tablenum(InventTrans), fieldNum(InventTrans, CreatedDateTime)).name(DbBackend::Sql);
        inventTransCreatedBy = new SysDictField(tablenum(InventTrans), fieldNum(InventTrans, CreatedBy)).name(DbBackend::Sql);
    }

    protected str buildInventTransArchiveSelectionFieldsStatement()
    {
        str     ret;

        ret = next buildInventTransArchiveSelectionFieldsStatement();
        
        if (inventTransModifiedBy)
        {
            ret += ',';
            ret += strFmt('%1',  new SysDictField(tablenum(InventTransArchive), fieldNum(InventTransArchive, InventTransModifiedBy)).name(DbBackend::Sql));
        }

        if (inventTransCreatedBy)
        {
            ret += ',';
            ret += strFmt('%1',  new SysDictField(tablenum(InventTransArchive), fieldNum(InventTransArchive, InventTransCreatedBy)).name(DbBackend::Sql));
        }

        if (inventTransCreatedDateTime)
        {
            ret += ',';
            ret += strFmt('%1',  new SysDictField(tablenum(InventTransArchive), fieldNum(InventTransArchive, InventTransCreatedDateTime)).name(DbBackend::Sql));
        }

        return ret;
    }

    protected str buildInventTransTargetFieldsStatement()
    {
        str     ret;

        ret = next buildInventTransTargetFieldsStatement();

        if (inventTransModifiedBy)
        {
            ret += ',';
            ret += strFmt('%1', inventTransModifiedBy);
        }

        if (inventTransCreatedBy)
        {
            ret += ',';
            ret += strFmt('%1', inventTransCreatedBy);
        }

        if (inventTransCreatedDateTime)
        {
            ret += ',';
            ret += strFmt('%1', inventTransCreatedDateTime);
        }

        return ret;
    }
}