Posts

Showing posts from October, 2024

How to deploy a package in d365fo x++

How to deploy a package in d365fo x++ Code: AXUpdateInstaller.exe devinstall ./ AXUpdateInstaller.exe devinstall unblock the package & go to the package directory axupdateinstaller devinstall  

Create sales invoice and post in d365fo x++

Create sales invoice and post in d365fo x++ Code: public void postSOInvoice() { salesFormLetter salesFormLetter; salesFormletterParmData salesFormLetterParmData; salesParmUpdate salesParmUpdate; salesParmTable salesParmTable; salesParmLine salesParmLine; SalesLine salesLine; DSASalesAdvanceInvoice salesAdvanceInvoice; CustInvoiceJour custInvoiceJour; DSASalesAdvanceTable salesAdvanceTable; SalesTable saleTablePPUpdate; InvoiceId invoiceId; custParameters = CustParameters::find(); try { saleTablePPUpdate.clear(); select forupdate PostingProfile from saleTablePPUpdate where saleTablePPUpdate.SalesId == salesTable.SalesId; ttsbegin; saleTablePPUpdate.PostingProfile = custParameters.DSASalesAdvancePostingProfile; ...

Get invoice settlements with view in d365fo x++

get invoice settlements with view in d365fo x++ Code: real taxper = (ProjInvoiceJour::find(CustTrans.Invoice, CustTrans.TransDate).SumTax) / ProjInvoiceJour.SalesOrderbalance; SettlementViewBuilder settlementViewBuilder = SettlementViewBuilder::construct(); settlementViewBuilder.parmIncludePaymentJournals(NoYes::No); settlementViewBuilder.parmRestrictSearchToOriginalDocument(NoYes::Yes); SettlementView SettlementView = settlementViewBuilder.createView(CustTrans); while select SettlementView where SettlementView.TransactionType == LedgerTransType::Payment && (SettlementView.TransDate >= startDate && SettlementView.TransDate <= endDate) { collectionAmount = collectionAmount + SettlementView.ReportingCurrencyAmount / (1 + taxper); }

Create Data Matrix QR Code in d365fo x++

Create Data Matrix QR Code in d365fo x++ Code: using System; using System.Drawing; using ZXing; using ZXing.Datamatrix; using ZXing.Common; using ZXing.QrCode; public container genrateQR(str data) { // Define the barcode writer for Data Matrix var writer = new ZXing.Datamatrix.DataMatrixWriter(); var BarcodeFormat = new ZXing.BarcodeFormat(); // Encode data to a BitMatrix var bitMatrix = writer.encode(data, BarcodeFormat::DATA_MATRIX, 200, 200); // Convert BitMatrix to a Bitmap var barcodeBitmap = new ZXing.Rendering.BitmapRenderer().Render(bitMatrix, BarcodeFormat::DATA_MATRIX, data); using (System.IO.MemoryStream stream = new System.IO.MemoryStream()) { barcodeBitmap.Save(stream, System.Drawing.Imaging.ImageFormat::Png); return Binary::constructFromMemoryStream(stream).getContainer(); } }

Default Descriptor of Model in d365fo x++

Default Descriptor of Model in d365fo x++ Code: <?xml version="1.0" encoding="utf-8"?> <AxModelInfo xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <AppliedUpdates xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" /> <Customization>Allow</Customization> <Description></Description> <DisplayName>AlShurfa</DisplayName> <Id>896000661</Id> <InternalsVisibleTo xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" /> <Layer>14</Layer> <Locked>false</Locked> <ModelModule>AlShurfa</ModelModule> <ModelReferences xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" i:nil="true" /> <ModuleReferences xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d2p1:string>ApplicationCommon</d2p1:string> ...

Query Packed in d365fo x++

Query Packed in d365fo x++ Code: try { DSSEntityJSONConversionSetupLines EntityJSONConversionSetupLines; MultiSelectionHelper Helper = MultiSelectionHelper::construct(); Helper.parmDataSource(DSSEntityJSONConversionSetupLines_ds); EntityJSONConversionSetupLines = Helper.getFirst() as DSSEntityJSONConversionSetupLines; while (EntityJSONConversionSetupLines) { if(EntityJSONConversionSetupLines.IsExecute == NoYes::No) { EntityJSONConversionSetupLines = Helper.getNext(); continue; } Query query; QueryBuildDataSource qbds; QueryRun queryRun; container QueryPack; // C...

Generate Free Text Invoice QR Code in d365fo x++

Generate Free Text Invoice QR Code in d365fo x++ Code: using Microsoft.Dynamics.ApplicationSuite.QRCode; using QR = QRCoder; class FreeTextInvoiceQRCode { int qrCodeByteArrIndex; System.Byte[] qrCodeByteArray; private static DSSLFreeTextInvoiceQRCode objGAZTQRCode; private void new() { } public static DSSLFreeTextInvoiceQRCode construct() { return (objGAZTQRCode) ? objGAZTQRCode : new DSSLFreeTextInvoiceQRCode(); } public container generate(str _companyName, str _companyVat, utcdatetime _postedDateTime, real _vatAmount, real _amountIncVat) { str strCompanyName, strVATNum, strDateTime, strTotalVATAmount, strTotalAmountIncVAT, strQrCodeBase64, strTime; int intCompanyName, intVATNum, intDateTime, intTotalVATAmount, intTotalAmountIncVAT; int qrByteArrayLength; container ...

Add Dialog Box in d365fo x++

  Add Dialog Box  in d365fo x++ Code: public container Dialog() { Dialog dialog; DialogField fieldCompany, fieldDomain, fieldClientid, fieldClientsecret, fieldResource, fieldLoginURL; dialog = new Dialog(); dialog.addText("Enter Company"); fieldCompany = dialog.addField(extendedTypeStr(Name)); dialog.addText("Enter Domain"); fieldDomain = dialog.addField(extendedTypeStr(Name)); dialog.addText("Enter Clientid"); fieldClientid = dialog.addField(extendedTypeStr(Name)); dialog.addText("Enter Client Secret"); fieldClientsecret = dialog.addField(extendedTypeStr(Name)); dialog.addText("Enter Resource"); fieldResource = dialog.addField(extendedTypeStr(Name)); dialog.addText("Enter LoginURL"); fieldLoginURL = dialog.addField(extendedTypeStr(Name)); dialog.run(); if (dialog.clos...

Disable financial Dimension on form in d365fo x++

Disable financial Dimension on form  in d365fo x++ Code: Public class DSADimensionEntryControlUtil { //Enable Disable Sector Dimension, JS, 11/19/2024 public static void disableDimension(custtable custtable, DimensionEntryControl dimControl , str Sector = 'Sector') { DimensionEnumeration dimensionSetId = DimensionCache::getDimensionAttributeSetForLedger(); DimensionAttributeSetStorage dimensionAttributeSetStorage = new DimensionAttributeSetStorage(); DimensionAttribute dimensionAttribute; DimensionAttributeSetItem dimAttrSetItem; if(custtable.DSACustomerSectorType == DSACustomerSectorType::MultiSector) { while select dimensionAttribute where dimensionAttribute.Name != Sector // Exclude specific dimension which should be not editable join dimAttrSetItem where dimAttrSetItem.DimensionAttribute == dimensionAttribute.Re...

Create Transfer Journal in d365fo x++

Create Transfer Journal in d365fo x++ Code: [FormControlEventHandler(formControlStr(TxlDemandNoteForm, CreateTransferJournal), FormControlEventType::Clicked)] public static void CreateTransferJournal_OnClicked(FormControl sender, FormControlEventArgs e) { TxlDemandNoteLine TxlDemandNoteLine; InventJournalTable inventJournalTable; InventJournalTrans inventJournalTrans; InventJournalName InventJournalName; int64 line = 0; NumberSeq num,num1; FormDataSource TxlDemandNoteHeader_DS = sender.formRun().dataSource(formDataSourceStr(TxlDemandNoteForm, TxlDemandNoteHeader)); TxlDemandNoteHeader TxlDemandNoteHeader = TxlDemandNoteHeader_DS.cursor(); select TxlDemandNoteLine where TxlDemandNoteLine.DemandNO == TxlDemandNoteHeader.DemandNO; if(!TxlDemandNoteLine) { error("Add Lines!"); return; } if(TxlDemandNote...

Vendor Settlement in d365fo x++

Vendor Settlement in d365fo x++ Code: private boolean vendorSettlement(VendAccount _vendAccount,LedgerJournalTrans ledgerJournalTrans) { boolean ret = true; custvendopentransmanager manager; VendTransOpen vendTransOpen; VendTrans vendTrans; ExchangeRateHelper exchangeRateHelper; AmountCur totalSettlement; //To mark particular invoice based on Acc num while select forUpdate vendTransOpen where vendTransOpen.AccountNum == _vendAccount join vendTrans where vendTrans.RecId == vendTransOpen.RefRecId && vendTrans.AccountNum == vendTransOpen.AccountNum { if(vendtransopen) { //To check transaction line which we want to settle manager = custvendopentransmanager::construct(ledgerJournalTrans); manager.updateTran...

Create Custom Number Sequence in d365fo x++

Create Custom Number Sequence in d365fo x++ Code: public class DSAQRNumSequence extends NumberSeqApplicationModule { protected void loadModule() { NumberSeqDatatype datatype = NumberSeqDatatype::construct(); datatype.parmDatatypeId(extendedTypeNum(DSAQRSequenceNo)); datatype.parmReferenceHelp(literalStr("Unique Key for Purchase ID")); datatype.parmWizardIsContinuous(false); datatype.parmWizardfetchAheadQty(10); datatype.parmWizardIsManual(NoYes::No); datatype.parmWizardIsChangeDownAllowed(NoYes::No); datatype.parmWizardIsChangeUpAllowed(NoYes::No); datatype.parmSortField(1); datatype.addParameterType(NumberSeqParameterType::DataArea,true,false); this.create(datatype); } public NumberSeqModule numberSeqModule() { return NumberSeqModule::Invent; } [SubscribesTo(classstr(NumberSeqGlobal),delegateStr(NumberSeqGlobal,buildModulesMapDelegate))] stati...

Global form & workflow level work in d365fo x++

 Global form & workflow level work in d365fo x++ Code:  [ExtensionOf(classStr(FormRun))] final class DSFormRun_Extension { public void init() { next init(); if(LedgerParameters::find().IsMandatoryFD) { DSMandatoryFinancialDimensionsUtil extensionInstance; extensionInstance = new DSMandatoryFinancialDimensionsUtil(this); if(extensionInstance) extensionInstance.init(); } } } Public class DSMandatoryFinancialDimensionsUtil { FormRun fRun; boolean initialized; public void new(FormRun _formRunInstance) { initialized = false; fRun = _formRunInstance; //register this extension with the main form fRun.registerExtensionInstance(classStr(DSMandatoryFinancialDimensionsUtil), this); } public void OnValidatedWriteHandler(FormDataSource _formDataSource, FormDataSourceEventArgs _eventArgs) { ...

delegate in d365fo x++

delegate  in d365fo x++ Code:  delegate: delegate void checkMandatoryDimensions(SalesTable _SalesTable, EventHandlerResult _result) { } Handler: //Code by JS, 2024/09/18, Mandatory financial Dimension [SubscribesTo(classStr(DSSalesOrderWFTypeSubmitManager), delegateStr(DSSalesOrderWFTypeSubmitManager, checkMandatoryDimensions))] public static void DSSalesOrderWFTypeSubmitManager_checkMandatoryDimensions(SalesTable _SalesTable, EventHandlerResult _result) { boolean isValid = false; if(DSProposedCustomizations::isValid(DSProposedCustomization::MandatoryFinDim)) { Defaultdimensionview dimensionViewHeader, dimensionViewLines; DSADimensionSetup DimensionSetupHeader, DimensionSetupLines; SalesLine SalesLine; while select DimensionSetupHeader where DimensionSetupHeader.SalesOrder == NoYes::Yes notexist...