0

希望这里有人熟悉在 Epicor 9 中创建自定义。我也将其发布到 Epicor 论坛,但不幸的是,该论坛似乎已经死了。我能得到的任何帮助将不胜感激。

我在 Order Entry 表单上创建了一个自定义项,以显示和存储有关我们订单的一些额外信息。一个这样的领域是在职的建筑师。我们使用 AR 的 GroupCode 将架构师存储在客户表中,以将他们与普通客户区分开来。我已成功添加了一个按钮,该按钮启动客户搜索对话框并过滤结果以仅显示架构师(使用 GroupCode AR 的架构师)。这就是问题所在。我有两个问题:

1:在客户搜索中,有一个客户类型字段,默认值为客户。其他选择是<all>、Suspect 或Prospect。如何使搜索表单默认为 <all>?

2:我如何获取我通过搜索对话框选择的架构师(客户)并将其 CustID 填充到我的 Order Entry 自定义的 ShortChar01 字段中?这是我的代码:

private void SearchOnCustomerAdapterShowDialog()
{
    // Wizard Generated Search Method
    // You will need to call this method from another method in custom code
    // For example, [Form]_Load or [Button]_Click

    bool recSelected;
    //string whereClause = string.Empty;
    string whereClause = "GroupCode = 'AR'";
    System.Data.DataSet dsCustomerAdapter = Epicor.Mfg.UI.FormFunctions.SearchFunctions.listLookup(this.oTrans, "CustomerAdapter", out recSelected, true, whereClause);
    if (recSelected)
    {
        System.Data.DataRow adapterRow = dsCustomerAdapter.Tables[0].Rows[0];

        // Map Search Fields to Application Fields
        EpiDataView edvOrderHed = ((EpiDataView)(this.oTrans.EpiDataViews["OrderHed"]));
        System.Data.DataRow edvOrderHedRow = edvOrderHed.CurrentDataRow;
        if ((edvOrderHedRow != null))
        {
            edvOrderHedRow.BeginEdit();
            edvOrderHedRow["ShortChar01"] = adapterRow["CustID"];
            edvOrderHedRow.EndEdit();
        }
    }
}

当我选择一条记录并单击确定时,我得到一个未处理的异常。

4

1 回答 1

0

我认为您遇到的问题是您没有首先将 CustNum 添加到销售订单中。在我看来,我会先这样做,但在 oTrans 中可能有 ChangeCustomer BO 方法,您可以调用它来确保一切默认正确。

EpiDataView edvOrderHed = ((EpiDataView)(this.oTrans.EpiDataViews["OrderHed"]));
if (edvOrderHed.HasRow)
    {

        edvOrderHed[edvOrderHed.Row].BeginEdit();
        edvOrderHed[edvOrderHed.Row]["CustNum"] = adapterRow["CustNum"];
        edvOrderHed[edvOrderHed.Row]["ShortChar01"] = adapterRow["CustID"];
        edvOrderHed[edvOrderHed.Row].EndEdit();
    }

希望这会有所帮助,即使迟到了。

于 2014-05-28T16:33:11.187 回答