Как сэкономить на acumatica созданной пользовательской форме - PullRequest
1 голос
/ 08 ноября 2019

Привет всем в разработке acumatica,

Я просто хочу спросить, как сохранить и сделать функцию кнопки действия в пользовательской форме, чтобы у меня был собственный график создания формы в acumatica, который я создал.

enter image description here

затем я создал пользовательскую таблицу из mssql, затем предоставил все классы в моей пользовательской форме, вот моя таблица из acumatica

[Serializable]
  public class prodsched : IBqlTable
  {
    #region Prodid
    [PXDBInt(IsKey = true)]
    [PXUIField(DisplayName = "Prodid")]
    public virtual int? Prodid { get; set; }
    public abstract class prodid : PX.Data.BQL.BqlInt.Field<prodid> { }
    #endregion

    #region Prodnumber
    [PXDBInt(IsKey = true)]
    [PXUIField(DisplayName = "Prodnumber")]
    public virtual int? Prodnumber { get; set; }
    public abstract class prodnumber : PX.Data.BQL.BqlInt.Field<prodnumber> { }
    #endregion

    #region Statusx
    [PXDBInt()]
    [PXUIField(DisplayName = "Statusx")]
    public virtual int? Statusx { get; set; }
    public abstract class statusx : PX.Data.BQL.BqlInt.Field<statusx> { }
    #endregion

    #region Approved
    [PXDBInt()]
    [PXUIField(DisplayName = "Approved")]
    public virtual int? Approved { get; set; }
    public abstract class approved : PX.Data.BQL.BqlInt.Field<approved> { }
    #endregion

    #region Datewan
    [PXDBDate()]
    [PXUIField(DisplayName = "Datewan")]
    public virtual DateTime? Datewan { get; set; }
    public abstract class datewan : PX.Data.BQL.BqlDateTime.Field<datewan> { }
    #endregion

    #region PromiseDate
    [PXDBDate()]
    [PXUIField(DisplayName = "Promise Date")]
    public virtual DateTime? PromiseDate { get; set; }
    public abstract class promiseDate : PX.Data.BQL.BqlDateTime.Field<promiseDate> { }
    #endregion

    #region Descriptionx
    [PXDBString(250, InputMask = "")]
    [PXUIField(DisplayName = "Descriptionx")]
    public virtual string Descriptionx { get; set; }
    public abstract class descriptionx : PX.Data.BQL.BqlString.Field<descriptionx> { }
    #endregion

    #region Shoename
    [PXDBString(250, InputMask = "")]
    [PXUIField(DisplayName = "Shoename")]
    public virtual string Shoename { get; set; }
    public abstract class shoename : PX.Data.BQL.BqlString.Field<shoename> { }
    #endregion

    #region Country
    [PXDBString(250, InputMask = "")]
    [PXUIField(DisplayName = "Country")]
    public virtual string Country { get; set; }
    public abstract class country : PX.Data.BQL.BqlString.Field<country> { }
    #endregion

    #region Article
    [PXDBString(250, InputMask = "")]
    [PXUIField(DisplayName = "Article")]
    public virtual string Article { get; set; }
    public abstract class article : PX.Data.BQL.BqlString.Field<article> { }
    #endregion

    #region Currency
    [PXDBString(250, InputMask = "")]
    [PXUIField(DisplayName = "Currency")]
    public virtual string Currency { get; set; }
    public abstract class currency : PX.Data.BQL.BqlString.Field<currency> { }
    #endregion

    #region Pm
    [PXDBString(250, InputMask = "")]
    [PXUIField(DisplayName = "Pm")]
    public virtual string Pm { get; set; }
    public abstract class pm : PX.Data.BQL.BqlString.Field<pm> { }
    #endregion

    #region Quantity
    [PXDBString(250, InputMask = "")]
    [PXUIField(DisplayName = "Quantity")]
    public virtual string Quantity { get; set; }
    public abstract class quantity : PX.Data.BQL.BqlString.Field<quantity> { }
    #endregion

    #region Efd
    [PXDBDate()]
    [PXUIField(DisplayName = "Efd")]
    public virtual DateTime? Efd { get; set; }
    public abstract class efd : PX.Data.BQL.BqlDateTime.Field<efd> { }
    #endregion

    #region SeStartDate
    [PXDBDate()]
    [PXUIField(DisplayName = "Se Start Date")]
    public virtual DateTime? SeStartDate { get; set; }
    public abstract class seStartDate : PX.Data.BQL.BqlDateTime.Field<seStartDate> { }
    #endregion

    #region SeEndDate
    [PXDBDate()]
    [PXUIField(DisplayName = "Se End Date")]
    public virtual DateTime? SeEndDate { get; set; }
    public abstract class seEndDate : PX.Data.BQL.BqlDateTime.Field<seEndDate> { }
    #endregion

    #region AssStartDate
    [PXDBDate()]
    [PXUIField(DisplayName = "Ass Start Date")]
    public virtual DateTime? AssStartDate { get; set; }
    public abstract class assStartDate : PX.Data.BQL.BqlDateTime.Field<assStartDate> { }
    #endregion

    #region AssEndDate
    [PXDBDate()]
    [PXUIField(DisplayName = "Ass End Date")]
    public virtual DateTime? AssEndDate { get; set; }
    public abstract class assEndDate : PX.Data.BQL.BqlDateTime.Field<assEndDate> { }
    #endregion

    #region OutStartDate
    [PXDBDate()]
    [PXUIField(DisplayName = "Out Start Date")]
    public virtual DateTime? OutStartDate { get; set; }
    public abstract class outStartDate : PX.Data.BQL.BqlDateTime.Field<outStartDate> { }
    #endregion

    #region OutEndDate
    [PXDBDate()]
    [PXUIField(DisplayName = "Out End Date")]
    public virtual DateTime? OutEndDate { get; set; }
    public abstract class outEndDate : PX.Data.BQL.BqlDateTime.Field<outEndDate> { }
    #endregion

    #region OSmatarrive
    [PXDBString(250, InputMask = "")]
    [PXUIField(DisplayName = "OSmatarrive")]
    public virtual string OSmatarrive { get; set; }
    public abstract class oSmatarrive : PX.Data.BQL.BqlString.Field<oSmatarrive> { }
    #endregion

    #region OScode
    [PXDBString(250, InputMask = "")]
    [PXUIField(DisplayName = "OScode")]
    public virtual string OScode { get; set; }
    public abstract class oScode : PX.Data.BQL.BqlString.Field<oScode> { }
    #endregion
  }

