Unit Conversion:
UnitOfMeasureConverter_Product is product specific unit conversion. It lookups defined conversions in the following order:
- Use direct product-specific conversion, if one exists.
- Use a chain of two product-specific conversions through one base unit of measure, if one exists.
- Use a chain of product-specific conversions through two base units of measure, if one exists.
- Use a chain of one product-specific and one standard conversions through one base unit of measure, if one exists.
- Use a chain of product-specific or standard conversions through two base units of measure, if one exists.
- Execute the calculation algorithm for the standard conversions.
Meanwhile, UnitOfMeasureConverter::convert is just a wrap method that will call UnitOfMeasureConverter_Product if ProductId is provided. If no ProductId specify, it just do standard conversion.
static
void
Job_UnitConversion(Args _args)
{
#define.itemId(
'M0018'
)
//Method one
UnitOfMeasureConverter_Product unitConverter = UnitOfMeasureConverter_Product::construct();
unitConverter.parmProduct(InventTable::find(#itemId).Product);
unitConverter.parmFromUnitOfMeasure(UnitOfMeasure::unitOfMeasureIdBySymbol(
'kg'
));
unitConverter.parmToUnitOfMeasure(UnitOfMeasure::unitOfMeasureIdBySymbol(
'ea'
));
unitConverter.parmRoundAbsoluteValue(NoYes::No);
unitConverter.parmApplyRounding(NoYes::No);
print unitConverter.convertValue(1010);
//Method two
print UnitOfMeasureConverter::convert(1010,
UnitOfMeasure::unitOfMeasureIdBySymbol(
'kg'
),
UnitOfMeasure::unitOfMeasureIdBySymbol(
'ea'
),
NoYes::No,
InventTable::itemProduct(#itemId),
NoYes::No);
pause;
}
===============================================================================================
Unit Conversion Check AX2009 Vs AX2012
AX 2009
if(!UnitConvert::canConvert(this.inventTableModuleInvent().UnitId, this.SAB_ProdPickingUOM, this.ItemId))
AX 2012
unitConvFound = UnitOfMeasureConverter::canBeConverted(UnitOfMeasure::findBySymbol(this.inventTableModuleInvent().UnitId).RecId, UnitOfMeasure::findBySymbol(this.SAB_SalesPickingUOM).RecId,
this.Product);