Posts Tagged ‘ x++

Dynamics 365 Finance and Operations: Ürün reçetesi günlüğü oluşturma ve nakletme.

Bu yazıda Dynamics 365 Finance and Operations içinde kodla ürün reçetesi günlüğü oluşturup deftere nakletmek için basit bir örnek vereceğim.

Bu günlükler ara yüzden de girilebilir. Ancak birçok durumda bizim otomatik oluşturmamız istenir.

Gelelim örnek kodumuzu. Bu örnek kod tek satırlı ve miktarı 1 olan basit bir günlük oluşturuyor ve deftere naklediyor. Burada bir madde kodundan diğerine aktarım yapıyoruz gibi düşünebilirsiniz.  Siz ihtiyacınıza göre değiştirebilirsiniz.

class DmrCreateBomJournal

{

public static void main(Args _args)

{

InventJournalTableData  journalTableData;

InventJournalTrans      inventJournalTrans;

InventJournalTrans      InventJournalTransOld;

JournalCheckPost        journalCheckPost;

InventJournalTable      journalTable;

InventDim               FromInventDim,toInventDim;

ItemId                  ItemId      = “I0002″;

ItemId                  toItemId    = “I0003″;

inventDimId             inventDimId = “D0003″;

InventJournalNameId     TransferJournalNameId;

InventTable             inventTable;

InventBatch             InventBatchNew;

InventDim               InventDim;

InventDim               inventDimFrom;

int i;

;

ttsbegin;

inventTable = inventTable::find(ItemId);

InventDim   = InventDim::find(inventDimId);

TransferJournalNameId = “S0944″;

journalTable.clear();

journalTable.JournalNameId  = TransferJournalNameId;

journalTable.initFromInventJournalName(InventJournalName::find(TransferJournalNameId));

journalTableData            = JournalTableData::newTable(journalTable);

journalTable.JournalId      = journalTableData.nextJournalId();

journalTable.JournalType    = InventJournalType::BOM;

journalTableData.initFromJournalName(journalTableData.JournalStatic().findJournalName(journalTable.journalNameId));

journalTable.Description    = “Bom journal”;

journalTable.insert();

i++;

inventDimFrom.clear();

inventDimFrom.initValue();

inventDimFrom.InventSiteId      = InventDim.InventSiteId;

inventDimFrom.InventLocationId  = InventDim.InventLocationId;

inventDimFrom.InventSizeId      = InventDim.InventSizeId;

inventDimFrom.inventBatchId     = InventDim.inventBatchId;

inventDimFrom = inventDim::findOrCreate(inventDimFrom);

InventJournalTransOld.clear();

InventJournalTransOld.ItemId           = ItemId;

InventJournalTransOld.InventDimId      = inventDimFrom.InventDimId;

InventJournalTransOld.JournalId        = journalTable.JournalId;

InventJournalTransOld.TransDate        = today();

InventJournalTransOld.BOMLine          = NoYes::Yes;

InventJournalTransOld.Qty              = -1;

InventJournalTransOld.JournalType      = InventJournalType::BOM;

InventJournalTransOld.LineNum = i;

InventJournalTransOld.insert();

i++;

InventJournalTrans.clear();

InventJournalTrans.ItemId              = toItemId;

if(!InventBatch::find(InventDim.inventBatchId ,toItemId) )

{

InventBatchNew.clear();

InventBatchNew.itemId = toItemId;

InventBatchNew.inventBatchId = InventDim.inventBatchId;

InventBatchNew.insert();

}

InventJournalTrans.InventDimId         = inventDimFrom.InventDimId;

InventJournalTrans.ItemId              = toItemId;

InventJournalTrans.Qty                 = 1;

InventJournalTrans.JournalId           = journalTable.JournalId;

InventJournalTrans.JournalType         = InventJournalType::BOM;

InventJournalTrans.TransDate           = today();

inventJournalTrans.LineNum = i;

InventJournalTrans.insert();

InventJournalTransold.InventTransIdFather = InventJournalTrans.InventTransId;

InventJournalTransOld.update();

journalCheckPost = InventJournalCheckPost::newPostJournal(journalTable);

if(journalCheckPost.validate())

{

journalCheckPost.run();

}

info(strFmt(“%1 journal created.”, journalTable.JournalId));

ttscommit;

}

}

