如果启用了中国式凭证系统,在对冲的时候就会出现如下画面:
原因是PurchFormLetter_ApproveJournal这个类的方法
NumberSeq allocateNumAndVoucher()
{
return numberSeq;
}
由于凭证号是在创建审核日志的时候就已经分配了,所以这里不再实例化numberSeq,而本地化的代码没有考虑这个情况,直接在PurchFormLetter的InserJournal方法中调用了numberSeq.parmTransDate(purchParmTable.transDate);这个方法,所以就出错了。{
return numberSeq;
}
解决方法:判断一下当前实例如果是PurchFormLetter_ApproveJournal或者numberSeq为null就不调用该方法。
if (LedgerParameters::find().ChineseVoucher_CN == NoYes::Yes &&
numberSeq)
{
numberSeq.parmTransDate(purchParmTable.transDate);
}
numberSeq)
{
numberSeq.parmTransDate(purchParmTable.transDate);
}