Posts

Showing posts from October, 2025

Sales order workflow participant in D365fo x++

Sales order workflow participant in D365fo x++ /// <summary /// Sales order workflow participant /// </summary> public class AZAQ_OrderManagerParticipantProvider implements WorkflowParticipantProvider { /// <summary> /// Gets the participant token name displayed in workflow config. /// </summary> /// <returns>WorkflowParticipantTokenList object.</returns> public WorkflowParticipantTokenList getParticipantTokens() { // Constructs the new user group list. WorkflowParticipantTokenList userGroups = WorkflowParticipantTokenList::construct(); userGroups.add("Sales Order Rep", "Sales Order Rep person"); userGroups.add("Sales Rep2", "Sales Order Rep 2 person"); userGroups.add("Support Rep1", "Sales order support Rep 1 person"); return userGroups; } /// <summary> /// Resolve method /// </summary> /...

Run multiple report in D365fo x++

Run multiple report in D365fo x++ using System.IO.Compression; class DSAQMCustAccountStatementV2Controller extends SrsReportRunController { public static void main(Args _args) { DSAQMCustAccountStatementV2Contract inputContractV2 = new DSAQMCustAccountStatementV2Contract(); DSAQMCustAccountStatementV2Controller mainController = new DSAQMCustAccountStatementV2Controller(); mainController.parmArgs(_args); mainController.parmShowDialog(true); mainController.parmReportName(ssrsReportStr(DSAQMCustAccountStatementV2, Report)); mainController.parmLoadFromSysLastValue(false); mainController.startOperation(); } public void runReport() { DSAQMCustAccountStatementV2Contract inputContract = this.parmReportContract().parmRdpContract() as DSAQMCustAccountStatementV2Contract; if(inputContract.parmPrintPDFOption() == DSAQMPrintPDFOption::SinglePdf) { super(); } ...

Number sequence parameter form class in D365fo x++

  Number sequence parameter form class in D365fo x++ [Form] public class DSPMPropertyParameters extends FormRun { NumberSeqReference numberSeqReference; boolean runExecuteDirect; TmpIdRef tmpIdRef; NumberSeqScope scope; NumberSeqApplicationModule numberSeqApplicationModule; container numberSequenceModules; public void init() { this.numberSeqPreInit(); super(); this.numberSeqPostInit(); } void numberSeqPreInit() { runExecuteDirect = false; numberSequenceModules = [NumberSeqModule::DSPMProperty]; numberSeqApplicationModule = new NumberSeqModuleDSProperty(); scope = NumberSeqScopeFactory::createDataAreaScope(); NumberSeqApplicationModule::createReferencesMulti(numberSequenceModules, scope); tmpIdRef.setTmpData(NumberSequenceReference::configurationKeyTableMulti(numberSequenceModules)); ...

Number sequence class in D365fo x++

Number sequence class in D365fo x++ class NumberSeqModuleDSProperty extends NumberSeqApplicationModule { public NumberSeqModule numberSeqModule() { return NumberSeqModule::DSPMProperty; } [SubscribesTo(classstr(NumberSeqGlobal),delegatestr(NumberSeqGlobal,buildModulesMapDelegate))] static void buildModulesMapSubsciber(Map numberSeqModuleNamesMap) { NumberSeqGlobal::addModuleToMap(classnum(NumberSeqModuleDSProperty), numberSeqModuleNamesMap); } protected void loadModule() { NumberSeqDatatype datatype = NumberSeqDatatype::construct(); datatype.parmDatatypeId(extendedTypeNum(DSPMReferenceNo)); datatype.parmReferenceHelp(literalStr("Unique key used for the Ref#.")); datatype.parmWizardIsContinuous(false); datatype.parmWizardIsManual(NoYes::No); datatype.parmWizardIsChangeDownAllowed(NoYes::No); datatype.parmWizardIsChangeUpAllowed(NoYes::No); datatype.parmWizardH...

Get worker information in D365fo x++

 Get worker information in D365fo x++ public static void createUser(HcmWorker _hcmWorker) { DSAPDisprzUsers disprzUsers; DirPerson dirPerson = DirPerson::find(_hcmWorker.Person); DirPersonName dirPersonName = DirPersonName::find(dirPerson.RecId); CompanyInfo CompanyInfo = HcmWorkerHelper::getLegalEntity(_hcmWorker.RecId); OMOperatingUnit department = HcmWorkerHelper::getPrimaryDepartment(_hcmWorker.RecId); HcmPositionWorkerAssignment positiont = HcmWorkerHelper::getWorkerPrimaryPositionAssignment(_hcmWorker.RecId); HcmWorker currentWorkerManager = HcmWorkerHelper::getManagerForWorker(_hcmWorker.RecId); hcmEmployment hcmEmployment = hcmEmployment::find(_hcmWorker.RecId); disprzUsers.PersonnelNumber = _hcmWorker.PersonnelNumber; disprzUsers.UserName = _hcmWorker.email(); disprzUsers.Password = '123456789'; disprzUsers.LegalEntity ...

FTI Posting with manual number in D365fo x++

FTI Posting with manual number in D365fo x++ [ExtensionOf(classStr(CustPostInvoice))] final class CustPostInvoice_AdremGH_Extension { protected container getInvoiceIdAndVoucher(CustInvoiceTable _custInvoiceTable, NumberSeq _numberSeq) { InvoiceId _invoiceId; Voucher _voucher; next getInvoiceIdAndVoucher(_custInvoiceTable, _numberSeq); CustFreeInvoiceCalcTotals custFreeInvoiceCalcTotals = this.custFreeInvoiceCalcTotals; boolean creditNote = this.isCreditNote(custFreeInvoiceCalcTotals.custFreeInvoiceInvoiceAmount()); if (!this.validate(custFreeInvoiceCalcTotals.custFreeInvoiceInvoiceAmount(), creditNote)) { Message::Add(MessageSeverity::Error, "@SYS25904"); throw Exception::Error; } NumberSeq newNumSeq = this.allocateNumAndVoucher(creditNote); if (CustParameters::find().ADMFTIManualNum) { [_invoiceId, _voucher] = this.getNumAndVoucher(_c...

consume api in D365fo x++

consume api in D365fo x++ protected static str sendHttpRequest(str method, str url, str token, str jsonBody) { System.Text.UTF8Encoding encoding; str responseJson; RetailWebResponse response; RetailWebRequest request; System.IO.Stream requestStream, responseStream; System.IO.StreamReader streamReader; System.Byte[] bytes; System.Net.WebHeaderCollection headers; System.Net.WebException webException; encoding = new System.Text.UTF8Encoding(); try { new InteropPermission(InteropKind::ClrInterop).assert(); request = RetailWebRequest::newUrl(url); request.parmMethod(method); request.parmContentType("application/json"); request.parmHeader("Learntron-Api-Token:" + token); request.setContentBytes(encoding.GetBytes(jsonBody)); response = RetailCommonWebAPI::construct().getResponse(request)...