Bu yazıda ürün reçetesi günlüğü oluşturma örneği paylaştım. Umarım faydalı olur.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, InventJournal, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, X++

Dynamics 365 Finance and Operations: Transfer günlüğü oluşturma ve nakletme.

Bu yazıda Dynamics 365 Finance and Operations içinde kodla stok transfer günlüğü oluşturup deftere nakletmek için basit bir örnek vereceğim.

Bu günlükler ara yüzden de girilebilir. Ancak birçok durumda bizim otomatik oluşturmamız istenir.

Gelelim örnek kodumuzu. Transfer günlüklerinde boyut değişimi yapılır. Bu örnek kod tek satırlı ve miktarı 1 olan basit bir günlük oluşturuyor ve deftere naklediyor. Yaptığı şeyse bir InventSize’dan diğerine transfer işlemi yapmak. Siz ihtiyacınıza göre değiştirebilirsiniz.

class DmrCreateTransferJournal

{

public static void main(Args _args)

{

InventJournalTableData  journalTableData;

InventJournalTrans      inventJournalTrans;

JournalCheckPost        journalCheckPost;

InventJournalTable      journalTable;

InventDim               FromInventDim,toInventDim;

InventJournalNameId     TransferJournalNameId;

InventDim               InventDim;

InventTable             inventTable;

InventDim               inventDimFrom;

InventBatch             InventBatchNew;

ItemId                  ItemId      = “I0002″;

inventDimId             inventDimId = “D0003″;

EcoResSizeName          inventSizeIdTo;

int i;

;

ttsbegin;

inventTable = inventTable::find(ItemId);

InventDim   = InventDim::find(inventDimId);

TransferJournalNameId = “S0944″;

journalTable.clear();

journalTable.JournalNameId  = TransferJournalNameId;

journalTable.initFromInventJournalName(InventJournalName::find(TransferJournalNameId));

journalTableData            = JournalTableData::newTable(journalTable);

journalTable.JournalId      = journalTableData.nextJournalId();

journalTable.JournalType    = InventJournalType::Transfer;

journalTableData.initFromJournalName(journalTableData.JournalStatic().findJournalName(journalTable.journalNameId));

journalTable.Description    = “Transfer journal”;

journalTable.insert();

i++;

if(!InventBatch::find( InventDim.inventBatchId ,ItemId) )

{

InventBatchNew.clear();

InventBatchNew.itemId = ItemId;

InventBatchNew.inventBatchId = InventDim.inventBatchId;

InventBatchNew.insert();

}

inventJournalTrans.clear();

inventJournalTrans.ItemId           = ItemId;

inventDimFrom.clear();

inventDimFrom.initValue();

inventDimFrom.InventSiteId      = InventDim.InventSiteId;

inventDimFrom.InventLocationId  = InventDim.InventLocationId;

inventDimFrom.InventSizeId      = InventDim.InventSizeId;

inventDimFrom.inventBatchId     = InventDim.inventBatchId;

inventDimFrom = inventDim::findOrCreate(inventDimFrom);

inventJournalTrans.InventDimId      = inventDimFrom.InventDimId;

inventDimFrom.clear();

inventDimFrom.initValue();

inventDimFrom.InventSiteId      = InventDim.InventSiteId;

inventDimFrom.InventLocationId  = InventDim.InventLocationId;

inventDimFrom.InventSizeId      = inventSizeIdTo;

inventDimFrom.inventBatchId     = InventDim.inventBatchId;

inventDimFrom = inventDim::findOrCreate(inventDimFrom);

inventJournalTrans.ToInventDimId    = inventDimFrom.InventDimId;

inventJournalTrans.JournalId        = journalTable.JournalId;

inventJournalTrans.TransDate        = today();

inventJournalTrans.Qty              = 1;

inventJournalTrans.JournalType      = InventJournalType::Transfer;

inventJournalTrans.LineNum = i;

inventJournalTrans.insert();

journalCheckPost = InventJournalCheckPost::newPostJournal(journalTable);

if(journalCheckPost.validate())

{

journalCheckPost.run();

}

info(strFmt(“%1 journal created.”, journalTable.JournalId));

ttscommit;

}

}

