Minggu, 01 November 2020

Custom form Listpage

Jangan kaget jika kita mendapati form Listpage yang kita kerjakan tidak mempunyai fitur Overwrite method. 
untuk mengcustom atau menambah method di form listpage kita bisa merubahnya di class yang memanage form listpage itu. seperti class controlnya.
contoh untuk mengcustom form PurchTableListPage maka maka custom classnya ada di PurchTableListPageInteraction.

mari kita sebut class ini, class interaction.

setujruh??

Membuat custom workflow dari awal

Ada beberapa referensi untuk membuat workflow untuk form yang kita buat.
Saya menggunakan referensi dari link ini :

https://www.tech.alirazazaidi.com/custom-workflow-from-scratch-dynamics-ax-2012/

Minggu, 11 Oktober 2020

Get value VendTransOpen.Duedate and update LedgerJournalLines.Due with VendTransOpen.Duedate

Classes CustVendOpenTransManager
Classes VendOpenTransform

Jadi kita akan melakukan custom pada modul AP-Journal payment. terutama pada VendTransOpen.Duedate.

Skenario :
pada saat user memilih Open Settlement (VendTransOpen form), value VendTransOpen.duedate dapat dikopi dan masukan ke table LedgerjournalTrans.Due.

Caranya adalah.
custom class CustVendOpenTransManager.updateOriginatorForMarkedTrans

LedgerJournalTrans ledgerJournalTrans;
    BankThirdPartyAccountId firstVendBank;
    SalesTable salesTable;
    PurchTable purchTable;
    NoYes autoSettlement;

    // <GIN>
    LedgerJournalType           ledgerJournalType;
    TaxWithholdAuthorities_IN   taxWithholdAuthorities;
    // </GIN>

    // <GEEU>
    CustInvoiceJour custInvoiceJour;
    CustInvoiceJour_RU custInvoiceJourRU;
    // </GEEU>

    DueDate         duedateAP;//Add husna 20201011

    if (specTransManager.getSpecTransCount() > 0)
    {
        // If transactions were marked, write data back to the originating record.
        switch(originator.TableId)
        {
            case tableNum(LedgerJournalTrans):
                ledgerJournalTrans = originator;
                duedateAP = vendOpenTransForm.getDuedatesettlement();//add husna 20201011
                ledgerJournalTrans.Due = duedateAP;//add husna 20201011

lalu
di class VendOpenTransform buat sebuah method getDuedatesettlement()
public DueDate getDuedatesettlement()
{
    DueDate             duedatesettlement;
    SpecTrans               specTrans;

    if (!diffVendBankExist)
    {
        select firstOnly RecId, RefTableId, RefCompany, RefRecId from specTrans
            where specTrans.SpecRecId == originator.RecId;

        duedatesettlement = specTrans.vendTransOpen().DueDate;
    }

    return duedatesettlement;
}

Selasa, 22 September 2020

Filter datasource in form

Sample code :

Override ExecuteQuery method in datasorce and put this query before Super()

this.query().dataSourceTable(tableNum("RsPcm_EmployeeReqPaymentTable")).addRange(fieldNum(RsPcm_EmployeeReqPaymentTable,Status)).value(SysQuery::value(RsPcm_VendorActivityPaymentStatus::Draft)); 

Senin, 21 September 2020

Cannot edit a record in User to person relationship (DirPersonUser). Update on a valid time state table is not allowed without specifying a ValidTimeStateUpdateMode.

This table need update in validTimeStateUpdateMode field.
while you update the record you need to define [table].validTimeStateUpdateMode also.

sample code :

DirPersonUser           personusertable;
    ;
    
    select forUpdate personusertable
    where personusertable.RecId == 5637174578;
    ttsBegin;
        personusertable.PersonParty = 5637286583;
        personusertable.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction);
        personusertable.update();
    ttsCommit;

https://hellodax.com/2015/06/25/error-update-is-not-allowed-without-specifying-validtimestateupdatemode/

Rabu, 02 September 2020

Cloud hosted environment di D365

Biasanya kita menginginkan sebuah environment yang sama dengan LIVE/PROD untuk mengtest sebuah proses. Maka kita bisa menggunakan fitur Clou...