Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Acumatica ERP系统中定制屏幕AP全部释放和AR全部释放_C#_Acumatica - Fatal编程技术网

C# 如何在Acumatica ERP系统中定制屏幕AP全部释放和AR全部释放

C# 如何在Acumatica ERP系统中定制屏幕AP全部释放和AR全部释放,c#,acumatica,C#,Acumatica,我在自定义屏幕AR Relase All(AR501000)时遇到问题。问题是当我试图通过使用复选框使用屏幕AR Release All Process(AR501000)传递屏幕发票和备忘录(AR301000)中发票编号(客户订单字段)的值时 首先,我创建如下GLTranExtension: using System; using PX.Data; using PX.Objects.CM; using PX.Objects.CS; using PX.Objects.PM; using PX.O

我在自定义屏幕AR Relase All(AR501000)时遇到问题。问题是当我试图通过使用复选框使用屏幕AR Release All Process(AR501000)传递屏幕发票和备忘录(AR301000)中发票编号(客户订单字段)的值时

首先,我创建如下GLTranExtension:

using System;
using PX.Data;
using PX.Objects.CM;
using PX.Objects.CS;
using PX.Objects.PM;
using PX.Objects.CR;
using PX.Objects.TX;
using System.Collections.Generic;
using PX.Objects;
using PX.Objects.GL;

namespace SGLCustomizeProject
{
  [Serializable]
  public class GLTranExtension: PXCacheExtension<PX.Objects.GL.GLTran>
  {
    #region UsrInvoiceNbr
    public abstract class usrInvoiceNbr : IBqlTable { }
     [PXDBString(60, IsFixed = true)]
    [PXUIField(DisplayName = "Vendor Ref. / Customer Order")]
    public string UsrInvoiceNbr { get; set; }
    #endregion
 }
}
使用系统;
使用PX数据;
使用PX.Objects.CM;
使用PX.Objects.CS;
使用PX.Objects.PM;
使用PX.Objects.CR;
使用PX.Objects.TX;
使用System.Collections.Generic;
使用PX.Objects;
使用PX.Objects.GL;
名称空间SGLCustomizeProject
{
[可序列化]
公共类GLTranExtension:PXCacheExtension
{
#乌斯林地区
公共抽象类usrInvoiceNbr:IBqlTable{}
[PXDBString(60,IsFixed=true)]
[PXUIField(DisplayName=“供应商参考/客户订单”)]
公共字符串UsrInvoiceNbr{get;set;}
#端区
}
}
然后我尝试创建一个自定义的进程扩展。 下面是我的自定义代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using PX.Data;
using PX.Objects.AR;
using PX.Objects.GL;
using PX.Objects.CM;
using PX.Objects.CA;
using PX.Objects.CR;
using PX.Objects.CS;
using PX.Objects.CT;
using PX.Objects.PM;