Bu yazıda Stok hareket günlüğü oluşturma örneği paylaştım. Umarım faydalı olur.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, InventJournal, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, X++

Dynamics 365 Finance and Operations: Hareket günlüğü oluşturma ve nakletme.

Bu yazıda Dynamics 365 Finance and Operations içinde kodla stok hareket günlüğü oluşturup deftere nakletmek için basit bir örnek vereceğim.

Bu günlükler ara yüzden de girilebilir. Ancak birçok durumda bizim otomatik oluşturmamız istenir bu tip durumlarda ben hazırda kullanmak için bazı kod örneklerimi saklıyorum. Bir seri halinde bazı günlük ve sipariş oluşturma örnekleri paylaşacağım.

Gelelim örnek kodumuzu. Bu örnek kod tek satırlı ve miktarı 1 olan basit bir günlük oluşturuyor ve deftere naklediyor. Siz ihtiyacınıza göre değiştirebilirsiniz.

class DmrCreateMovementJournal

{

public static void main(Args _args)

{

inventJournalTable              inventJournalTable;

inventJournalTrans              inventJournalTrans;

InventJournalNameId             inventJournalName;

InventDim                       inventDim;

JournalCheckPost                journalCheckPost;

ItemId                          ItemId      = “I0002″; // Madde kodu

inventDimId                     inventDimId = “D0003″; // Boyut

ttsbegin;

inventJournalTable.clear();

inventJournalName = DmrParameters::find().MovementJournalName;

inventJournalTable.initFromInventJournalName(InventJournalName::find(inventJournalName));

inventJournalTable.description = “Voyage ID %1″ ;

inventJournalTable.insert();

inventJournalTrans.clear();

inventJournalTrans.initFromInventJournalTable(inventJournalTable);

inventJournalTrans.TransDate    = systemDateGet();

inventJournalTrans.ItemId       = ItemId;

inventJournalTrans.initFromInventTable(InventTable::find(ItemId));

inventJournalTrans.Qty          = 1;

inventJournalTrans.InventDimId  = inventDimId;

if(inventJournalTrans.ValidateWrite())

{

inventJournalTrans.insert();

}

else

{

throw error(“Journal line cannot be created.”);

}

journalCheckPost = InventJournalCheckPost::newPostJournal(inventJournalTable);

journalCheckPost.run();

ttscommit;

}

}

Bu yazıda Stok hareket günlüğü oluşturma örneği paylaştım. Umarım faydalı olur.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, InventJournal, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, X++

Dynamics 365 Finance and Operations: Kodla Ön Ödeme Oluşturup Deftere Nakletmek.

Bu yazıda Dynamics 365 Finance and Operations standart özelliklerinden biri olan ön ödemeyi kodla nasıl yapıyoruz bir örnekle anlatacağım.

Bu işlem Satınalma siparişleri üzerinden yapılabiliyor. Ancak bize gelen talepte bunun basit bir onaya tabi olması istendi. Bunun için bir ara tablo yapıp onun üzerinden otomatik ön ödeme oluşturup deftere nakletmek istedik.

Resim-1

Şöyle bir kodla işimizi halldebiliriz.

PurchFormLetter             purchFormLetter;

purchTable                         purchTable;

PurchPrepayTable          PurchPrepayTable;

PurchId                            purchId;

PackingSlipId                  packingSlipId;

;

ttsBegin;

purchTable = PurchTable::find(DmrSellerAdvance.OrderNumber);

PurchPrepayTable = PurchPrepayTable::findPurchId(DmrSellerAdvance.OrderNumber , true);

if(PurchPrepayTable.RecId == 0)

