【二开指导】凭证允许汇率为负及本位币和原币正负方向不一致原创
金蝶云社区-战斗的凯文
战斗的凯文
5人赞赏了该文章 655次浏览 未经作者许可,禁止转载编辑于2023年04月21日 15:14:04

【二开指导】凭证允许汇率为负及本位币和原币正负方向不一致

主要思路:通过重新修改官方插件再编译后实现

 

一、允许汇率为负

通常当汇率为负时,会提示“汇率不合法”,修改方法如下:

l   位置:凭证保存校验

涉及组件名:Kingdee.K3.FIN.GL.App.ServicePlugIn.dll

类及方法名:GLVoucher.SaveValidator.CheckEntryExchangeRate():

处理方法:增加为结转损益凭证时汇率取绝对值的逻辑

string billKey = this.dyObj.GetValue<string>("FSourceBillKey_Id");
if (billKey == VoucherTypeConst.TRANSFERPL)
{
    this.dyEntryCol[i]["EXCHANGERATE"] = Math.Abs(dRate);
}
else
{
    if (strMsgRate.IsNullOrEmptyOrWhiteSpace())
    {
        strMsgRate = "第{0}行凭证分录的[汇率]不合法,请重新输入!";
    }
    AddError(dyObj, i, string.Format(strMsgRate, i + 1));
}

 

二、允许本位币和原币正负方向不一致

涉及三处位置,分别如下:

l   位置:凭证保存校验

涉及组件名:Kingdee.K3.FIN.GL.App.ServicePlugIn.dll

类及方法名:GLVoucher.SaveValidator.CheckEntryAmount():

处理方法:增加为结转损益凭证时跳过该检查的逻辑

if(dAmount * dAmountFor < 0 && 
    this.dyObj.GetValue<string>("FSourceBillKey_Id")!= VoucherTypeConst.TRANSFERPL)

 

l   位置:凭证审核校验

涉及组件名:Kingdee.K3.FIN.GL.App.ServicePlugIn.dll

类及方法名:GLVoucher.Audit.AuditValidator.CheckVoucher():

处理方法:增加为结转损益凭证时跳过该检查的逻辑

if(lstAmountSeq.Count > 0 &&
    this.dyObj.GetValue<string>("FSourceBillKey_Id")!= VoucherTypeConst.TRANSFERPL)

 

l   位置:凭证过账校验

涉及组件名:Kingdee.K3.FIN.GL.App.Core.dll

类及方法名:AbstractVoucherPost.VoucherGuidePostCheck():

处理方法:注释掉本位币原币方向一致性检查方法

//lstSqlObj.Add(CheckAmount(ctx));


图标赞 5
5人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0