Genel muhasebe yapısındaki değişiklikler
Merhaba
Ax 2012′den önceki versiyonlarda muhasebe iki ana tablodan oluşuyordu. Birincisi hesap planının tutulduğu LedgerTable . İkincisi muhasebe hareketlerinin tutulduğu LedgerTrans. Bu iki tablo muhasebe için en temel tablolardı. Bütün hareketler bu tabloda tutulur ve bir hesabın bakiye toplamı gibi işlemler için LedgerTrans üzerinde işlem yapmak yeterli olurdu. Ayrıca LedgerTrans’ın özeti olan bir toplam tablomuz vardı buda LedgerBalancesDimTrans tablosuydu. Bunlara ek olarak boyut yapısı vardı. Boyut bir diziydi. Dimensions alanından yönetiliyordu. Firmanın ihtiyacına göre kaç boyut kullanacağı tespit edilir ve tanımlanırdı. Boyut sayısı lisansa bağlıydı.
Bu yapı ax 2012 ile tamamen değişmiş durumda. LedgerTable ve LedgerTrans tabloları yok. LedgerTable yerine MainAccount tablosu var. Eskiden bir şirket için tek bir hesap planı tanımlanırken şimdi birden çok hesap planı tanımlamak mümkün. LedgerChartOfAccounts tablosu hesap planlarının tanımlandığı ana tablo. Bir hesap için select yazarken hangi ChartofAccount olduğunu da belirtmek gerekiyor.
Gelelim LedgerTrans tablosunun yapısına. Eski versiyonlarda 110110 hesabının 02.03.2012 tarihindeki deki hareketlerini bulmak için şöyle bir sorgu yeterliydi.
while select ledgerTrans where ledgerTrans.AccountNum == “110110” && ledgerTrans.TransDate == 02\03\2012 && ledgerTrans.OperationsTax == OperationsTax::Current { İnfo(“...”) }
Ax 2012 de ise şöyle bir sorgu yazmak gerekiyor.
static void FD_LedgerTrans1(Args _args) { MainAccount mainAccount; GeneralJournalEntry generalJournalEntry; GeneralJournalAccountEntry generalJournalAccountEntry; DimensionAttributeValueCombination dimAttrValueComb; SubledgerVoucherGeneralJournalEntry subledgerVoucherGeneralJournalEntry; while select AccountingCurrencyAmount, TransactionCurrencyAmount, TransactionCurrencyCode from generalJournalAccountEntry join dimAttrValueComb where dimAttrValueComb.RecId == generalJournalAccountEntry.LedgerDimension join AccountingDate, JournalNumber from generalJournalEntry where generalJournalAccountEntry.GeneralJournalEntry == generalJournalEntry.RecId && generalJournalEntry.AccountingDate == 02\03\2012 && generalJournalEntry.PostingLayer == OperationsTax::Current && generalJournalEntry.Ledger == Ledger::current() join MainAccountId, Name from mainAccount where mainAccount.RecId == dimAttrValueComb.MainAccount && mainAccount.MainAccountId == '110110' join subledgerVoucherGeneralJournalEntry where subledgerVoucherGeneralJournalEntry.GeneralJournalEntry == GeneralJournalEntry.RecId { info(strFmt("%1-%2 - %3 - %4 - %5 - %6 - %7 - %8 - %9", mainAccount.MainAccountId, mainAccount.Name, generalJournalEntry.AccountingDate, subledgerVoucherGeneralJournalEntry.Voucher, generalJournalAccountEntry.TransactionCurrencyCode, generalJournalAccountEntry.TransactionCurrencyAmount, generalJournalAccountEntry.AccountingCurrencyAmount, generalJournalEntry.JournalNumber, dimAttrValueComb.DisplayValue )); } }
Sorguda görüldüğü gibi LedgerTrans tablosu 5 tabloya bölünmüş durumda. Günlükler için bir kaç tabloya daha ihtiyaç olduğunu ve onlarında bu sorguya duruma göre ilave edilmese gerektiğini unutmadan söyleyeyim.
Aşağıdaki resimde ax 2012′deki muhasebe veri yapısı mevcut. Bu yapıyı iyi kavramak üzerinde yeni gelen boyut yapısını öğrenmek geliştirme yapabilmek için şart.
Selamlar.
Ellerine sağlık Fatih hocam.
Faydalı paylaşımlar olmuş.
Devamını bekliyorum.
Örneğin kod ile satış siparişini deftere nakletnmek gibi sıkça karşılaştığımız konularda değişiklikler varsa paylaşır mısınız?
Teşekkürler Emre hocam.
Bir çok temel konuda değişiklik var. Fırsat buldukça paylaşmaya çalışacağım.