我需要创建一个像屏幕一样的机会,我不知道如何实现自动生成新创建文档的文档编号
我期待有人在这个问题上帮助我。
我使用了以下步骤,并附上了要审核的代码。保存时我收到错误而没有生成数字
我为序列号设置创建了一个DAC
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
我已将自动生成序列号添加到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
答案 0 :(得分:4)
如果我们想使用编号序列,那么在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) }) { ; }
}