Merhaba
Segmented Entry Control ax 2012 ile değişen finansal boyut yapısında hesap ve boyutları birlikte girebilme imkanı sağlayan bir yapıdır. Genel muhasebe günlüklerinde girişler bu şekilde yapılıyor. Bu yazımda yeni bir tablo ve form oluşturup bu kontrolün nasıl eklenebileceğini anlatacağım. Adım adım ilerleyelim.
- Öncelikle bir tablo yapalım ve EDT ‘si LedgerDimensionAccount olan LedgerDimension isminde bir alan açalım. Bu işlemde EDT’yi tabloya sürüklediğinizde DimensionAttributeValueCombination tablosuyla ilişki kurmak için soru soracaktır. Bu ilişkinin kurulması şart. Eğer EDT ile ilgili bir sıkıntı çıkarsa elle de ekleyebilirsiniz.
- Bir form yapalım ve veri kaynağına oluşturduğumuz tabloyu ekleyelim.
- Tasarım kısmına bir Grid ekleyelim ve veri kaynağından LedgerDimension alanını sürükleyip Grid’e bırakalım. Otomatik olarak Segmented Entry Control oluşturulacaktır.
- Kontrolün çalışabilmesi için biraz kod yazmamız gerekiyor. Formun ClassDecleration ve init metodlarına aşağıdaki kodları ekleyelim.
public class FormRun extends ObjectRun
{
LedgerDimensionAccountController ledgerDimensionAccountController;
}
public void init()
{
super();
// hangi veri kaynağının hangi alanı için çalışacağını belirtiyoruz
ledgerDimensionAccountController = LedgerDimensionAccountController::construct(
FDSegmentSEmple_ds,
fieldStr(FDSegmentSEmple,LedgerDimension));
}
- Veri kaynağındaki LedgerDimension alanına şu kodları ekleyelim
public boolean validate()
{
boolean ret;
ret = super();
ret = ledgerDimensionAccountController.validate() && ret;
return ret;
}
public void jumpRef()
{
super();
ledgerDimensionAccountController.jumpRef();
}
public Common resolveReference(FormReferenceControl _formReferenceControl)
{
return ledgerDimensionAccountController.resolveReference();
}
- Grid altında oluşan Segmented Entry Control’e de şu kodları ekleyelim.
public void loadAutoCompleteData(LoadAutoCompleteDataEventArgs _e)
{
super(_e);
ledgerDimensionAccountController.loadAutoCompleteData(_e);
}
public void loadSegments()
{
super();
ledgerDimensionAccountController.parmControl(this);
ledgerDimensionAccountController.loadSegments();
}
public void segmentValueChanged(SegmentValueChangedEventArgs _e)
{
super(_e);
ledgerDimensionAccountController.segmentValueChanged(_e);
}
- Şu anda kontrol hazır formu açtığınızda aşağıdaki gibi bir görüntü göreceksiniz.
Üsteki oka tıkladığınızda ana hesap ve boyut yapısını görebilirsiniz.
Ana hesabı ve boyutları bir arada girebileceğiniz bir yapı oluştu. Burada girdiğiniz verilerden DimensionAttributeValueCombination tablosunda bir kayıt oluşturulur ve o kaydın RecId si oluşturduğumuz tablodaki LedgerDimension alanına yazılır. Tablodan baktığınızda sadece RecId görürsünüz ancak formdan baktığınızda bu kontrol sayesinde bütün veriyi görebilirsiniz. Bütün bu işlemleri LedgerDimensionAccountConroller sınıfı sizin için yapar.
Eski alışkanlıklara biraz ters ancak yeni boyut yapısında veri girişini kolaylaştırması açısında bence kullanışlı bir yapı olmuş.
Selamlar.