{

PurchPrepayTable.clear();

PurchPrepayTable.Type = PurchPrepayType::Fixed;

PurchPrepayTable.PurchTable = DmrSellerAdvance.OrderNumber;

PurchPrepayTable.PrepayCategoryId = 313452354; // Kategori zorunlu

PurchPrepayTable.Currency = PurchTable::find(DmrSellerAdvance.OrderNumber).CurrencyCode;

PurchPrepayTable.Description = DmrSellerAdvance.Description;

PurchPrepayTable.Value = DmrSellerAdvance.PayableQty; // Ödenecek tutar burası.

PurchPrepayTable.PrepayLimit = DmrSellerAdvance.OrderQty;

PurchPrepayTable.PrepayAvailable = DmrSellerAdvance.PayableQty;

purchPrepayTable.recalculatePrepayLimit();

purchPrepayTable.recalculateAmounts(false);

PurchPrepayTable.insert();

}

Else

// Eğer birden çok ödeme yapılacaksa Value güncelleyerek yapabilirsiniz.

{

PurchPrepayTable.Value = PurchPrepayTable.Value + DmrSellerAdvance.PayableQty;

purchPrepayTable.recalculatePrepayLimit();

purchPrepayTable.recalculateAmounts();

PurchPrepayTable.update();

}

purchFormLetter = PurchFormLetter::construct(DocumentStatus::Invoice);

PurchFormLetter.parmInvoiceType(PurchInvoiceType::VendorAdvance); // Fatura tipi böyle olmalı.

purchFormLetter.update(purchTable, NumberSeq::newGetNumFromId(  PurchParameters::numRefPurchAdvanceVoucher().NumberSequenceId).num());

ttsCommit;

Bu yazıda bir ön ödeme kaydı oluşturup deftere nakletme örneğini inceledik. Satınla tarafı biraz kafa karıştırıcı olabiliyor. Bekleyen tedarikçi faturası olmadı sürece direk sipariş üzerinden faturalama yapabilirsiniz.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, PurchInvoiceType::VendorAdvance, PrePayment, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365,X++

Dynamics 365 Finance and Operations On-hand List(Eldeki) formunun boyut değerlerine nasıl ulaşılır?

Bu yazıda Dynamics 365 Finance and Operations içinde bir eldeki stokları gösteren On-hand List formunun biraz karışık yapısı var. Formun veri kaynağında InventDim var ancak form direk bu veri kaynağından verileri göstermiyor. Aslında bir sınıf boyut değerlerini yönetiyor. Eğer boyut değerlerine ulaşmanız gerekirse ufak bir kodla düzenleme yapmak gerekiyor.

Bu örnekte eldeki formundan kendi yaptığım bir formu açmak ve InventSum ve belli boyut değerlerini aktarmak istiyorum.

Resim-1

Formun Extension’nını oluşturup bir buton ekliyorum. Bu butonun onClicked eventine kod yazacağız.

Resim-2

Yeni bir sınıf oluşturup aşağıdaki kodu yazıyorum.

class DmrInventOnhandItemFormEventHandler

{

[FormControlEventHandler(formControlStr(InventOnhandItem, DmrSwellShrink), FormControlEventType::Clicked)]

public static void DmrSwellShrink_OnClicked(FormControl sender, FormControlEventArgs e)

{

InventDim               inventDimFrom , dimValues;

InventSum               InventSum       = sender.formRun().dataSource(formDataSourceStr(InventOnhandItem, InventSum)).cursor();

dimValues.data(InventSum.joinChild( )); // Asıl işi yapan kod bu. Boyut değerlerini almamızı sağlıyor.

inventDimFrom.clear();

inventDimFrom.initValue();

inventDimFrom.InventSiteId      = dimValues.InventSiteId;

inventDimFrom.InventLocationId  = dimValues.InventLocationId;

inventDimFrom.InventSizeId      = dimValues.InventSizeId;

inventDimFrom.inventBatchId     = dimValues.inventBatchId;

inventDimFrom = inventDim::findOrCreate(inventDimFrom);

Args                args            = new Args();

Form                formToCall      = new Form(‘DmrSwellShrink’);

FormButtonControl   callerButton    = sender as FormButtonControl;

FormRun             form            = callerButton.formRun();

args.caller(form);

args.object(formToCall );

args.record(InventSum);

args.parm(inventDimFrom.inventDimId);

form = ClassFactory.formRunClass(args);

form.init();

form.run();

form.wait();

}

}

Açılan formun init metodunda aşağıdaki kodla gerekli bilgileri alıyorum.

