Generate invent batch Id programmatically in d365/x++

Following code can be used to create invent batch id for production order.

static InventBatchId generateActiveInventBatch(
        ProdTable     _prodTable)
    {
        InventBatchId  inventBatchId;
        InventBatch    inventBatch;
        NoYes          isBatchActive;
        InventNumGroup inventNumGroup;

        FieldId checkInventBatch = fieldNum(InventDim, InventBatchId);

        try
        {
            isBatchActive   = ecoResTrackingDimensionGroupFldSetup::findByDimensionGroupFieldId(InventTable::find(_prodTable.ItemId).trackingDimensionGroup(), checkInventBatch).IsActive;

            if (isBatchActive)
            {
                inventNumGroup = InventNumGroup::find(InventTable::find(_prodTable.ItemId).BatchNumGroupId);

                inventbatchId  = inventNumGroup.buildNumberParameters(DateTimeUtil::date(_prodTable.CreatedDateTime), _prodTable.ProdId, _prodTable.InventTransId, extendedTypeNum(InventBatchId));

                inventBatch    = InventBatch::findOrCreate(inventbatchId, _prodTable.ItemId);
            }
        }
        catch (Exception::Error)
        {
            inventBatchId = "";
        }

        return inventBatchId;
    }
Design a site like this with WordPress.com
Get started