C# Acumatica ERP系统(2021 R1版)账单和调整屏幕中的自定义释放按钮
我需要创建一些自定义代码的释放过程中的法案和调整进入屏幕。 我已经为APInvoice、APTran、APTaxTran和GLTran创建了DAC扩展,请参见下面的代码 1)。APINVOICEXT(DAC扩展)C# Acumatica ERP系统(2021 R1版)账单和调整屏幕中的自定义释放按钮,c#,customization,acumatica,C#,Customization,Acumatica,我需要创建一些自定义代码的释放过程中的法案和调整进入屏幕。 我已经为APInvoice、APTran、APTaxTran和GLTran创建了DAC扩展,请参见下面的代码 1)。APINVOICEXT(DAC扩展) 使用PX.Data; 命名空间PX.Objects.AP { 公共类APINVOICEXT:PXCacheExtension { #区域UsrJadeRefNbr 公共抽象类usrJadeRefNbr:IBqlField{} [PXDBString(50,IsFixed=true,Is
使用PX.Data;
命名空间PX.Objects.AP
{
公共类APINVOICEXT:PXCacheExtension
{
#区域UsrJadeRefNbr
公共抽象类usrJadeRefNbr:IBqlField{}
[PXDBString(50,IsFixed=true,IsUnicode=true)]
[PXUIField(DisplayName=“Jade Ref.Nbr.”)
公共虚拟字符串UsrJadeRefNbr{get;set;}
#端区
}
}
2)。APTranExt(DAC扩展)
使用PX.Data;
使用SGLCustomize项目;
命名空间PX.Objects.AP
{
公共类APTranExt:PXCacheExtension
{
#区域UsrJobOrderNbr
公共抽象类usrJobOrderNbr:IBqlField{}
[PXDBString(25,IsFixed=true,IsUnicode=true)]
[PXUIField(DisplayName=“工单编号”)]
[PX选择器(类型)(搜索),
类型(JobOrderNbr.customerID),
类型(工单编号状态),
类型(JobOrderNbr.usrJobOrderNoRef))]
公共字符串UsrJobOrderNbr
{
得到;
设置
}
#端区
}
}
3)。APTaxTranExt(DAC扩展)
使用PX.Data;
命名空间PX.Objects.AP
{
公共类APTaxTranExt:PXCacheExtension
{
#乌斯努塞里法克图尔地区
公共抽象类usrNoSeriFaktur:IBqlTable{}
[PXDBString(50,IsFixed=true)]
[PXUIField(DisplayName=“无序列号/附加说明”)]
公共字符串UsrNoSeriFaktur{get;set;}
#端区
}
}
4)。GLTranExt(DAC扩展)
使用PX.Data;
使用SGLCustomize项目;
命名空间PX.Objects.GL
{
公共类GLTranExt:PXCacheExtension
{
#区域UsrJobOrderNbr
公共抽象类usrJobOrderNbr:IBqlField{}
[PXDBString(25,IsFixed=true,IsUnicode=true)]
[PXUIField(DisplayName=“工单编号”)]
[PX选择器(类型)(搜索),
//类型(JobOrderNbr.jobOrderNbrCD),
类型(JobOrderNbr.customerID),
类型(JobOrderNbr.status))]
公共字符串UsrJobOrderNbr{get;set;}
#端区
#乌斯努塞里法克图尔地区
公共抽象类usrNoSeriFaktur:IBqlTable{}
[PXDBString(75,IsFixed=true)]
[PXUIField(DisplayName=“无序列号/附加说明”)]
公共字符串UsrNoSeriFaktur{get;set;}
#端区
#乌斯林地区
公共抽象类usrInvoiceNbr:IBqlTable{}
[PXDBString(60,IsFixed=true)]
[PXUIField(DisplayName=“供应商参考/客户订单”)]
公共字符串UsrInvoiceNbr{get;set;}
#端区
}
}
然后我需要扩展APInvoiceEntry BLC来定制Release按钮,下面是我创建的源代码
5。APINVOICECENTRY\U扩展(BLC扩展)
使用系统集合;
使用System.Collections.Generic;
使用PX.Objects.GL;
命名空间PX.Objects.AP
{
公共类APInvoiceEntry_扩展名:pxGrapherExtension
然后我检查日记账交易屏幕以确保结果。但是我得到了自定义字段的空白值(工单编号&无序列号),而(供应商编号)工作正常。
然后我试着调试代码,找到了问题的原因。
有人知道如何解决此问题吗?我认为这是因为您使用的是current。请尝试使用.select(Base)选择它;我尝试了您的建议,但无效。它会显示错误消息“PXResult不包含“select”的定义。”
using PX.Data;
namespace PX.Objects.AP
{
public class APInvoiceExt : PXCacheExtension<PX.Objects.AP.APInvoice>
{
#region UsrJadeRefNbr
public abstract class usrJadeRefNbr : IBqlField{}
[PXDBString(50, IsFixed = true, IsUnicode = true)]
[PXUIField(DisplayName = "Jade Ref. Nbr.")]
public virtual string UsrJadeRefNbr { get; set; }
#endregion
}
}
using PX.Data;
using SGLCustomizeProject;
namespace PX.Objects.AP
{
public class APTranExt : PXCacheExtension<PX.Objects.AP.APTran>
{
#region UsrJobOrderNbr
public abstract class usrJobOrderNbr : IBqlField{}
[PXDBString(25, IsFixed = true, IsUnicode = true)]
[PXUIField(DisplayName="Job Order Nbr")]
[PXSelector(typeof(Search<JobOrderNbr.jobOrderNbrCD,
Where<JobOrderNbr.status,
Equal<statusActive>>>),
typeof(JobOrderNbr.customerID),
typeof(JobOrderNbr.status),
typeof(JobOrderNbr.usrJobOrderNoRef))]
public string UsrJobOrderNbr
{
get;
set;
}
#endregion
}
}
using PX.Data;
namespace PX.Objects.AP
{
public class APTaxTranExt : PXCacheExtension<PX.Objects.AP.APTaxTran>
{
#region UsrNoSeriFaktur
public abstract class usrNoSeriFaktur : IBqlTable { }
[PXDBString(50, IsFixed = true)]
[PXUIField(DisplayName = "No Seri Faktur / Additional Narration")]
public string UsrNoSeriFaktur { get; set; }
#endregion
}
}
using PX.Data;
using SGLCustomizeProject;
namespace PX.Objects.GL
{
public class GLTranExt : PXCacheExtension<PX.Objects.GL.GLTran>
{
#region UsrJobOrderNbr
public abstract class usrJobOrderNbr : IBqlField { }
[PXDBString(25, IsFixed = true, IsUnicode = true)]
[PXUIField(DisplayName = "Job Order Nbr")]
[PXSelector(typeof(Search<JobOrderNbr.jobOrderNbrCD,
Where<JobOrderNbr.status,
Equal<statusActive>>>),
//typeof(JobOrderNbr.jobOrderNbrCD),
typeof(JobOrderNbr.customerID),
typeof(JobOrderNbr.status))]
public string UsrJobOrderNbr { get; set; }
#endregion
#region UsrNoSeriFaktur
public abstract class usrNoSeriFaktur : IBqlTable { }
[PXDBString(75, IsFixed = true)]
[PXUIField(DisplayName = "No Seri Faktur / Additional Narration")]
public string UsrNoSeriFaktur { get; set; }
#endregion
#region UsrInvoiceNbr
public abstract class usrInvoiceNbr : IBqlTable { }
[PXDBString(60, IsFixed = true)]
[PXUIField(DisplayName = "Vendor Ref. / Customer Order")]
public string UsrInvoiceNbr { get; set; }
#endregion
}
}
using System.Collections;
using System.Collections.Generic;
using PX.Objects.GL;
namespace PX.Objects.AP
{
public class APInvoiceEntry_Extension : PXGraphExtension<APInvoiceEntry>
{
#region Customize Button Release
public PXAction<APInvoice> release;
[PXUIField(DisplayName = "Release", MapEnableRights = PXCacheRights.Insert, MapViewRights = PXCacheRights.Insert)]
[PXProcessButton]
public IEnumerable Release(PXAdapter adapter)
{
PXGraph.InstanceCreated.AddHandler<JournalEntry>((graph) =>
{
graph.RowInserting.AddHandler<GLTran>((sender, e) =>
{
APInvoice api = PXResult<APInvoice>.Current;
string refNbr = api.RefNbr;
if (api != null && api.InvoiceNbr != null)
{
GLTranExt glEx = PXCache<GLTran>.GetExtension<GLTranExt>((GLTran)e.Row);
glEx.UsrInvoiceNbr = api.InvoiceNbr;
}
APTran aptran = PXResult<APTran>.Current;
if (aptran != null)
{
APTranExt apTranEx = PXCache<APTran>.GetExtension<APTranExt>(aptran);
if (aptran != null && apTranEx.UsrJobOrderNbr != null)
{
GLTranExt glex = PXCache<GLTran>.GetExtension<GLTranExt>((GLTran)e.Row);
glex.UsrJobOrderNbr = apTranEx.UsrJobOrderNbr;
}
}
APTaxTran aptax = PXResult<APTaxTran>.Current;
if (aptax != null)
{
APTaxTranExt aptaxEx = PXCache<APTaxTran>.GetExtension<APTaxTranExt>(aptax);
if (aptax != null && aptaxEx.UsrNoSeriFaktur != null)
{
GLTranExt gltEx = PXCache<GLTran>.GetExtension<GLTranExt>((GLTran)e.Row);
gltEx.UsrNoSeriFaktur = aptaxEx.UsrNoSeriFaktur;
}
}
});
});
return Base.release.Press(adapter);
}
#endregion
}
}