inventSum       = element.args().record();

inventDimId     = element.args().parm();

inventDimArgs   = InventDim::find(InventDimId);

Bu yazıda eldeki formun boyut değerlerine nasıl ulaşırız bir örnekle göstermeye çalıştım.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, InventSum, InventDim, InventOnHandItem, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, X++

Dynamics 365 Finance and Operations Yeni Bir Adres Alanı Nasıl Eklenir?

Dynamics 365 Finance and Operations Yeni Bir Adres Alanı Nasıl Eklenir?
Bu yazıda Dynamics 365 Finance and Operations içinde oluşturulan yeni bir tabloya adres alanı nasıl eklenir anlatmaya çalışacağım.
Öncelikle yeni bir tablo oluşturup Location alanı oluşturuyoruz. EDT olarak LogisticsLocationRecId kullanıyoruz. Relation ve Mapping’i resimdeki gibi tanımlayalım.


Resim-1
Relation özelliklerini aşağıdaki gibi tanımlıyoruz.

Resim-2
Bu aşamada sonra formunuza veri kaynağı olarak LogisticPostalAddress tablosunu ekliyoruz ve resimdeki özellikleri tanımlıyoruz. Standart Form olan CustBankAccount formundan tasarım sekmesini kopyalayabilirsiniz.

Resim-3
Aşağıdaki kodları ekliyoruz.
[Form]
public class DmrAddressTable extends FormRun
{
LogisticsPostalAddressFormHandler addressController;
public void init()
{
super();
addressController = LogisticsPostalAddressFormHandler::newParameters(DmrAddressTable_ds,LogisticsPostalAddress_ds);
addressController.callerUpdateQuery(fieldNum(DmrAddressTable,Location));
}
public LogisticsPostalAddressFormHandler getAddressController()
{
return addressController;
}
[DataSource]
class DmrAddressTable
{
public int active()
{
int ret;
ret = super();
addressController.callerActive();
addressController.callerUpdateButtons(newAddress,editAddress,clearAddress,mapButton);
return ret;
}
public void write()
{
super();
addressController.callerResearch();
}
}
[DataSource]
class LogisticsPostalAddress
{
public void write()
{
// The call to super is commented out to prevent the need to require a LogisticsPostalAddress record. This is a
// framework limitation that needs to be worked around in this manner.
// super();
}
public boolean validateWrite()
{
// The call to super is commented out to prevent the need to require a LogisticsPostalAddress record. This is a
// framework limitation that needs to be worked around in this manner.
//ret = super();
return true;
}
}
}

Derleyip formumuzu açabiliriz.

Resim-4
Bu yazıda yeni bir adres alanı nasıl eklenir anlatmaya çalıştım. Burada benim karşılaştığım bir sorun bu yapı bir tabloda bir adres alanını yönetebiliyor. İki adres alnınız varsa bu haliyle ben çalıştırmadım. Yöneten sınıflara direk alan adını yazmışlar her şeyi çoğaltım ikinci bir alanı destekleyen bir yapı kurmak gerekiyor. Astarı yüzünden pahalı oluyor.
Selamlar.
Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.
Referanslar:
www.mshowto.org
www.fatihdemirci.net
TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, X++

Dynamics 365 Finance and Operations OnClicked Event Handler?

Bu yazıda Dynamics 365 Finance and Operations’da Event Handler nasıl kullanılır bir örnekle anlatmaya çalışacağım.

Şöyle bir örnek olsun. Standart bir forma bir CheckBox eklemek istiyoruz. Bu CheckBox işaretlendiğinde bir filtre çalışacak. Bunun için formdan bir Extension oluşturup CheckBox eklemek gerekiyor. Bu kısımları geçiyorum daha önce anlatmıştım. Burada asıl bu işaretleme olduğunda yazacağımız koda odaklanacağım.

Öncelikle bir Class oluşturmamız gerekiyor. Adının sonuna EventHandler eklemekte fayda var.

class CustInvoiceJournalEventHandler

