Senin, 29 Mei 2023

How to force complete CIL recreation in MS Dynamics AX 2012

https://cloudblogs.microsoft.com/dynamics365/no-audience/2014/06/22/how-to-force-complete-cil-recreation-in-ms-dynamics-ax-2012/

Cancel and Correct Packingslip

Class yang mengontrol tombol Cancel dan Correct PackingSlip bisa dilihat di sini :

VendPackingSlipJourFormHelper.canPackingSlipBeCanceledOrCorrected()

public static server container canPackingSlipBeCanceledOrCorrected(VendPackingSlipJour _vendPackingSlipJour)
{
    boolean     canBeCorrected;
    boolean     canBeCanceled;
    boolean     isIntercompanyDirectDelivery;
    PurchTable  purchTable = _vendPackingSlipJour.purchTable();

    isIntercompanyDirectDelivery = purchTable.InterCompanyDirectDelivery && purchTable.isInterCompanyOrder();
    /* Remark by Husna untuk form Berita Acara GRN 20220214
    canBeCorrected = !isIntercompanyDirectDelivery && !_vendPackingSlipJour.isCanceled() && !_vendPackingSlipJour.isFullyInvoiced();
    canBeCanceled  = canBeCorrected && !_vendPackingSlipJour.isInvoiceMatched();
    */

    canBeCorrected = !isIntercompanyDirectDelivery && !_vendPackingSlipJour.isCanceled() && !_vendPackingSlipJour.isFullyInvoiced() && _vendPackingSlipJour.PSMAllowrevisi(); //add by Husna untuk form berita acara GRN 20220214
    canBeCanceled  = canBeCorrected && !_vendPackingSlipJour.isInvoiceMatched() && _vendPackingSlipJour.PSMAllowrevisi(); //add by Husna untuk form berita acara GRN 20220214

    return [canBeCanceled, canBeCorrected];
}

Jumat, 26 Mei 2023

X++ Exception: Workitem could not be created, Insufficient right to user ...

Error ini memang tidak specific merujuk pada sebuah lines logic dari sebuah class sehingga beberapa kasus bisa membingungkan.
kebetulan pada kasus saya terjadi karena setup Query yang menjadi reference class WorkflowtypeDocument.

Pada saat anda membuka Workflowtype anda, anda akan melihat properties DocumentMenuItem sesuai dengan menuitem sebuah form yang mempunyai Workflow. tetapi anehnya system mengatakan tidak mempunyai akses kesana.
anda sudah cekda mencoba login dengan user_account yang dipilih, tetap bisa menampilkan Form menuitemnya.

Pada Kasus saya terjadi karena :
Error ini terjadi di Query yang anda Setup.
Misalkan : Form A yang mempunyai 1 Parent dan 2 Child Table.
Anda definisikan Parent dengan table A
                             dengan child1 table B
                             table B mempunyai child table C.
                             status Join = InnerJoin

Maka jika Entrian tablenya ternyata ada yang kosong disalah satu tablenya system akan Error dengan mengatakan "Workitem could not be created, Insufficient right to user"
                    "X++ Exception: The workflow system could not access the business document data. Report this issue to your system administrator"

Bahkan dengan Akun Pusaka/System Administrator pun tidak akan mampu memecakan error ini.

Analisis :
setelah saya coba tampilkan Query ini kedalam sebuah View, dengan resource field hanya dari table parent saja, jumlah record/data itu kurang dari actualnya. 
di actual ada 3 record
di view hanya 2 record.
1 lagi kemana?
karena record 1 lagi hanya mempunyai data ditable A dan B, sdangan C kosong.

Masuk akal memang, anda mendefinisikan Querynya dengan 3 sumber data tetapi yang informasi yang akan di sampaikan ke Workitem tidak lengkap, salah satu table tidak mempunyai data.

Jadi untuk menghindari error ini pastikan kebutuhan anda. Jika memang Datasource tidak harus semuanya terisi maka pilih datasource/table yang diprlukan saja/mandatory. 

salah satu sumber bantuan :
https://workflowax.wordpress.com/2012/05/02/x-exception-workitem-could-not-be-created/

Kamis, 04 Mei 2023

Menambahkan main account dengan x++

https://rrabbani.blogspot.com/2017/08/dynamics-ax-365-create-main-account.html?sc=1683269975150#c3783525751097406839

Menggunakan MainAccountContract,MainAccountCategory claSS

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...