Wednesday, April 22, 2020

Unit conversions using X++ , Standard and Intra-class conversions in AX

Standard conversion

RefRecId unitOfMeasureFromRecId = UnitOfMeasure::findBySymbol(inventTable.salesUnitId()).RecId;
RefRecId unitOfMeasureToRecId = UnitOfMeasure::findBySymbol(salesLine.SalesUnit).RecId;

real defaultUnitConvertedQty =  UnitOfMeasureConverter::convert(abs(inventTrans.Qty),
                                                                           unitOfMeasureFromRecId,//from
                                                                           unitOfMeasureToRecId,//To
                                                                           NoYes::No);

Intra-class conversion

real unitConvertedQty = EcoResProductUnitConverter::convertGivenUnitSymbolsForReleasedProduct(inventTable.ItemId,
                                                                                                         salesLine.InventDimId,
                                                                                                         abs(inventTrans.Qty),
                                                                                                         inventTable.salesUnitId(),//from
                                                                                                         salesLine.SalesUnit,//To
                                                                                                         NoYes::No);

Show Information in Action center in D365 finance and operations instead of using infolog

class RunnableClass1
{
    /// <summary>
    /// Runs the class with the specified arguments.
    /// </summary>
    /// <param name = "_args">The specified arguments.</param>
    public static void main(Args _args)
    {
        SystemNotificationDataContract notification = new SystemNotificationDataContract();
        notification.Users().value(1, curUserId());
        notification.Title("@ApplicationPlatform:ExportToExcel_ActionCenterCompletedTitle");
        notification.RuleId('ExcelStaticExport');
        str formCaption = "Your text";
        notification.Severity(SystemNotificationSeverity::Warning);
                         notification.Message(strFmt("@ApplicationPlatform:ExportToExcel_ActionCenterCompletedMessage", formCaption));

        // Set the expiration an hour less than the expiration of the blob to avoid a condition where the blob expires before the message
        notification.ExpirationDateTime(DateTimeUtil::addHours(DateTimeUtil::utcNow(), 48));
        SystemNotificationsManager::AddNotification(notification);
    }

}

Table browser URL in D365FO

Critical Thinking icon icon by Icons8