Args args = new Args(); args.record(myArgumentRecord); args.caller(this); new MenuFunction(menuItemOutputStr(MyOutputMenuItem), MenuItemType::Output).run(args);
Month: January 2015
Speeding up Sales Agreement Release Order process
When we create SO from sales agreement, we will face a problem that occur on standard version of AX 2012 if number of sales agreement record are thousands and we only want to choose let’s say 2 or 3 line from sales agreement line to Sales Line.
we can choose records from agreement line by fill the quantity, and the problem is standard AX still will loop all records no matter the quantity is fill or not. and all thosands will going through process that not needed.
Class : SalesAutoCreate\Create
void create() { #OCCRetryCount try { setprefix("@SYS55110"); ttsbegin; while (this.recordExist()) { this.setCust(); setprefix(#PreFixField(CustTable,AccountNum)); this.setSalesTable(); this.setSalesLine(); setprefix(#PreFixField(SalesLine,ItemId)); this.nextRecord(); } this.endUpdate(); ttscommit; } catch (Exception::Deadlock) { retry; } catch (Exception::UpdateConflict) { if (appl.ttsLevel() == 0) { if (xSession::currentRetryCount() >= #RetryNum) { throw Exception::UpdateConflictNotRecovered; } else { retry; } } else { throw Exception::UpdateConflict; } } }
i tried debug and i found the issue that made sales agreement release order process become so slow. and made a modification as below.
Class : SalesAutoCreate_ReleaseFromAgreement\New
protected void new(Common _releaseOrderLine, Object _callBackClass = null, Common _releaseOrderTable = null) { //modify by fanddy //purpose : speeding up release agreement from BMP SalesCreateReleaseOrderLineTmp TIDSalesCreateReleaseOrderLineTmp; releaseOrderLine = _releaseOrderLine as SalesCreateReleaseOrderLineTmp; delete_from releaseOrderLine where releaseOrderLine.SalesQty < 1; //end modify fanddy releaseOrderTable = _releaseOrderTable as SalesCreateReleaseOrderTableTmp; this.firstRecord(); createFromAgreementLine = AgreementLineQuantityCommitment::find(releaseOrderLine.AgreementLineQuantityCommitment, false); createFromSalesAgreement = SalesAgreementHeader::find(createFromAgreementLine.Agreement ? createFromAgreementLine.Agreement : releaseOrderTable.AgreementHeader); currentSalesId = ''; firstRecord = true; super(_releaseOrderLine,_callBackClass); // <GEERU> countryRegion_RU = SysCountryRegionCode::isLegalEntityInCountryRegion([#isoRU]); // </GEERU>
Voila !! Now your when you create an SO with 2-3 SO lines originated from thousands line data of sales agreement, the process has been boosted !!
print report via x++ AX 2012
SrsReportRunController controller = new SrsReportRunController(); SysUserLicenseCountRDPContract rdpContract = new SysUserLicenseCountRDPContract(); SRSPrintDestinationSettings settings; // Define report and report design to use controller.parmReportName(ssrsReportStr(SysUserLicenseCountReport, Report)); // Use execution mode appropriate to your situation controller.parmExecutionMode(SysOperationExecutionMode::ScheduledBatch); // Suppress report dialog controller.parmShowDialog(false); // Explicitly provide all required parameters rdpContract.parmReportStateDate(systemDateGet()); controller.parmReportContract().parmRdpContract(rdpContract); // Change print settings as needed settings = controller.parmReportContract().parmPrintSettings(); settings.printMediumType(SRSPrintMediumType::File); settings.fileFormat(SRSReportFileFormat::Excel); settings.fileName(@'\\share\UserLicenseCount.xlsx'); // Execute the report controller.startOperation();
Upload a LedgerJournalTrans Fixed Asset type without insert to LedgerJournalTrans_Asset table
an error will occured when you try validate ledgerJournalTrans.
how to fix this :
static void TIDF_fixBugsUploadFixedAssets(Args _args) { ledgerjournaltrans ledgerJournalTrans; LedgerJournalTrans_Asset cekExist; LedgerJournalTrans_Asset LedgerJournalTrans_Asset; while select ledgerJournalTrans where ledgerJournalTrans.JournalNum == 'GEN-000007' { select cekExist where cekExist.RefRecId == ledgerJournalTrans.RecId; if (ledgerJournalTrans.isFixedAssetsTransaction() && !cekExist) { ledgerJournalTrans_Asset.clear(); ledgerJournalTrans_Asset.initValue(); ledgerJournalTrans_Asset.RefRecId = ledgerJournalTrans.RecId; ledgerJournalTrans_Asset.AssetId = ledgerJournalTrans.getAssetId(); ledgerJournalTrans_Asset.Company = ledgerJournalTrans.getAssetCompany(); ledgerJournalTrans_Asset.TransType = AssetTransTypeJournal::Acquisition; ledgerJournalTrans_Asset.BookId = "ALL"; if (!ledgerJournalTrans_Asset.validateWrite()) throw Exception::Error; ledgerJournalTrans_Asset.insert(); } } }
source : http://www.cnblogs.com/Fandyx/p/3343688.html