本地化 发票审核日志 的一个bug

对于已收到发票但货还未到的采购单,需要先在 应收账款->日志->发票->发票登记薄 处登记该发票,这时采用供应商过账模板中的到达科目和到达对方科目过账,到达科目可以设暂估应付账款,到达的对方科目可以设为原材料采购科目,等货物入库后再在发票审核日志处将在发票登记薄过账的发票对冲,生成正式发票。
如果启用了中国式凭证系统,在对冲的时候就会出现如下画面:


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


原文地址:https://www.cnblogs.com/Farseer1215/p/868693.html