, то естькак я создал свою пользовательскую форму и мой код

 public PXSave<prodsched> Save;
    public PXCancel<prodsched> Cancel;
        public PXInsert<prodsched> Insert;
        public PXCopyPasteAction<prodsched> CopyPaste;
        public PXDelete<prodsched> Delete;
        public PXFirst<prodsched> First;
        public PXPrevious<prodsched> Previous;
        public PXNext<prodsched> Next;
        public PXLast<prodsched> Last;

        public PXSelect<prodsched> MasterView;

, чтобы все это отображалось идеально, но когда я ввожу новые данные для своей пользовательской таблицы, а затем нажимаю кнопку Сохранить на acumatica, она отключает мою кнопку сохранения, но данные, которые я ввелне был сохранен. Можете ли вы научить меня созданию пользовательской формы acumatica, в которую добавляются данные сохранения и удаления по щелчкам моей кнопки, спасибо, что я новичок в разработке acumatica, спасибо.

1 Ответ

0 голосов
/ 08 ноября 2019

Вы должны обновить [PXDBInt (IsKey = true)] до [PXDBIdentity], поскольку у вас также есть Prodnumber в качестве ключа и элемент управления селектором на странице. Я предполагаю, что это потребует от пользователей ввода поля Prodnumber и поиска по нему, который может отличаться от ключа autonumber.

Я бы прикрепил атрибут PXSelector к полю Prodnumber, если это так. Вы можете добавить следующее для поиска Prodnumber, но также показать другие поля, такие как даты и описание:

[PXSelector(typeof(prodsched.prodnumber), typeof(prodsched.prodnumber), typeof(prodsched.datewan), typeof(prodsched.promiseDate), typeof(prodsched.descriptionx))]

Если вы хотите очистить свои действия и использовать все значения по умолчанию, вы можете заменить ихс объявлением основного ЦАП на вашем графике. Например, SOOrderEntry имеет основной ЦАП SOOrder. Он объявлен как

public class SOOrderEntry : PXGraph<SOOrderEntry, SOOrder>

для предоставления всех действий по умолчанию.

...