{

/// <summary>

///

/// </summary>

/// <param></param>

/// <param name=”e”></param>

[FormControlEventHandler(formControlStr(CustInvoiceJournal, DmrShowAllRecord), FormControlEventType::Clicked)]

public static void DmrShowAllRecord_OnClicked(FormControl sender, FormControlEventArgs e)

{

QueryBuildDataSource    custInvoiceJourDS;

QueryBuildDataSource    eInvoicePoolTableDS;

FormRun                 elementForm         = sender.formRun(); // DataSource için gerekecek

FormCheckBoxControl     showAllRecord      ;

FormDataSource          custInvoiceJour_ds  = elementForm.dataSource(formDataSourceStr(CustInvoiceJournal, CustInvoiceJour)) as FormDataSource;

#IsoCountryRegionCodes

if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoTR]))

{

showAllRecord       = elementForm.design().controlName(formControlStr(CustInvoiceJournal, DmrShowAllRecord)); // CheckBox ‘a ulaşıyoruz.

custInvoiceJourDS   = custInvoiceJour_ds.query().dataSourceTable(tableNum(custInvoiceJour));

eInvoicePoolTableDS = custInvoiceJour_ds.query().dataSourceTable(tableNum(FDEInvoicePoolTable));

if(showAllRecord.checked())

{

eInvoicePoolTableDS.enabled(false);

}

else

{

eInvoicePoolTableDS.enabled(true);

}

custInvoiceJour_ds.executeQuery();

}

}

}

Bu yazıda EventHandler nasıl kullanılır anlatmaya çalıştım. Birçok durumda Extension yerine EventHandler kullanmak daha pratik oluyor.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, EventHandler,Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, X++

Dynamics 365 Finance and Operations Event Handler Kullanımı?

Bu yazıda Dynamics 365 Finance and Operations içinde standart bir formda Event Handler kullanarak nasıl işlemler yapabilirsiniz göstermeye çalışacağım.

Bir önceki yazımda Form DataSource metotlarına Extension ile ekleme yapmayı anlatmıştım. CustInvoiceJournal formuna E-Fatura filtresi için bir DataSource eklemiştim. Şimdi orada eklenen filtreyi kullanıcının kaldırabilmesi için bir CustInvoiceJournal formuna CheckBox ekledim. Bu CheckBox’ın işaretlenmesi ile tüm kayıtları göstereceğim.

Events kısmından OnClicked’e sağ tıklayıp Copy event handler method diyorum.

Resim-1

Yeni bir class oluşturup kodu yapıştırıyorum.

class CustInvoiceJournal_FD_EventHandler // Class isimlendirmede hala bazen karışıyor ama ekip içinde bir standart oturtmak lazım.

{

/// <summary>

///

/// </summary>

/// <param></param>

/// <param></param>

[FormControlEventHandler(formControlStr(CustInvoiceJournal, DmrShowAllRecord), FormControlEventType::Clicked)] // Kopyalama sonucu bu geliyor zaten.

public static void DmrShowAllRecord_OnClicked(FormControl sender, FormControlEventArgs e)

{

QueryBuildDataSource    custInvoiceJourDS;

QueryBuildDataSource    eInvoicePoolTableDS;

FormRun                 elementForm         = sender.formRun();

FormCheckBoxControl     showAllRecord      ;

FormDataSource          custInvoiceJour_ds  = elementForm.dataSource(formDataSourceStr(CustInvoiceJournal, CustInvoiceJour)) as FormDataSource;

#IsoCountryRegionCodes

if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoTR]))

{

showAllRecord       = elementForm.design().controlName(formControlStr(CustInvoiceJournal, DmrShowAllRecord));

custInvoiceJourDS   = custInvoiceJour_ds.query().dataSourceTable(tableNum(custInvoiceJour));

eInvoicePoolTableDS = custInvoiceJour_ds.query().dataSourceTable(tableNum(FDEInvoicePoolTable));

if(showAllRecord.checked())

{

eInvoicePoolTableDS.enabled(false);

}

else

{

eInvoicePoolTableDS.enabled(true);

}

custInvoiceJour_ds.executeQuery();

}

}

}

Bu yazıda form kontrolleri için EventHandler kullanımını anlatmaya çalıştım.

Selamlar.

www.fatihdemirci.net

