Create Sales Line Through Code AX X++ D365 Finance & Operations

public void createSalesLine(ItemId _ItemId, InventDimId _InventDimId, Qty _qty SalesId _salesId)
    {
        SalesLine                               salesLine;
        InventTable                            inventTable;
        InventDim                              inventDim;
        InventLocation                       inventLocation;
        InventItemBarcode                 inventBarCode;
        SalesTable                               salesTable = SalesTable::find(_salesId);
        CustTable                                custTable;
        try
        {
            inventTable.clear();
            select * from inventTable
                where inventTable.itemId          == _ItemId;
            select inventBarCode
                    where inventBarCode.itemId      == _ItemId &&
                    inventBarCode.inventDimId       == _InventDim

            inventLocation                      = InventLocation::find(salesTable.InventLocationId);
            inventDim                           = inventBarCode.inventDim();
            inventDim.InventLocationId          = salesTable.InventLocationId;
            inventDim.InventSiteId              = salesTable.InventSiteId;
         
            inventDim                           = InventDim::findOrCreate(inventDim);
            salesLine.clear();
            salesLine.initFromSalesTable(salesTable);
            salesLine.SalesId                   = _salesId;
            salesLine.ItemId                    = inventTable.ItemId;
            salesLine.itemIdChanged();
            //Initializing the sales line from inventory
            salesLine.initFromInventTable(inventTable);
            salesLine.InventDimId               = inventDim.inventDimId;
            salesLine.LineNum                   = SalesLine::lastLineNum(_salesId) + 1;
            salesLine.BarCode                   = inventBarCode.itemBarCode;
            salesLine.BarCodeType               = inventBarCode.barcodeSetupId;
            salesLine.SalesCategory             = _tmpRetailProductsToAdd.Category;
            salesLine.CurrencyCode              = salesTable.CurrencyCode;
            if (salesTable.SalesType            == SalesType::Sales)
            {
                salesLine.SalesQty              = abs(qty);
            }
            else
            {
                salesLine.SalesQty              = -abs(qty);
            }
            salesLine.ShippingDateRequested     = salesTable.ShippingDateRequested;
            salesLine.RetailVariantId           = inventBarCode.RetailVariantId;
            salesLine.createLine(NoYes::Yes, // Validate
                                NoYes::Yes, // initFromSalesTable
                                NoYes::Yes, // initFromInventTable
                                NoYes::Yes, // calcInventQty
                                NoYes::Yes, // searchMarkup
                                NoYes::Yes); //
        }
        catch(Exception::Error)
        {
            Error("@SYS305921");
        }
    }

Comments

Popular posts from this blog

On clicked event of form button in D365 X++

Finding unit price of item from trade agreement through code AX X++