契約DACとその新しいエクステンションを拡張機能のAPInvoiceEntry Graphに追加しようとしています。私は正確に何がうまくいきませんか、おそらくContracts DACと評価ロジックの初期化を知っていませんか?いくつかの契約ロジックをAPTranとしてキャストしようとしており、「キャストできません」というエラーが送信されています。DACに新しいエクステンションをグラフに追加する際の問題
最後の目標は、選択したプロジェクトを確認し、Bills and Paymentsの各行で分岐し、ContractExt DAC拡張で作成されたプロジェクトIDと新しいBranchIDフィールドに基づいて評価させることです。
私は取得しています現在のエラーのトレースは、次のとおりです。これは私が適切に契約DACを持っていない可能性がありますと信じて私をリード
Unable to cast object of type 'PX.Objects.AP.APTran' to type 'PX.Objects.CT.Contract'.
at PX.Objects.AP.APInvoiceEntry_Extension.APTran_RowUpdating(PXCache cache, PXRowUpdatingEventArgs e, PXRowUpdating InvokeBaseHandler)
at PX.Data.PXCache.OnRowUpdating(Object item, Object newitem, Boolean externalCall)
at PX.Data.PXCache`1.Update(IDictionary keys, IDictionary values)
at PX.Data.PXGraph.ExecuteUpdate(String viewName, IDictionary keys, IDictionary values, Object[] parameters)
。次のように
コードは次のとおりです。
グラフ:
namespace PX.Objects.AP
{
public class APInvoiceEntry_Extension : PXGraphExtension<APInvoiceEntry>
{
public PXSelect<Contract, Where<Contract.contractID, Equal<Current<APTran.projectID>>>> Contract;
protected void APTran_RowUpdating(PXCache cache, PXRowUpdatingEventArgs e, PXRowUpdating InvokeBaseHandler)
{
Contract conRow = (Contract)e.NewRow as Contract;
ContractExt conRowE = PXCache<Contract>.GetExtension<ContractExt>(conRow);
APTran row = e.NewRow as APTran;
int? projectid = conRow.ContractID;
int? baseprojectid = row.ProjectID;
int? basebranchid = row.BranchID;
int? branchid = conRowE.UsrBranch;
if (
//Check to make sure that selected Branch and Project match
baseprojectid == projectid &&
basebranchid != branchid
)
{
throw new PXSetPropertyException("Branch and project must match", PXErrorLevel.RowError);
}
}
}
}
DAC:
namespace PX.Objects.CT
{
public class ContractExt : PXCacheExtension<PX.Objects.CT.Contract>
{
[Branch]
public virtual int? UsrBranch { get; set; }
public abstract class usrBranch : IBqlField { }
}}
このすべてが正常にコンパイルされます。 APTran Unable to Cast Error
パーフェクト!ありがとうブレンダン! – Jake