My code here is to copy Purchase Agreement line from reference Purchase Agreement to new Purchase Agreement.
static void PSMCopydirecttoagreementline(Args _args)
{
AgreementLineQuantityCommitment agreementLineQuantity;
AgreementLineQuantityCommitment xagreementLineQuantity;
AgreementLineVolumeCommitment agreementlinevolume;
AgreementLineVolumeCommitment xagreementlinevolume;
PurchAgreementHeader purchAgreementHeader = PurchAgreementHeader::findAgreementId("PSM-000020");//Header reference
purchAgreementHeader xpurchagreementheader = PurchAgreementHeader::findAgreementId("PSM-000078");//Header baru
//Jika Komitment Purchase Agreement berdasaran kuantity
if(purchAgreementHeader.DefaultAgreementLineType == CommitmentType::ProductQuantity)
{
info("Quantity based");
//copy line AgrementLIneQuanity menjadi line baru
while select agreementLineQuantity
where agreementLineQuantity.Agreement == purchAgreementHeader.RecId
{
xagreementLineQuantity.clear();
xagreementLineQuantity.data(agreementLineQuantity);
xagreementLineQuantity.Agreement = xpurchagreementheader.RecId;
xagreementLineQuantity.doInsert();
}
}
else
{
//Jika Komitment Purchase Agreement BUKAN berdasaran kuantity
info("value based");
while select agreementlinevolume
where agreementlinevolume.Agreement == purchAgreementHeader.RecId
{
xagreementlinevolume.clear();
xagreementlinevolume.data(agreementlinevolume);
xagreementlinevolume.Agreement = xpurchagreementheader.RecId;
xagreementlinevolume.doInsert();
}
}
}
below is how to setup and create new Purchase Agreement(header) from reference Purchase Agreement(header) through x++
void createDuplicate()
{
ttsBegin;
this.setHeader();
this.createPurchAgreementHeader();
this.setLine();
//this.createAgreementLine();
ttsCommit;
info("done");
}
void setHeader()
{
PurchAgreementId tmpAgreementId;
NumberSeq num;
xpurchagreementheader.clear();
xpurchagreementheader.data(purchAgreementHeader);
xpurchagreementheader.WorkflowStatus_PSN = PurchAgreementWorkflowStatus::NotSubmitted;
xpurchagreementheader.PSMTotalNetAmount = 0;
num = NumberSeq::newGetNum(PurchParameters::numRefPurchAgreementId());
tmpAgreementId = num.num();
info(strFmt("num %1",tmpAgreementId));
if (PurchAgreementHeader::findAgreementId(tmpAgreementId).RecId)
{
num.abort();
checkFailed("@SYS19304");
checkFailed(strfmt("@SYS24176", tmpAgreementId));
throw error("@SYS23020");
}
xpurchagreementheader.PurchNumberSequence = tmpAgreementId;
num.used();
agreementHeaderDefault = AgreementHeaderDefault::findAgreementHeader(purchAgreementHeader.RecId);
if(agreementHeaderDefault.RecId)
{
xgreementHeaderDefault.clear();
xgreementHeaderDefault.data(agreementHeaderDefault);
}
purchAgreementHeaderDefault = PurchAgreementHeaderDefault::findPurchAgreementHeader(purchAgreementHeader.RecId);
if(purchAgreementHeaderDefault.RecId)
{
xpurchAgreementHeaderDefault.clear();
xpurchAgreementHeaderDefault.data(purchAgreementHeaderDefault);
}
void createPurchAgreementHeader()
{
xpurchagreementheader.insert();
xgreementHeaderDefault.AgreementHeader = xpurchagreementheader.RecId;
xgreementHeaderDefault.insert();
xpurchAgreementHeaderDefault.PurchaseAgreementHeader = xpurchagreementheader.RecId;
xpurchAgreementHeaderDefault.insert();
}
note :
u must define/create those 3 method createDuplicate(),setHeader() and createPurchAgreementheader() in the class. for me i called those three methods in run() method.
All Archives in this blog may be used for the Junior,Dummies or someone who just started for career at Dynamics Ax ... A Place Where U can Start ur Code - right here ...
Jumat, 01 November 2019
Selasa, 29 Oktober 2019
Opening balance on report Summary trial balance showing 0
Ada case dimana pada saat kita mengenerate report summary trial balance value dari opening balance = 0.
anda bisa coba jalankan job berikut :
static void ClearCache(Args _args)
{
LedgerCache::clearAllScopes();
pause;
}
Minggu, 18 Agustus 2019
Create InventDim otomatis
Disini akan diperlihatkan bagaimana kita membuat/memakai nomor InventdimId secara otomatis.
Sebagai contoh, buatlah satu Table yang mempunyai field inventdimId. disini saya buat contoh table HYInvetdimDisplay.
dengan field IDHY,InventDimId,ItemId
Relasi :
HYNInventdimDisplay.InvetDimId <> InventDim.InventDimId
HYNInventdimDisplay.ItemId<> InventTable.ItemId
ketik method2 berikut ditable kamu :
public InventDim inventDim(boolean _forUpdate = false)
{
return InventDim::find(this.InventDimId,_forUpdate);
}
public server void modifyInventDim(InventDim _inventDim, FieldId _tableField)
{
InventDim inventDimLocal = InventDim::findOrCreate(_inventDim);
;
this.setInventDimId(inventDimLocal.InventDimId, _tableField, inventDimLocal);
}
public void setInventDimId(InventDimId _inventDimId, FieldId _tableField, InventDim _inventDim = InventDim::find(_inventDimId))
{
InventDim currentInventDim = this.(_tableField) == _inventDimId ? _inventDim : this.inventDim(_tableField);
this.(_tableField) = _inventDimId;
}
Kita menuju ke pembuatan GUI :
buat sebuah form dengan DataSource
>HYNInventdimDisplay
>InventDim
Property InventDim :
Kita menuju ke pembuatan GUI :
buat sebuah form dengan DataSource
>HYNInventdimDisplay
>InventDim
Property InventDim :
Tambahkan method berikut di Datasource InventDim :
public void initValue()
{
InventDim.data(InventDim::find(HYNInventdimdisplay.InventDimId));
super();
}
void inventDimModified()
{
HYNInventdimdisplay.modifyInventDim(InventDim, fieldNum(HYNInventdimdisplay, InventDimId));
InventDim.data(InventDim::find(HYNInventdimdisplay.InventDimId));
InventDim_ds.setCurrent();
InventDim_ds.reread();
InventDim_ds.refresh();
}
Tambahkan method berikut pada setiap field yang akan dijadikan sebagai dimension sebuah Item :
public void modified()
{
super();
InventDim_ds.inventDimModified();
}
Minggu, 28 Juli 2019
Error "Object reference not to set to an instance of an object" SSRS AX 2012 (versi 2)
Error "Object reference not to set to an instance of an object" SSRS AX 2012
Sekali lagi saya akan menceritakan (saya pakai kata "menceritakan" karena ..saya ingin pakai daripda saya menggunakan kata "menjelaskan") bagaimana menangani error diatas. Sebelumnya saya juga sudah pernah mengceritakan penanganan error tersebut dipostingan saya sebelumnya.
Kali ini, error ini muncul pada saat kita mau test hasil deploy SSRSReport dari Environment DEV ke LIVE. (sumpah ini error ini emang bikin jengkel, kenapa harus selalu muncul di SSRS).
Pertama :
Setelah deploy element SSRSReport kita di AOT .
Masuk ke \\Users\[folder user]\[appdata]
delete semua file *.uac
Masuk ke AOT lagi.
Refresh report server , clear chace Dsb.
Coba test print.
Rabu, 03 Juli 2019
/DynamicsAx/PurchPurchaseOrderreport.Report4´ cannot be found (rsItemNotFound)
"Error while setting server report parameters. Error Message: The item ´/DynamicsAx/PurchPurchaseOrderreport.Report4´ cannot be found (rsItemNotFound)"
Error ini muncul jika custom design report yang kita buat belum sepenuhnya terdeploy di environment yang kita tuju.
pada kasus saya, di Visual studio sudah berhasil dideploy. Tetapi pada saat aplikasi akan mengupdate database report akun yang saya pakai ternyata tidak mempunyai permision untuk merubah table report yang ada di server SSRS.
maka error selanjutnya jika kamu lanjutkan 'klik kanan pada object ssrs > Deploy element' akan mendapatkan error "you dont have permision... bla.. bla... contact your administrator".
Biasanya ini terjadi jika kita mempunyai 2 Environment atau 2 AOS.
Ex : AOS1 dan Visual Studio yang konek ke AOS1
AOS2
Saat kita memakai client yang berseting AOS1 tetapi Configurasi AX ke AOS2. maka error ini akan muncul saat kita mencoba untuk deploy report SSRS. Maka arahkan configurasi ke AOS1.
Biasanya ini terjadi jika kita mempunyai 2 Environment atau 2 AOS.
Ex : AOS1 dan Visual Studio yang konek ke AOS1
AOS2
Saat kita memakai client yang berseting AOS1 tetapi Configurasi AX ke AOS2. maka error ini akan muncul saat kita mencoba untuk deploy report SSRS. Maka arahkan configurasi ke AOS1.
Blank page/paper diawal/antara/akhir halaman report
Terkadang report SSRS yang diexport atau disave dalam format PDF akan membuat halaman kosong pada awal/antara/akhir perhalaman report. walaupun diScreen report AX report tsb baik-baik saja.
Cara pertama :
beri warna semua field object direport. karena kamu tidak akan menemukan sesuatu pada report kamu jika feld border tersebut tdak berwana. Jika field borderline kamu berwarna, pada saat dieksport ke PDF kita akan melihat kelebihan2 dari field yang kepanjangan sampai ke halaman berikutnya.
Cara kedua :
Buat semua margin = 0cm
Jangan sisakan ruang kosong pada Page Properties report kamu.
Selamat mencoba.
Selasa, 02 Juli 2019
Cara mengetahui regionId
coba dan tambahkan code berikut diJob baru kalian.
static void PSMcobacountryregionID(Args _args)
{
LogisticsAddressCountryRegionISOCode isoCountryCode = SysCountryRegionCode::countryInfo();
LogisticsAddressCountryRegionId countryRegionId = SysCountryRegionCode::getCountryRegionIdByIsoCode(isoCountryCode);
;
info(isoCountryCode);
info(countryRegionId);
}
ini biasanya bisa dipakai untuk mengidentifikasi/custom Report Purchase Order/Sales Order
Langganan:
Postingan (Atom)
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...
-
Biasanya kita menginginkan sebuah environment yang sama dengan LIVE/PROD untuk mengtest sebuah proses. Maka kita bisa menggunakan fitur Clou...
-
Kali ini saya mendapatkan erorr dengan code CS1963, padahal sebelumnya saya sudah mendefinisikan 'var item in Model' di @foreach(var...
-
"Error while setting server report parameters. Error Message: The item ´/DynamicsAx/PurchPurchaseOrderreport.Report4´ cannot be found ...