0

我想将现有优惠券编号序列更新为根据月份变化的新优惠券编号,即如果月份是feb,那么编号顺序应该类似于02-0001。正如我研究并发现,数字序列是从向导自动生成的,所以我面临着一些问题如何更新。凭证号码按月份排列?

有一种方法叫做newGetVoucherFromCode seq类中可能用于更改凭证号码序列的范围。方法如下:

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> 
} 

现在我怎么能改变它的范围,使它产生序列月明智的?

回答

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

+0

我知道该怎么做,但我不能这样做对券号码,我无法找到凭证EDT中的LoadModule到财政年度的参数添加到它。 – user2870778 2014-09-01 04:49:21

+0

如前所述,凭证编号未在'loadModule'中定义:http://stackoverflow.com/questions/25486294/voucher-number-sequence – 2014-09-01 19:11:06

+0

答案更新。 – 2014-09-02 07:07:50