如何将AR发票和AP账单明细中的自定义字段值直接粘贴到GL事务中? [英] How to paste custom field values from the AR Invoice and AP Bill details directly into GL Transactions?
问题描述
我在ARTran,APTran和GLTran DAC中创建了一个自定义的数据库绑定字段,称为库存编号:
I have created a custom DB-bound field, called Stock Number, in the ARTran, APTran, and GLTran DACs:
public class ARTranExt : PXCacheExtension<PX.Objects.AR.ARTran>
{
public abstract class usrLineStockNbr : IBqlField { }
[PXDBString(10)]
[PXUIField(DisplayName = "Stock Number")]
public virtual string UsrLineStockNbr { get; set; }
}
public class APTranExt : PXCacheExtension<PX.Objects.AP.APTran>
{
public abstract class usrLineStockNbr : IBqlField { }
[PXDBString(10)]
[PXUIField(DisplayName = "Stock Number")]
public virtual string UsrLineStockNbr { get; set; }
}
public class GLTranExt : PXCacheExtension<PX.Objects.GL.GLTran>
{
public abstract class usrLineStockNbr : IBqlField { }
[PXDBString(10)]
[PXUIField(DisplayName = "Stock Number")]
public virtual string UsrLineStockNbr { get; set; }
}
我该如何从AR发票粘贴自定义字段值并AP帐单明细直接进入GL事务中?
How would I go about pasting my custom field values from the AR Invoice and AP Bill details directly into GL Transactions?
推荐答案
要将自定义字段值从ARTran粘贴到GLTran ,您应该为 ARReleaseProcess BLC创建扩展,并覆盖 ReleaseInvoice 方法,如以下示例所示:
To paste custom field value from ARTran to GLTran, you should create an extension for the ARReleaseProcess BLC and override the ReleaseInvoice method as shown in the following sample below:
public class ARReleaseProcess_Extension : PXGraphExtension<PX.Objects.AR.ARReleaseProcess>
{
public delegate List<ARRegister> ReleaseInvoiceDel(
JournalEntry je,
ref ARRegister doc,
PXResult<ARInvoice, CurrencyInfo, Terms, Customer, Account> res,
out PMRegister pmDoc);
[PXOverride]
public List<ARRegister> ReleaseInvoice(
JournalEntry je,
ref ARRegister doc,
PXResult<ARInvoice, CurrencyInfo, Terms, Customer, Account> res,
out PMRegister pmDoc,
ReleaseInvoiceDel del)
{
je.RowInserting.AddHandler<GLTran>((s, a) =>
{
var tran = (GLTran)a.Row;
var arTran = (ARTran)PXResult<ARTran>.Current;
if (tran != null && tran.TranLineNbr != null &&
arTran != null && arTran.TranType == tran.TranType &&
arTran.RefNbr == tran.RefNbr && arTran.LineNbr == tran.TranLineNbr)
{
var stockNbr = arTran.GetExtension<ARTranExt>().UsrLineStockNbr;
if (!string.IsNullOrEmpty(stockNbr))
tran.GetExtension<GLTranExt>().UsrLineStockNbr = stockNbr;
}
});
return del(je, ref doc, res, out pmDoc);
}
}
这是新生成的GL Batch的外观:
,在下面的AR发票发布后:
This is how a newly generated GL Batch should look like: after the release of the AR Invoice below:
要将自定义字段值从APTran粘贴到GLTran ,您应为 APReleaseProcess BLC创建扩展名并覆盖 ReleaseInvoice 方法,如以下示例所示:
To paste custom field value from APTran to GLTran, you should create an extension for the APReleaseProcess BLC and override the ReleaseInvoice method as shown in the following sample below:
public class APReleaseProcess_Extension : PXGraphExtension<PX.Objects.AP.APReleaseProcess>
{
public delegate List<APRegister> ReleaseInvoiceDel(
JournalEntry je,
ref APRegister doc,
PXResult<APInvoice, CurrencyInfo, Terms, Vendor> res,
bool isPrebooking,
out List<INRegister> inDocs);
[PXOverride]
public virtual List<APRegister> ReleaseInvoice(
JournalEntry je,
ref APRegister doc,
PXResult<APInvoice, CurrencyInfo, Terms, Vendor> res,
bool isPrebooking,
out List<INRegister> inDocs,
ReleaseInvoiceDel del)
{
je.RowInserting.AddHandler<GLTran>((s, a) =>
{
var tran = (GLTran)a.Row;
var apTran = (APTran)PXResult<APTran>.Current;
if (tran != null && tran.TranLineNbr != null &&
apTran != null && apTran.TranType == tran.TranType &&
apTran.RefNbr == tran.RefNbr && apTran.LineNbr == tran.TranLineNbr)
{
var stockNbr = apTran.GetExtension<APTranExt>().UsrLineStockNbr;
if (!string.IsNullOrEmpty(stockNbr))
tran.GetExtension<GLTranExt>().UsrLineStockNbr = stockNbr;
}
});
return del(je, ref doc, res, isPrebooking, out inDocs);
}
}
以下是新总帐批处理的示例:
在发布以下AP法案期间生成的
:
Here is an example of a new GL Batch: generated during the release of the AP Bill below:
这篇关于如何将AR发票和AP账单明细中的自定义字段值直接粘贴到GL事务中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!