#c# #customization #acumatica #erp
#c# #настройка #acumatica #erp
Вопрос:
Я попытался настроить выпуск кнопки на экране документов Release AP.
И затем я использовал следующий код:
namespace PX.Objects.AP
{
public class APReleaseProcess_Extension : PXGraphExtension<APReleaseProcess>
{
public delegate List<APRegister> ReleaseDocProcDel(JournalEntry je, ref APRegister doc, PXResult<APInvoice,
CurrencyInfo, Terms, Vendor> res, bool isPrebooking,
out List<INRegister> inDocs);
[PXOverride]
public List<APRegister> ReleaseDocProc(JournalEntry je, ref APRegister doc,
PXResult<APInvoice, CurrencyInfo, Terms, Vendor> res,
bool isPrebooking,
out List<INRegister> inDocs, ReleaseDocProcDel del)
{
je.RowInserting.AddHandler<GLTran>((sender, e) =>
{
GLTran glTran = e.Row as GLTran;
APTran apTran = PXResult<APTran>.Current;
if (glTran != null amp;amp; apTran != null)
{
APTranExt apTranEx = PXCache<APTran>.GetExtension<APTranExt>(apTran);
if (apTran != null amp;amp; apTranEx.UsrJobOrderNbr != null)
{
GLTranExt glTranEx = PXCache<GLTran>.GetExtension<GLTranExt>(glTran);
glTranEx.UsrJobOrderNbr = apTranEx.UsrJobOrderNbr;
}
}
//APInvoice apInv = PXResult<APInvoice>.Current;
APInvoice apInv = PXSelect<APInvoice,
Where<APInvoice.refNbr, Equal<Required<GLTran.refNbr>>,
And<APInvoice.docType,
Equal<Required<GLTran.tranType>>>>>.Select(sender.Graph, glTran.RefNbr, glTran.TranType);
if (glTran != null amp;amp; apInv != null)
{
GLTranExt glTranEx = PXCache<GLTran>.GetExtension<GLTranExt>(glTran);
glTranEx.UsrInvoiceNbr = apInv.InvoiceNbr;
}
APTaxTran apTaxTran = PXResult<APTaxTran>.Current;
if (glTran != null amp;amp; apTaxTran != null)
{
APTaxTranExt apTaxTranEx = PXCache<APTaxTran>.GetExtension<APTaxTranExt>(apTaxTran);
if (apTaxTran != null amp;amp; apTaxTranEx != null)
{
GLTranExt glTranEx = PXCache<GLTran>.GetExtension<GLTranExt>(glTran);
glTranEx.UsrNoSeriFaktur = apTaxTranEx.UsrNoSeriFaktur;
}
}
}
);
return del(je, ref doc, res, isPrebooking, out inDocs);
}
}
}
Я пытался отладить этот код, но точка останова не была достигнута, правильный ли это метод настройки нажатия кнопки?
Кто-нибудь знает об этой проблеме?
Ответ №1:
В редакторе проекта настройки Acumatica в CODE
разделе добавьте расширение graph для APReleaseProcess. Затем откройте сгенерированный файл кода и используйте кнопку действия OVERRIDE METHOD
. Выберите целевой метод в списке и нажмите на SAVE
кнопку. При этом будет вставлен соответствующий обработчик событий для используемой вами версии Acumatica:
namespace PX.Objects.AP
{
public class APReleaseProcess_Extension : PXGraphExtension<APReleaseProcess>
{
#region Event Handlers
public delegate List<APRegister> ReleaseDocProcDelegate(JournalEntry je, APRegister doc, Boolean isPrebooking, ref List<INRegister> inDocs);
[PXOverride]
public List<APRegister> ReleaseDocProc(JournalEntry je, APRegister doc, Boolean isPrebooking, ref List<INRegister> inDocs, ReleaseDocProcDelegate baseMethod)
{
return baseMethod(je,doc,isPrebooking,inDocs);
}
#endregion
}
}
Комментарии:
1. Привет, Хьюз, спасибо за ваш ответ. Что касается вашего кода, похоже, он не отличается от моего кода. Но я не выполнил шаг переопределения метода для выхода из BLC. Является ли этот шаг обязательным для переопределения BLC? И если я выполню этот шаг, будет ли достигнута точка останова при обработке отладки?
2. Параметры метода выглядят по-другому, но вы использовали PXOverride в своем ответе, который является правильным. Что касается точек останова, можете ли вы продемонстрировать правильную загрузку символов? Или лучше, можете ли вы создать исключение вместо устранения неполадок с помощью точек останова? И на скриншоте строки не выбраны для обработки, вы обработали строку, выбрав ее сначала, прежде чем нажать «Отпустить»?