首页 文章

在Opportunity中添加Add Item(s)功能

提问于
浏览
0

我正在尝试在商机中添加添加商品功能,例如在销售订单中 . 我已经浏览了SOOrderEntry中的代码,并尝试复制相同的功能 .

“添加项目”菜单为智能面板提供了筛选选项,但不会填充数据 . 我已将设置与销售订单添加项智能面板设置进行比较,我没有错过任何内容 .

我已将销售订单中的表结构和事件复制到Opportunity所需的更改中 .

#region SiteStatus Lookup
public PXFilter<OpportunitySiteStatusFilter> oppsitestatusfilter;
[PXFilterable]
[PXCopyPasteHiddenView]
public OpportunityStatusLookup<OpportunitySiteStatusSelected, OpportunitySiteStatusFilter> opportunitysitestatus;

public PXAction<CROpportunity> addOppBySite;
[PXUIField(DisplayName = "Add Stock Item", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)]
[PXLookupButton]
public virtual IEnumerable AddOppBySite(PXAdapter adapter)
{
    oppsitestatusfilter.Cache.Clear();
    if (opportunitysitestatus.AskExt() == WebDialogResult.OK)
    {
        return AddOppSelBySite(adapter);
    }
    oppsitestatusfilter.Cache.Clear();
    opportunitysitestatus.Cache.Clear();
    return adapter.Get();
}

public PXAction<CROpportunity> addOppSelBySite;
[PXUIField(DisplayName = "Add", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select, Visible = false)]
[PXLookupButton]
public virtual IEnumerable AddOppSelBySite(PXAdapter adapter)
{
    foreach (OpportunitySiteStatusSelected line in opportunitysitestatus.Cache.Cached)
    {
        if (line.Selected == true && line.QtySelected > 0)
        {
            CROpportunityProducts newline = PXCache<CROpportunityProducts>.CreateCopy(Base.Products.Insert(new CROpportunityProducts()));
            newline.SiteID = line.SiteID;
            newline.InventoryID = line.InventoryID;
            newline.SubItemID = line.SubItemID;
            newline.UOM = line.SalesUnit;
            //newline.AlternateID = line.AlternateID;
            //newline = PXCache<SOLine>.CreateCopy(Transactions.Update(newline));
            //if (newline.RequireLocation != true || PXAccess.FeatureInstalled<FeaturesSet.warehouseLocation>())
            //    newline.LocationID = null;
            newline = PXCache<CROpportunityProducts>.CreateCopy(Base.Products.Update(newline));
            //newline.Qty = line.QtySelected;
            cnt = 0;
            Base.Products.Update(newline);
        }
    }
    opportunitysitestatus.Cache.Clear();
    return adapter.Get();
}
protected virtual void OpportunitySiteStatusFilter_RowInserted(PXCache cache, PXRowInsertedEventArgs e)
{
    OpportunitySiteStatusFilter row = (OpportunitySiteStatusFilter)e.Row;
    if (row != null && Base.Products.Current != null)
        row.SiteID = Base.Products.Current.SiteID;
}
int cnt;
public IEnumerable<PXDataRecord> ProviderSelect(BqlCommand command, int topCount, params PXDataValue[] pars)
{
    cnt++;
    return Base.ProviderSelect(command, topCount, pars);
}
#endregion

enter image description here

此致,R . Muralidharan

1 回答

  • 1

    您可能希望将自定义SmartPanel aspx与SalesOrderEntry屏幕的现成添加库存项SmartPanel进行比较 . 正如@Hybridzz所提到的,很可能你还没有设置AutoSize属性 . 网格分页已启用时,您需要将AutoSize设置为True .

相关问题