Kamis, 13 Januari 2022

Create Sequence number di AX2012

Contoh kasus :

Kita akan membuat form baru di modul Procurement and sourching. Kita bilang form ini form Berita Acara. 
form ini mempunyai datasource BeritaAcaratable. dengan fields :
  1. BeritaacaraId
  2. Transdate
  3. Description

  1. Buat Extended data type BeritaacaraId.
  2. Di Class NumberSeqModulePurchaseOrder/Loadmodule, tambahkan code berikut.
            //start husna 
            datatype.parmDatatypeId(extendedTypeNum(BeritaacaraId));
            datatype.parmReferenceHelp(literalStr("Berita acara"));
            datatype.parmWizardIsContinuous(true);
            datatype.parmWizardIsManual(NoYes::No);
            datatype.parmWizardIsChangeDownAllowed(NoYes::No);
            datatype.parmWizardIsChangeUpAllowed(NoYes::No);
            datatype.parmSortField(999999);

            datatype.addParameterType(NumberSeqParameterType::DataArea, true, false);
            this.create(datatype);
            //end husna
    3. Di table PurchParameter/Methods/ tambahkan methods berikut :
             //add Husna 20220113
            static client server NumberSequenceReference  numRefBeritaAcara()
            {
                    return NumberSeqReference::findReference(extendedTypeNum(BeritaacaraId));
            }

    4. Buat job untuk memanggil module tambahan dan Extended data yang dibuat tadi. Job seperti berikut :
        static void loadNumSeqPurchDemo(Args _args)
        {
            //define the class variable
            NumberSeqModulePurchaseOrder seqMod = new NumberSeqModulePurchaseOrder();

            //load the number sequences that were not generated
                seqMod.load();
            }

    5. Buke menu Organization administration/Common/Number sequences/Number sequences. Klik tombol Generate. Pilih/cari reference modul "Berita acara" dan Company yang akan dipakai. Disana akan terbaca Sequence number ID yang related pada Berita Acara. klik OK

    6. Buka modul Procurement and Sourching/Setup/Procurement parameter. Buka Tab Sequence number. disana akan ada reference baru, Berita Acara dengan Sequence Id nya.

    7. Buat Form Berita Acara. lengkap dengan table/datasourcenya (BeritaAcaraTable).
    8. Di Form BeritaAcara/Methods/, overide method close() dan numberSeqFormHandler()
    public void close()
    {
        if (numberSeqFormHandler)
        {
            numberSeqFormHandler.formMethodClose();
        }
        super();
    }
    
    NumberSeqFormHandler numberSeqFormHandler()
    {
        if (!numberSeqFormHandler)
        {

        //create a reference of number sequence form handler class specifying the         EDT, Data source name and the field of the table


        numberSeqFormHandler = NumberSeqFormHandler::newForm(NumberSeqReference::findReference(extendedtypenum(PSMGRNRevisionId)).NumberSequenceId, element,PSMGRNRevisiontable_DS,fieldnum(PSMGRNRevisiontable,PSMGRNRevisionId));
        }

    return numberSeqFormHandler;
    }    

    9. Di Datasource overwrite methods :
public void create(boolean _append = false)
{
    element.numberSeqFormHandler().formMethodDataSourceCreatePre();
    super(_append);
    element.numberSeqFormHandler().formMethodDataSourceCreate(true);
}

public void write()
{
    super();

    element.numberSeqFormHandler().formMethodDataSourceWrite();
}

public boolean validateWrite()
{
    boolean ret;

    ret = super();

    ret = element.numberSeqFormHandler().formMethodDataSourceValidateWrite(ret) && ret;

    return ret;
}

public void linkActive()
{
    element.numberSeqFormHandler().formMethodDataSourceLinkActive();
    super();
}

//untuk method deleted() dipakai jika ada table lines/detail
public void deleted()
{
    //element.numberSeqFormHandler().formMethodDataSourceDelete();
    super();
}

Tidak ada komentar:

Posting Komentar

Erorr CS1963 - An expression tree may not contain a dynamic operation.

Kali ini saya mendapatkan erorr dengan code CS1963, padahal sebelumnya saya sudah mendefinisikan 'var item in Model' di @foreach(var...