【问题标题】:How to implement auto generating document number on custom screen如何在自定义屏幕上实现自动生成单据编号
【发布时间】:2017-11-10 15:16:42
【问题描述】:

我需要创建一个像屏幕这样的机会,但我不知道如何实现为新创建的文档自动生成文档编号

我期待有人在这个问题上帮助我。

我使用了以下步骤,并附上了代码以供审核。我在保存而不生成号码时出错

  1. 我已经为备忘录文档创建了一个编号序列

  2. 我已经为序列号设置创建了一个 DAC

    区域 MemoInOrderId

    public abstract class memoInOrderId : PX.Data.IBqlField
    {
    }
    protected string _MemoInOrderId;
    [PXDBString(10, IsUnicode = true)]
    [PXDefault("MEMOIN")]
    [PXSelector(typeof(Numbering.numberingID),
                 DescriptionField = typeof(Numbering.descr))]
    [PXUIField(DisplayName = "Memo In Order Nbr")]
    public virtual string MemoInOrderId
    {
        get
        {
            return this._MemoInOrderId;
        }
        set
        {
            this._MemoInOrderId = value;
        }
    }
    #endregion
    
  3. 我已将自动生成序列号添加到 MemoIn DAC

`

#region OrderNbr
    public abstract class orderNbr : PX.Data.IBqlField
    {
    }
    [PXDBString(10, IsUnicode = true, IsKey = true, InputMask = ">CCCCCCCCCCCCCCC")]
    [PXUIField(DisplayName = "Order Nbr", Visibility = PXUIVisibility.SelectorVisible)]
    [AutoNumber(typeof(MemoSetUp.memoInOrderId), typeof(AccessInfo.businessDate))]
    [PXSelector(typeof(MemoIN.orderNbr),
        new Type[]
            {
             typeof(MemoIN.orderNbr),
             typeof(MemoIN.orderDate),
             typeof(MemoIN.vendorId)
            })]
    public virtual string OrderNbr { get; set; }
    #endregion
  1. 在配置屏幕中,我选择了文档 中用于备忘录的编号顺序

在保存备忘录时出现以下错误

我注意到订单号未初始化为“NEW”,而是显示“SELECT”

我已经查看了 CASetup 、 CMSetup 、 ARSetup DAC 代码,但无法找出区别。

【问题讨论】:

  • 无论您想要一个简单的整数计数器还是使用掩码/分段键的更复杂的格式,方法都会有所不同。你能提供一个你想要的序列的例子吗?
  • 您能否在问题中包含此字段的 aspx 页面条目?我同意您应该在字段中看到“”,而不是显示的“
  • 我还假设您在输入设置信息后刷新了页面。您是否在设置表的页面中包含了 PXSetup 以防万一?
  • PXSetup 是必需的。我已经添加了视图,现在它正在工作

标签: acumatica


【解决方案1】:

如果我们想使用编号序列,在 Acumatica 中非常简单。您应该在某处有一个设置/首选项字段,用于定义您将用于文档编号字段的编号顺序。

以下是使用选择器选择编号序列的设置字段示例:

// Setup field indicating which numbering sequence to use.
public abstract class myNumberingID : PX.Data.IBqlField
{
}
protected String _MyNumberingID;
[PXDBString(10, IsUnicode = true)]
[PXSelector(typeof(Numbering.numberingID), DescriptionField = typeof(Numbering.descr))]
[PXUIField(DisplayName = "My Numbering Sequence")]
public virtual String MyNumberingID
{
    get
    {
        return this._MyNumberingID;
    }
    set
    {
        this._MyNumberingID = value;
    }
}

接下来,在您的文档编号字段中,您将使用AutoNumberAttribute 将该字段定义为编号序列的使用者。下面是使用上面设置表中配置的已定义数字序列的数字字段示例(假设“MyNumberingID”存在于 DAC/表“MySetup”中)。

// Field using the numbering sequence...
public abstract class myNumberField : PX.Data.IBqlField
{
}
protected String _MyNumberField;
[PXDBString(15, IsUnicode = true, IsKey = true, InputMask = ">CCCCCCCCCCCCCCC")]
[PXUIField(DisplayName = "My Number", Visibility = PXUIVisibility.SelectorVisible)]
[AutoNumber(typeof (MySetup.myNumberingID), typeof (AccessInfo.businessDate))]
[PXDefault]
public virtual String MyNumberField
{
    get
    {
        return this._MyNumberField;
    }
    set
    {
        this._MyNumberField = value;
    }
}

编辑:确保在构建文档的图表中将 PXSetup 视图包含到设置表中。

现在,当您在 DAC 上插入并保留包含您的编号字段的新记录时,将使用下一个编号序列值(除非编号序列配置为手动编号,否则用户必须提供一个值)。

对于根据特定条件/字段值使用多个编号序列时更复杂的配置,您可以查看PX.Objects.IN.INRegister.RefNbr 的示例。查看INDocType.Numbering 以及它如何根据INRegister.docType 更改编号顺序(如下所示)。另一个示例是与销售订单文档相关的销售订单订单类型。

public class NumberingAttribute : AutoNumberAttribute
{
    public NumberingAttribute()
        : base(typeof(INRegister.docType), typeof(INRegister.tranDate),
            new string[] { Issue, Receipt, Transfer, Adjustment, Production, Change, Disassembly },
            new Type[] { typeof(INSetup.issueNumberingID), typeof(INSetup.receiptNumberingID), typeof(INSetup.receiptNumberingID), typeof(INSetup.adjustmentNumberingID), typeof(INSetup.kitAssemblyNumberingID), typeof(INSetup.kitAssemblyNumberingID), typeof(INSetup.kitAssemblyNumberingID) }) { ; }
}

【讨论】:

  • 感谢您的帮助。有什么方法可以生成阿拉数字吗?我正在浏览源代码,但无法弄清楚。
  • 我将尝试在编号序列中使用前缀并尝试字母数字自动序列号
  • 是的,您应该能够将前缀用于带有编号序列的字母数字数字。让我们知道进展如何。
  • 我在生成序列号时遇到问题,我将在代码中详细发布
  • 谢谢,我错过了“确保在图表中构建文档以将 PXSetup 视图包含到设置表中。”秘制酱汁。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
  • 2017-05-27
  • 2020-10-19
  • 2022-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多