namespace SGLCustomizeProject
{
 public class ARRelaseProcessExtension: PXGraphExtension<ARReleaseProcess>
 {
   public delegate List<ARRegister> ReleaseDocProcDel(JournalEntry je, ref ARRegister doc, PXResult<ARInvoice, CurrencyInfo, Terms, Customer, Account> res, out PMRegister pmDoc);
  [PXOverride]
  public List<ARRegister>ReleaseDocProc(JournalEntry je, ref ARRegister doc, PXResult<ARInvoice, CurrencyInfo, Terms, Customer, Account> res, out PMRegister pmDoc, ReleaseDocProcDel del)
  {
      je.RowInserting.AddHandler<GLTran>((sender, e) =>
          {
              GLTran glTran = e.Row as GLTran;

              ARInvoice ari = PXResult<ARInvoice>.Current;
              if (ari != null && ari.InvoiceNbr != null)
              {
                  GLTranExtension glTex = PXCache<GLTran>.GetExtension<GLTranExtension>(glTran);
                  glTex.UsrInvoiceNbr = ari.InvoiceNbr;
              }
          });
      return del(je, ref doc, res, out pmDoc);
  }
 }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用PX数据;
使用PX.Objects.AR;
使用PX.Objects.GL;
使用PX.Objects.CM;
使用PX.Objects.CA;
使用PX.Objects.CR;
使用PX.Objects.CS;
使用PX.Objects.CT;
使用PX.Objects.PM;
名称空间SGLCustomizeProject
{
公共类ARRelaseProcessExtension:PXGrapherExtension
{
公共代表列表ReleaseDocProcDel(JournalEntry je、ref ARRegister doc、PXResult res、out PMRegister pmDoc);
[PXOverride]
公共列表ReleaseDocProc(JournalEntry je、ref ARRegister doc、PXResult res、out PMRegister pmDoc、ReleaseDocProcDel del)
{
je.RowInserting.AddHandler((发送方,e)=>
{
GLTran GLTran=e。行作为GLTran;
ARInvoice ari=PXResult.电流;
if(ari!=null&&ari.InvoiceNbr!=null)
{
GLTranExtension glTex=PXCache.GetExtension(glTran);
glTex.UsrInvoiceNbr=ari.InvoiceNbr;
}
});
返回del(je、参考文件、res、out pmDoc);
}
}
}
如果转到屏幕释放AR文档(AR501000),我只需要使用复选框按钮释放一个事务。它起作用了。。 但是,当我尝试使用复选框按钮释放多个交易时,我的第二个交易在日记账交易屏幕中填写相同的发票号,我将描述使用此条件:

如果我释放两个事务

  • 参考号=000012,发票号(现场客户订单)=inv1254
  • 参考编号=000013,发票编号(现场客户订单)=inv1255
  • 然后我发布这两个事务,在日记账事务中显示如下结果:

    using System;
    using PX.Data;
    using PX.Objects.CM;
    using PX.Objects.CS;
    using PX.Objects.PM;
    using PX.Objects.CR;
    using PX.Objects.TX;
    using System.Collections.Generic;
    using PX.Objects;
    using PX.Objects.GL;
    
    namespace SGLCustomizeProject
    {
      [Serializable]
      public class GLTranExtension: PXCacheExtension<PX.Objects.GL.GLTran>
      {
        #region UsrInvoiceNbr
        public abstract class usrInvoiceNbr : IBqlTable { }
         [PXDBString(60, IsFixed = true)]
        [PXUIField(DisplayName = "Vendor Ref. / Customer Order")]
        public string UsrInvoiceNbr { get; set; }
        #endregion
     }
    }
    
  • 参考号=000012,发票号(现场客户订单)=inv1254
  • 参考号=000013,发票号(现场客户订单)=inv1254

  • 我不知道为什么在第二笔交易中,日记账交易屏幕上显示相同的发票号码值。

    在您的情况下,发生这种情况是因为

    ARInvoice ari = PXResult<ARInvoice>.Current;
    
    arinari=PXResult.Current;
    
    PXResult.Current可能与您正在处理的实际发票不同

    在这种情况下,最好明确选择所需发票:

    ARInvoice ari = PXSelect<ARInvoice, Where<ARInvoice.refNbr, Equal<Required<GLTran.refNbr>>, And<ARInvoice.docType, Equal<Required<GLTran.tranType>>>>>.Select(sender.Graph, glTran.RefNbr, glTran.TranType);
    
    ARInvoice ari=PXSelect.Select(sender.Graph、glTran.RefNbr、glTran.TranType);
    
    您好,Dmitry,谢谢您的留言。我已经在我的定制中实现了你的代码,这是我的工作。非常感谢:)但它也发生在屏幕上的一个预览文档中。如果我在一个ReleaseProcessExtension中实现,它能工作吗?我的意思是上面相同的代码,我只需要用APInvoice替换ARInvoice….?是的,它可以正常工作。您可以在中找到代码示例