How to Customize screen AP Release All and AR Relase All in Acumatica ERP System

只谈情不闲聊 提交于 2019-12-11 00:45:36

问题


I have a problem in customize screen AR Relase All (AR501000). The problem was when I try to pass value of Invoice Number (Customer Order's Field) in screen Invoices And Memos (AR301000) by using screen AR Release All Process (AR501000) using checkbox.

First, I create GLTranExtension like this below :

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
 }
}

And then I try to create customize ARReleaseProcessExtension. This below my customize code :

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);
  }
 }
}

If go to screen Release AR Documents (AR501000) and I only need to release one transaction using checkbox button. It works.. But when I try to release more than one transactions using checkbox button also, my second transactions fill the same invoice number in journal transaction screen, I'll describe using this condition :

If I release two transactions

  1. reference number = 000012 and invoice number (in field Customer Order) = inv1254
  2. reference number = 000013 and invoice number (in field Customer Order) = inv1255

And then I Release this two transactions, and in journal transactions shows the result like this below :

  1. reference number = 000012 and invoice number (in field Customer Order) = inv1254
  2. reference number = 000013 and invoice number (in field Customer Order) = inv1254

I don't know why in second transaction shows the same invoice number value in journal transaction screen.


回答1:


In you case it's happening because of

ARInvoice ari = PXResult<ARInvoice>.Current;

PXResult.Current can differ from the actual invoice you are processing.

It will be better to explicitly select required invoice in this case:

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);


来源:https://stackoverflow.com/questions/37429196/how-to-customize-screen-ap-release-all-and-ar-relase-all-in-acumatica-erp-system

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!