В полях расширения Распределение отгрузки не отображаются значения - PullRequest
0 голосов
/ 22 апреля 2020

Добрый день

Я расширил сетку на кнопке распределения на странице отгрузки. У меня проблема в том, что я не могу получить значение для отображения во вновь создаваемых полях.

Вот расширение DA C:

using PX.Objects.SO;
using PX.Data;
using System.Collections.Generic;
using System;

namespace PX.Objects.SO
{
    public class SOShipLineSplitExt : PXCacheExtension<PX.Objects.SO.SOShipLineSplit>
    {
    #region UsrSKR
    [PXDBDecimal]
    [PXUIField(DisplayName = "SKR")]

    public virtual Decimal? UsrSKR { get; set; }
    public abstract class usrSKR : PX.Data.BQL.BqlDecimal.Field<usrSKR> { }
    #endregion

    #region UsrUSKR
    [PXDBDecimal]
    [PXUIField(DisplayName = "USKR")]

    public virtual Decimal? UsrUSKR { get; set; }
    public abstract class usrUSKR : PX.Data.BQL.BqlDecimal.Field<usrUSKR> { }
    #endregion

    #region UsrVUS
    [PXDBDecimal]
    [PXUIField(DisplayName = "VUS")]

    public virtual Decimal? UsrVUS { get; set; }
    public abstract class usrVUS : PX.Data.BQL.BqlDecimal.Field<usrVUS> { }
    #endregion
    }
}


namespace Unassigned
{
    public class SOShipLineSplitPXExt : PXCacheExtension<SOShipLineSplit>
    {
    #region UsrSKR
    [PXDBDecimal]
    [PXUIField(DisplayName = "SKR")]

    public virtual Decimal? UsrSKR { get; set; }
    public abstract class usrSKR : PX.Data.BQL.BqlDecimal.Field<usrSKR> { }
    #endregion

    #region UsrUSKR
    [PXDBDecimal]
    [PXUIField(DisplayName = "USKR")]

    public virtual Decimal? UsrUSKR { get; set; }
    public abstract class usrUSKR : PX.Data.BQL.BqlDecimal.Field<usrUSKR> { }
    #endregion

    #region UsrVUS
    [PXDBDecimal]
    [PXUIField(DisplayName = "VUS")]

    public virtual Decimal? UsrVUS { get; set; }
    public abstract class usrVUS : PX.Data.BQL.BqlDecimal.Field<usrVUS> { }
    #endregion
    }
}

namespace Table
{
public class SOShipLineSplitPXExt : PXCacheExtension<PX.Objects.SO.Table.SOShipLineSplit>
    {
    #region UsrSKR
    [PXDBDecimal]
    [PXUIField(DisplayName = "SKR")]

    public virtual Decimal? UsrSKR { get; set; }
    public abstract class usrSKR : PX.Data.BQL.BqlDecimal.Field<usrSKR> { }
    #endregion

    #region UsrUSKR
    [PXDBDecimal]
    [PXUIField(DisplayName = "USKR")]

    public virtual Decimal? UsrUSKR { get; set; }
    public abstract class usrUSKR : PX.Data.BQL.BqlDecimal.Field<usrUSKR> { }
    #endregion

    #region UsrVUS
    [PXDBDecimal]
    [PXUIField(DisplayName = "VUS")]

    public virtual Decimal? UsrVUS { get; set; }
    public abstract class usrVUS : PX.Data.BQL.BqlDecimal.Field<usrVUS> { }
    #endregion
    }
}

Я буду собирать данные из таблицы INTran, таким образом, использование typeof также будет работать.

Вот несколько тестов, которые я попробовал:

using PX.Data;
using PX.Objects.IN;

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

        [PXDefault(typeof(Search< INTran.refNbr, Wher    e<INTran.inventoryID,Equal<SOShipLineSplit.inventoryID>
                                                  ,And<INTran.lotSerialNbr,     Equal<SOShipLineSplit.lotSerialNbr>>>>))]
        protected virtual void SOShipLineSplit_UsrSKR_CacheAttached(PXCache cache)
        {

        }
        protected void SOShipLineSplit_RowInserted(PXCache cache, PXRowInsertedEventArgs e)
        {

            var row = (SOShipLineSplit)e.Row;
            if (row == null) return;

            this.Base.splits.SetValueExt<SOShipLineSplitExt.usrSKR>(row, 11);
            SOShipLineSplitExt itemExt = PXCache<SOShipLineSplit>.GetExtension<SOShipLineSplitExt>(row);
            itemExt.UsrUSKR = 22;
            this.Base.splits.SetValueExt<SOShipLineSplitExt.usrVUS>(row, 33);

        }
        protected void SOShipLineSplit_UsrSKR_FieldDefaulting(PXCache cache, PXFieldDefaultingEventArgs e)
        {

            var row = (SOShipLineSplit)e.Row;
            if (row == null) return;
            SOShipLineSplitExt itemExt = PXCache<SOShipLineSplit>.GetExtension<SOShipLineSplitExt>(row);
            itemExt.UsrSKR = 22;
        }
        #endregion
    }
}

Я также установил для новых полей commitChanges значение true. Любая помощь будет цениться

...