我需要创建一个像 screen 这样的机会,但我不知道如何为新创建的文档实现自动生成文档编号
我期待有人在这个问题上帮助我。
我使用了以下步骤,并附上了代码以供审查。我在保存而不生成数字时出错
我为序列号设置创建了一个 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
Run Code Online (Sandbox Code Playgroud)我已将自动生成序列号添加到 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
Run Code Online (Sandbox Code Playgroud)
在保存 Memo In 文档时,我收到以下错误
我注意到订单号没有初始化为“新”,它显示“选择”
我已经通过了 CASetup 、 CMSetup 、 ARSetup DAC 代码,但无法弄清楚其中的区别。
如果我们想使用编号序列,它在 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;
}
}
Run Code Online (Sandbox Code Playgroud)
接下来,在您的凭证编号字段中,您将使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:确保在构建文档的图表中将 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) }) { ; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1255 次 |
| 最近记录: |