Переопределить BQL, используемый для PXProjection на SOShipmentPlan - PullRequest
0 голосов
/ 09 марта 2020

У меня есть необходимость переопределить оператор Select, используемый для SOShipmentPlan PXProjection / DA C, а именно: удалить условие

And <INPlanType.isFixed, Equal<boolFalse>.

Я могу переопределить все CreateShipment() logi c и вводить любые другие необходимые подпрограммы в класс SOShipmentEntry_Extension, так что я наконец смогу использовать свою собственную версию класса SOShipmentPlan, но все это кажется излишне сложным, когда все Я хочу сделать, это переопределить выбор для атрибута PXProjection. Переопределение CreateShipment() и поддержка подпрограмм также кажутся быстрым способом попасть в беду, наступает время для обновлений.

Итак, есть ли простой способ переопределить BQL PXProjection, или я застрял переопределением все виды кода?

ОБНОВЛЕНИЕ 1

На основе ссылки, представленной ниже ( stackoverflow.com / a / 41540659/7376238 ), I чувствую, что я рядом. Вот блок кода, с которым я заканчиваю:

namespace PX.Objects.SO
{
  public class SOShipmentEntry_Extension : PXGraphExtension<SOShipmentEntry>
  {
    #region Event Handlers

    #endregion

    [Serializable]
    [PXProjection(typeof(Select2<SOOrder,
      InnerJoin<SOOrderType, On<SOOrder.FK.OrderType>,
      InnerJoin<INItemPlan, On<INItemPlan.refNoteID, Equal<SOOrder.noteID>>,
      InnerJoin<INPlanType, On<INItemPlan.FK.PlanType>>>>,
    Where<INItemPlan.hold, Equal<boolFalse>,
      And<INItemPlan.planQty, Greater<decimal0>,
      And<INPlanType.isDemand, Equal<boolTrue>,
      And<INPlanType.isForDate, Equal<boolTrue>,
      And<Where<INItemPlan.fixedSource, IsNull, 
        Or<INItemPlan.fixedSource, NotEqual<INReplenishmentSource.transfer>>>>>>>>>))]
    [PXSubstitute()]
    public partial class SOShipmentPlanCst : SOShipmentPlan
    {
      int x = 0;
    }
}

Но, похоже, он не работает. Не уверен, где я должен положить код. Я попытался поместить определение класса внутри и вне класса public class SOShipmentEntry_Extension : PXGraphExtension<SOShipmentEntry> (в настоящее время внутри класса расширения, как показано). В любом случае не повезло.

1 Ответ

1 голос
/ 09 марта 2020

ЭТОТ ОТВЕТ НЕ РАБОТАЛ

Справедливое предупреждение ... Я раньше не делал этого с PXProjection, поэтому вам придется посмотреть, работает ли он. Природа расширений позволяет переопределять представления , просто переопределяя их. Я не сделал это сам с проекцией, но я подозреваю, что это будет похоже. Попробуйте и посмотрите, получите ли вы желаемые результаты. Все, что я могу сказать о тестировании, это то, что он был скомпилирован, когда я добавил в свой проект и удалил условие INItemPLanType.isFixed.

public class SOShipmentEntry_Extension : PXGraphExtension<SOShipmentEntry>
{
    [PXProjection(typeof(Select2<SOOrder,
        InnerJoin<SOOrderType, On<SOOrder.FK.OrderType>,
        InnerJoin<INItemPlan, On<INItemPlan.refNoteID, Equal<SOOrder.noteID>>,
        InnerJoin<INPlanType, On<INItemPlan.FK.PlanType>>>>,
        Where<INItemPlan.hold, Equal<boolFalse>,
        And<INItemPlan.planQty, Greater<decimal0>,
        And<INPlanType.isDemand, Equal<boolTrue>,
        And<INPlanType.isForDate, Equal<boolTrue>,
        And<Where<INItemPlan.fixedSource, IsNull, Or<INItemPlan.fixedSource, NotEqual<INReplenishmentSource.transfer>>>>>>>>>))]
    public partial class SOShipmentPlan : IBqlTable { }
}
...