Справочная информация:
В APPayBills (Payables - Prepare Payments) функциональность экрана предназначена для накопления всех платежей для денежного счета.Существует выбор для Филиала, но он фактически не ограничивает платежи для филиала, а скорее кассовые счета, определенные для филиала.
Наш вариант использования состоит в том, что у нас есть несколько «филиалов», которые работают несколько независимодля повседневной деятельности (инвентарь, выдача материала, квитанции о покупке и т. д.) Однако вся кредиторская задолженность обрабатывается через один банковский счет, а следовательно, и единый денежный счет.Платежи обрабатываются филиалом в соответствии с определенными бизнес-правилами.Очевидный способ справиться с этим в стандартном Acumatica - это использовать разные банковские счета, чтобы мы могли управлять отдельными денежными счетами внутри Acumatica.Наша база пользователей предпочитает единый банковский счет, поэтому перед нами стоит задача создать решение.У нас также есть некоторые обходные пути, но это необходимо упростить, чтобы облегчить нагрузку на персонал и уменьшить количество ошибок.Дело было открыто с помощью Acumatica, и ответ был таков: с нашей стороны это требует настройки.
Проблема:
APPayBill использует 2 представления (APDocuemntList и APExceptionsList) длязаполнить сетки на 2 вкладки.Стандартное поведение заключается в том, что сетка остается пустой до тех пор, пока пользователь не введет Филиал, Способ оплаты и Счет наличных денег.В этот момент результаты отображаются в таблицах в соответствии со всеми платежами с использованием указанного денежного счета.
Насколько я понимаю, вы можете переопределить представление в расширении графика, чтобы переопределить его.Однако, когда я это делаю, сетки заполняются еще до того, как будут сделаны какие-либо выборы.Данные сетки фильтруются так, как я хочу, но изменение в поведении пользовательского интерфейса для того, когда заполнять сетки, нежелательно.
До кода:
[PXFilterable]
public PXFilteredProcessingJoin<APAdjust, PayBillsFilter,
InnerJoin<APInvoice, On<APInvoice.docType, Equal<APAdjust.adjdDocType>, And<APInvoice.refNbr, Equal<APAdjust.adjdRefNbr>>>,
LeftJoin<APTran, On<APInvoice.paymentsByLinesAllowed, Equal<True>,
And<APTran.tranType, Equal<APAdjust.adjdDocType>,
And<APTran.refNbr, Equal<APAdjust.adjdRefNbr>,
And<APTran.lineNbr, Equal<APAdjust.adjdLineNbr>>>>>>>
> APDocumentList;
public PXSelectJoin<APAdjust,
InnerJoin<APInvoice, On<APInvoice.docType, Equal<APAdjust.adjdDocType>, And<APInvoice.refNbr, Equal<APAdjust.adjdRefNbr>>>,
LeftJoin<APTran, On<APInvoice.paymentsByLinesAllowed, Equal<True>,
And<APTran.tranType, Equal<APAdjust.adjdDocType>,
And<APTran.refNbr, Equal<APAdjust.adjdRefNbr>,
And<APTran.lineNbr, Equal<APAdjust.adjdLineNbr>>>>>>>
> APExceptionsList;
После кода:
[PXFilterable]
public PXFilteredProcessingJoin<APAdjust, PayBillsFilter,
InnerJoin<APInvoice, On<APInvoice.docType, Equal<APAdjust.adjdDocType>, And<APInvoice.refNbr, Equal<APAdjust.adjdRefNbr>>>,
LeftJoin<APTran, On<APInvoice.paymentsByLinesAllowed, Equal<True>,
And<APTran.tranType, Equal<APAdjust.adjdDocType>,
And<APTran.refNbr, Equal<APAdjust.adjdRefNbr>,
And<APTran.lineNbr, Equal<APAdjust.adjdLineNbr>>>>>>>
// BEG - Add branch filter
,Where<APAdjust.adjdBranchID, Equal<Current<PayBillsFilter.branchID>>>
// END - Add branch filter
> APDocumentList;
public PXSelectJoin<APAdjust,
InnerJoin<APInvoice, On<APInvoice.docType, Equal<APAdjust.adjdDocType>, And<APInvoice.refNbr, Equal<APAdjust.adjdRefNbr>>>,
LeftJoin<APTran, On<APInvoice.paymentsByLinesAllowed, Equal<True>,
And<APTran.tranType, Equal<APAdjust.adjdDocType>,
And<APTran.refNbr, Equal<APAdjust.adjdRefNbr>,
And<APTran.lineNbr, Equal<APAdjust.adjdLineNbr>>>>>>>
// BEG - Add branch filter
,Where<APAdjust.adjdBranchID, Equal<Current<PayBillsFilter.branchID>>>
// END - Add branch filter
> APExceptionsList;
Чтобы быть уверенным, что добавление оператора where не является причиной, я буквально скопировал и вставил точные представления из базового кода в расширение графа, чтобыне было бы абсолютно никаких изменений.Удивительно (для меня) расширение графа с представлениями замещения показало то же самое предварительное заполнение, которое было замечено с добавленными предложениями Where.
Очевидно, что есть что-то особенное для переопределения представлений таким образом.Я пытался с и без [PXOverride] украшать представления без различий в поведении.
Что заставляет экран обработки предварительно заполнять сетку, и как правильно применить мои переопределения к 2 видам?