凭证号码根据月份顺序?

时间:2014-08-29 11:17:33

标签: axapta microsoft-dynamics dynamics-ax-2012 number-sequence

我想将现有的凭证编号序列更新为根据月份更改的新编号序列,即如果月份为feb,则编号序列应为02-0001。正如我研究并发现数字序列是从向导自动生成的,所以我面临一些问题如何更新。

在seq类中有一个名为 newGetVoucherFromCode 的方法,可用于更改凭证编号序列的范围。方法如下:

public static NumberSeq newGetVoucherFromCode(
        NumberSequenceCode  _voucherSequenceCode,
        NumberSeqScope      _scope = NumberSeqScopeFactory::createDefaultScope(),
        boolean             _makeDecisionLater           = false,
        boolean             _dontThrowOnMissingRefSetUp  = false,
        //<GEERU><GEEU>
        UnknownNoYes        _allowManual                 = UnknownNoYes::Unknown)
        //</GEERU></GEEU>
{
    return NumberSeq::newGetVoucherFromId(
                NumberSequenceTable::findByNaturalKey(_voucherSequenceCode, _scope.getId()).RecId,
                _makeDecisionLater,
                _dontThrowOnMissingRefSetUp,
                //<GEERU><GEEU>
                _allowManual);
                //</GEERU></GEEU>
}

现在如何更改其范围以使其按月生成数字序列?

1 个答案:

答案 0 :(得分:0)

使数字序列遵循会计年度和月份是标准功能。

请在此处查看如何操作:Year in number sequence

您必须为每个时段制作一个数字序列:

Number sequence form with fiscal period

为了使用期间编号序列,您必须提供公司和会计期间。

FiscalCalendarPeriod p;
select firstOnly p //This is not the way to find a fiscal period:
    where p.Month == FiscalPeriodMonth::Month1 && 
          p.StartDate == 01\01\2014 && 
          p.Type == FiscalPeriodType::Operating;
info(NumberSeq::newGetNumFromCode('Test', NumberSeqScopeFactory::createDataAreaFiscalCalendarPeriodScope(curext(),p.RecId)).num());

您必须更改日记帐中的凭证编号生成以应对此问题,这不是一件容易的事。

另见Customize Existing Number Sequence to Fiscal Year Number Sequence