关于计量单位转换使用的心得
金蝶云社区-云小爱
云小爱
1人赞赏了该文章 1,780次浏览 未经作者许可,禁止转载编辑于2015年01月30日 17:57:28
1、计量单位转换接口UnitConvertService,目前获取单位转换的顺序: a、先计算同计量单位组内,源计量单位与目标计量单位之间的转换关系。 b、如果没有获取到,再计算物料上设置的源计量单位与目标计量单位之间的转换关系。 c、如果没有获取到,则返回-1. d、换算关系目前存放在:T_BD_UNITCONVERTRATE中,其中相同计量单位组之间的转换,materialid为空,masterid也为空,不同计量单位组之间的转换,materialid一定有值,要按照materialid与masterid查找。 2、计量单位计算方式 如果计量单位不同组,或者同组但是无换算关系,则先找到源单的基本计量单位,看看此基本单位与目标计量单位是否有换算,如果有则通过中转产生;如果没有,则找到目标单的基本计量单位,看看此基本单位与源单位是否存在换算,再通过中转产生。 3、目前调用的计量单位转换接口(UnitConvertService),都是按目标单位的计量单位精度以及舍位类型自动计算数量的,如果不想使用目标单位的舍位类型,可以自己构造 UnitConvert batch2BaseRate =AppServiceContext.BDService.GetUnitConvertRate(ctx, new GetUnitConvertRateArgs() { MaterialId = Convert.ToInt64(materialInfo["Id"]), MasterId = Convert.ToInt64(materialInfo["msterID"]), SourceUnitId = Convert.ToInt64(produceQtyUnitInfo["Id"]), DestUnitId = baseUnitId, }); decimal baseQty1 = batch2BaseRate.ConvertQty(batchQty1, RoundMode.Truncation.ToString());//在这里自己输入舍位类型,譬如是按精度向下舍位还是向上舍位