TAGs: Dynamics 365 Finance and Operations, MsDyn365FO, OnClicked (), DataSource, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, Dynamics 365 ERP, X++

Dynamics 365 Finance and Operations Form DataSource Metotlarında Extension Kullanımı.

Bu yazıda Dynamics 365 Finance and Operations içinde standart bir formun DataSource metotlarına Extension ile nasıl ekleme yapabiliriz anlatmaya çalışacağım. Eski versiyonlarda bu işlem çok kolay ve hızlı yapılabiliyordu. Artık direk müdahale edemediğimiz için Extension mantığıyla ulaşmak zorundayız.

Bir örnek kodla DataSource metotlarına nasıl ulaştığımızı görelim. Bu örnekte CustInvoiceJournal formuna E-Fatura havuzuna gönderilenler ilk açılırken gelmesin diye bir filtre eklemek istiyorum. Bunun için CustInvoiceJour veri kaynağının init() metoduna ulaşıp bir join yapmam gerekiyor.  Yeni bir class oluşturuyorum.

[ExtensionOf(formDataSourceStr(CustInvoiceJournal,CustInvoiceJour))] // Bu satır asıl işi yapan hangi DataSource ise onu seçiyorum.

final class CustInvoiceJournalDS_FD_Extension // final eklemeyi unutmayın.

{

public void init()

{

FormDataSource          formDS = this; // DataSource metodunda olduğum için This direk DataSource u veriyor.

QueryBuildDataSource    custInvoiceJourDS;

QueryBuildDataSource    eInvoicePoolTableDS;

#IsoCountryRegionCodes

next init();  // asıl metodu çağıran kısım.

if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoTR]) //

{

custInvoiceJourDS = formDS.query().dataSourceTable(tableNum(custInvoiceJour));

// FormDS form dataSource olduğu için ona ekleme yapamazsınız. Aslında bize QueryBuildDataSource nesnesi lazım FormDS üzerinden ulaşıyorum.

eInvoicePoolTableDS = custInvoiceJourDS.addDataSource(tableNum(FDEInvoicePoolTable)); // Eklemeyi yapıyorum.

eInvoicePoolTableDS.addLink(fieldNum(custInvoiceJour , recId), fieldNum(FDEInvoicePoolTable ,RefRecId ));

eInvoicePoolTableDS.addLink(fieldNum(custInvoiceJour , TableId), fieldNum(FDEInvoicePoolTable,RefTableId ));

eInvoicePoolTableDS.joinMode(JoinMode::NoExistsJoin);

}

}

}

Bu yazıda standart bir formun herhangi bir DataSource metoduna Extension ile nasıl ekleme yapılır anlatmaya çalıştım.

Selamlar.

www.fatihdemirci.net

TAGs: Dynamics 365 Finance and Operations, MsDyn365FO, init(), DataSource, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, Dynamics 365 ERP, X++

X++ :23- Extension ile Standart Bir Forma Alan eklemek.

Bu yazıda Visual Studio üzerinden Extension mantığıyla standart bir tabloya eklenen alanların nasıl forma eklenebileceğini anlatmaya çalışacağım.

Bir önceki yazımda smmActivities’e bir alan eklemiştik. Şimdi AOT üzerinden Formları açıyoruz. Sonrasında smmActivities formuna sağ tıklayıp Create extension’a tıklıyoruz.

Resim-1

Projemde Extension oluştu. Adını değiştirebilirim ama benim için şu anada adı uygun. Çift tıklayıp açıyorum.

Resim-2

Açılan Extension formu içinden veri kaynağına baktığımda bir önceki yazımda eklediğim alan otomatik geldi.  Sürükleyip tasarımda uygun bir yere bırakıyorum.

Resim-3

Artık hazırız. Projeyi Build edip çalıştırabiliriz.

Resim-4

Bu yazıda Extension ile standart bir tabloya eklenen yeni bir alanın formda nasıl gösterilebileceğini anlattım. Sonraki yazılarımda Extension ile kod yazmak ile ilgili örnekler yapacağım.

Selamlar.

www.fatihdemirci.net

TAGs: Extension, X++, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

Page 2 of 131234510...Last »