Home dynamics ax custom modules – picking list enabled if already has advance payment
dynamics ax

custom modules – picking list enabled if already has advance payment

pada ax 2012, customer membutuhkan sebuah validasi pada saat setelah sales order selesai, user yang mau membuat picking list harus ada validasi bahwa sudah ada dilakukan advance payment

yang perlu diketahui:

  • pada salestable form dan salestablelistpage form menggunakan interaction class 
  • salestable form -> salestableinteraction class
  • salestablelistpage form -> salestablelistpageinteraction

 

berikut ini adalah sedikit customnya:

  • perhatikan gambar di bawah
  • ada object dengan nama buttonUpdatePickingList
  • pada object tersebut, perhatikan bahwa ini yang akan dibuat enable disable, maka harus di check bahwa object ini status autodeclarationnya true
  • perhatikan pada salestable:active, pada modul ini menandakan “ketika mencapai record ini maka akan terjadi bla bla”
  • nah di sana tinggal cari relasi object buttonUpdatePickingList yang terbuat dari method active dan ditemukan lah fungsi ini, toc_setbuttonpickandpack
  • kita periksa code ini, dia akan menuju ke source lain yaitu
    public void TOC_SetButtonPickAndPack()
    {
        SDX_CustDOJour  doJour;
    
        select firstOnly firstFast * from doJour
        where doJour.SalesId == SalesTable.SalesId;
    
        //added by toc rny on feb 17, 2015
        if(SalesParameters::find().TOC_DOEnhancement && !doJour)
        {
            buttonUpdateDeliveryOrder.enabled(false);
            buttonProformaDeliveryOrder.enabled(false);
    
            if(salestable.SalesOrderWorkflowState < SalesOrderWorkflowState::Approved)
            {
                buttonUpdatePickingList.enabled(false);
            }
            else
            {
                if(!salestable.SDX_RequireAdvance)
                    buttonUpdatePickingList.enabled(true);
                else if(TOC_DO_Enhancement::CheckAdvancePaymentSettle(salestable.SalesId))
                    buttonUpdatePickingList.enabled(true);
                else
                    buttonUpdatePickingList.enabled(false);
            }
        }
    }

    pada code ini, kita bisa lihat, bila buttonUpdatePickingList akan di enable true false bila:

    • salesorderworkflow nya belum di approve maka false
    • bila ada field sdx_requireadvance statusnya NoYes::Yes maka true
    • bila fungsi cekadvancepaymentsettle mengatakan sdh ada advance payment maka true
    • sisanya di set false
  • karena kita akan membuat custom bila cekadvancepaymentsettle maka kita langsung ke modul tsb
  • pada code tsb berisi:
    public static boolean CheckAdvancePaymentSettle(salesId _salesId)
    {
        boolean status = false;
        boolean isSettle = false;
        LedgerJournalTable  ledgerJournalTable;
        LedgerJournalTrans  ledgerjournalTrans;
        SalesTable          salesTable = SalesTable::find(_salesId);
        CustTrans           custtrans;
    
    
        select firstOnly firstFast * from LedgerJournalTable
        where LedgerJournalTable.SDX_SalesId == _salesId
            //tambahan di sini ronny 20250613-1502 perbaikan dp
            && ledgerJournalTable.SDX_AdvanceAmount
            ;
    
        while select * from LedgerJournalTrans
            where LedgerJournalTrans.JournalNum == LedgerJournalTable.JournalNum
        {
            select firstonly firstfast * from custtrans
            where custtrans.Voucher == ledgerjournalTrans.Voucher &&
            custtrans.AmountCur > 0;
            if(custtrans.LastSettleVoucher)
            {
                isSettle = true;
                break;
            }
        }
    
        return isSettle;
    }

    ini adalah logic di mana pada journal payment sdh dilakukan atau belum jika sdh dilakukan dan sudah di settle maka dianggap bisa enable picking listnya

  •  

Author

Ronny

Leave a Reply