Acumatica 存货项目基价;“强制转换无效”;

Acumatica 存货项目基价;“强制转换无效”;,acumatica,Acumatica,我试图创建一个处理页面,从几个表中提取数据,这些表将用于更新EDI服务项目列表。我不断收到一个错误,指出为BasePrice指定的强制转换无效 这只是BLC中的一个内部DAC。数据库中没有物理表。如果我排除我的基本价格字段,一切正常。如果我包含它,insert就会得到错误。请参阅下面的代码 public class EDInventoryProcess : PXGraph<EDInventoryProcess> { public PXCancel<EDInventor

我试图创建一个处理页面,从几个表中提取数据,这些表将用于更新EDI服务项目列表。我不断收到一个错误,指出为BasePrice指定的强制转换无效

这只是BLC中的一个内部DAC。数据库中没有物理表。如果我排除我的基本价格字段,一切正常。如果我包含它,insert就会得到错误。请参阅下面的代码

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")]