X++ Code to Create Zip Files in D365 - D365 F&O

Hello Everyone,

Today we will be looking at, how to create a Zip file by using X++ code, while exporting data from the system. Let us see how the code is build.

using System.IO.Compression;

public void createZipFile(Map _cStoreErrorData)
{
    MapEnumerator mapEnumerator = _cStoreErrorData.getEnumerator();
       
        if (_cStoreErrorData.elements() > 0)
        {
            using(System.IO.MemoryStream zipStream  = new System.IO.MemoryStream())
            {
                using(System.IO.Compression.ZipArchive archive  = new System.IO.Compression.ZipArchive(zipStream, System.IO.Compression.ZipArchiveMode::Create, true))

X++ Code To Use Existing NumberSeq While importing Data via OData Services - D365 F&O

Hello Everyone,

Today we will be looking at using the existing number sequence while importing a record using Odata and to have the record imported with automatic number sequence on any field. We need to overwrite the initValue method of DataEntity. Let us see how is the code is build.

public void initValue()

{
    if  (!this.skipNumberSequenceCheck())
    {
        NumberSeqRecordFieldHandler::enableNumberSequenceControlForField(this,
                                                                         fieldNum(

X++ Code to Post Sales Order Invoice line by line - D365 F&O || AX 2012

Hello Everyone,

Today we will be looking at how to invoice a Sales order line by line. We usually use "SalesFormLetter" class and "run" method to post and SO which will post the entire SO and all the lines in it. Recently I have come across a new requirement while posting an SO i.e.., to post the SO invoice line by line. So lets see how the code is build.


Public static void salesOrderInvoiceByLine(SalesLine    _salesline)
{
        salesFormLetter         salesFormLetter;
        salesFormletterParmData salesFormLetterParmData;
        salesParmUpdate         salesParmUpdate;
        salesParmTable          salesParmTable;
        salesParmLine           salesParmLine;
        salesTable              salesTable;
      
        ttsbegin;
        salesTable  = salesTable::find(_salesline.SalesId);
        salesFormLetterParmData = salesFormletterParmData::newData(DocumentStatus::Invoice, VersioningUpdateType::Initial);

        salesFormLetterParmData.parmOnlyCreateParmUpdate(true);
        salesFormLetterParmData.createData(false);
        salesParmUpdate = salesFormLetterParmData.parmParmUpdate();

        salesParmTable.clear();
        salesParmTable.TransDate                = _salesline.ReceiptDateRequested;
        salesParmTable.Ordering                 = DocumentStatus::Invoice;
        salesParmTable.ParmJobStatus            = ParmJobStatus::Waiting;
        salesParmTable.salesId                  = salesTable.salesId;