Acumatica 存货项目基价;“强制转换无效”;
我试图创建一个处理页面,从几个表中提取数据,这些表将用于更新EDI服务项目列表。我不断收到一个错误,指出为BasePrice指定的强制转换无效 这只是BLC中的一个内部DAC。数据库中没有物理表。如果我排除我的基本价格字段,一切正常。如果我包含它,insert就会得到错误。请参阅下面的代码Acumatica 存货项目基价;“强制转换无效”;,acumatica,Acumatica,我试图创建一个处理页面,从几个表中提取数据,这些表将用于更新EDI服务项目列表。我不断收到一个错误,指出为BasePrice指定的强制转换无效 这只是BLC中的一个内部DAC。数据库中没有物理表。如果我排除我的基本价格字段,一切正常。如果我包含它,insert就会得到错误。请参阅下面的代码 public class EDInventoryProcess : PXGraph<EDInventoryProcess> { public PXCancel<EDInventor
public class EDInventoryProcess : PXGraph<EDInventoryProcess>
{
public PXCancel<EDInventoryFilter> Cancel;
public PXFilter<EDInventoryFilter> Filter;
[PXFilterable]
public PXFilteredProcessingOrderBy<EDInventory, EDInventoryFilter,
OrderBy<Asc<EDInventory.partnerID, Asc<EDInventory.inventoryCD>>>> EDItem;
protected virtual IEnumerable eDItem()
{
EDItem.Cache.Clear();
var cmd = new PXSelectJoin<InventoryItem,
InnerJoin<INItemXRef, On<InventoryItem.inventoryID, Equal<INItemXRef.inventoryID>>,
InnerJoin<EDPartnerInfo, On<INItemXRef.bAccountID, Equal<EDPartnerInfo.customerID>>>>,
Where<INItemXRef.alternateType, Equal<INAlternateType.cPN>,
And<InventoryItem.itemStatus, Equal<InventoryItemStatus.active>>>>(this);
cmd.View.Clear();
var ret = cmd.Select();
if (ret != null)
{
EDInventoryFilter filt = (EDInventoryFilter)Filter.Cache.Current;
EDInventory edInv = new EDInventory();
foreach (PXResult<InventoryItem, INItemXRef, EDPartnerInfo> record in ret)
{
edInv = new EDInventory();
InventoryItem item = (InventoryItem)record;
INItemXRef xref = (INItemXRef)record;
EDPartnerInfo partner = (EDPartnerInfo)record;
edInv.PartnerID = partner.PartnerID;
edInv.InventoryID = item.InventoryID;
edInv.InventoryCD = item.InventoryCD;
edInv.ItemDescr = item.Descr;
edInv.ItemStatus = item.ItemStatus;
edInv.BaseUnit = item.BaseUnit;
edInv.SalesUnit = item.SalesUnit;
edInv.PurchaseUnit = item.PurchaseUnit;
edInv.BasePrice = Convert.ToDecimal(item.BasePrice);
//This is the lint that generates the error.
edInv = EDItem.Insert(edInv);
EDItem.Cache.SetStatus(edInv, PXEntryStatus.Held);
yield return edInv;
}
}
EDItem.Cache.IsDirty = false;
}
我刚刚发现了答案。我将默认值列为
[PXDefault(0.0)]
但我找到了另一个十进制默认值的参考
[PXDefault(TypeCode.Decimal, "0.0")]
这似乎有效。我不再得到错误,我的处理屏幕显示如预期的那样。我假设默认值从对象中提取其类型。十进制字段设置为Yes[PXDefault(TypeCode.Decimal,“0.0”)]属性以避免强制转换问题
[PXDefault(TypeCode.Decimal, "0.0")]