本文将对发货通知信用额度公式中【发货通知单/退货通知单】选项的取数逻辑展开描述。
1、信用公式设置
信用额度=当前单据金额
+ 已审核的发货通知单金额
+ 未审核的发货通知单金额
- 已开票的发货通知单金额
- 已审核的退货通知单金额
- 未审核的退货通知单金额
+ 已开票的退货通知单金额
图-1
2、发货通知单信用查询
新增的发货通知单保存时提示“测试客户”信用额度是10000,已用额度11250,超支额度1250。后面将介绍【已用额度】11250是如何计算的?
图-2
信用额度查询主要是查询表ICCreditInstant中的数据,根据在图-1信用公式设置中勾选的单据项进行加减。当全部勾选了,对应的脚本如下图-3,本文案例中只勾选后面6项,所以脚本中也只有后面6项进行加减。
其中发货通知单对应FGroupID=9,退货通知单对应FGroupID=10。
图-3
表 ICCreditInstant 的数据最初是在启用信用额度时写入,通过查看启用信用额度的过程,可以了解每一类单据的信用额度写入的逻辑,因此我们主要研究启用信用额度的过程即可。
系统前台启用信用额度,在后台是执行存储过程p_IC_InitCreditInstantData。
存储过程p_IC_InitCreditInstantData中关于发货通知单、退货通知单的脚本如下。
图-4 未审核发货通知单金额
图-5 已审核、已开票发货通知单金额
图-6 未审核退货通知单金额
图-7 已审核、已开票退货通知单金额
注:如果发现某个购货单位的已用额度不对,可尝试禁用重新启用信用额度。
3、已用额度计算
3.1、当前单据金额=9000
如图-2,当前单据保存时的金额,9000元。
3.2、已审核的发货通知单金额=9000
系统前台过滤已审核的发货通知单,9000元。
图-8
如图-3,已审核的发货通知单金额对应的是表ICCreditInstant中FGroup=9的记录中FMainAmtPara2的数据。表ICCreditInstant中FGroup=9的记录中FMainAmtPara2的数据来源于图-5的脚本。
从图-5的脚本可以看出,已审核发货通知单金额是考虑了已审核发货通知单完全出库但超数量开票的情况,本文案例只针对不超数量开票的情况,后面已审核的退货通知单金额也是。
3.3、未审核的发货通知单金额=900
系统前台过滤未审核的发货通知单,900元。
图-9
如图-3,未审核的发货通知单金额对应的是表ICCreditInstant中FGroup=9的记录中FMainAmtPara1的数据。而表ICCreditInstant中FGroup=9的记录中FMainAmtPara1的数据来源于图-4的脚本。
3.4、已开票的发货通知单金额
如图-3,已开票的发货通知单金额对应的是表ICCreditInstant中FGroup=9的记录中FMainAmtPara3 的数据。表ICCreditInstant中FGroup=9的记录中FMainAmtPara3的数据也是来源于图-5的脚本。
考虑可能部分开票或合并开票的情况,系统前台无法直接过滤出来已开票的发货通知单金额。
通过图-5的脚本可以看出,在发货通知单开票数量不超过发货通知单数量的情况下,已开票的发货通知单金额 = 发货通知单开票数量 / 发货通知单数量 * 发货通知单金额,即:80/100*9000=7200。
3.5、已审核的退货通知单金额=1800
前台过滤已审核的退货通知单,1800元。
图-10
如图-3,已审核的退货通知单金额对应的是表ICCreditInstant中FGroup=10的记录中FMainAmtPara2的数据。表ICCreditInstant中FGroup=10的记录中FMainAmtPara2的数据来源于图-7的脚本。
3.6、未审核的退货通知单金额=450
系统前台过滤未审核的退货通知单,450元。
图-11
如图-3,未审核的退货通知单金额对应的是表ICCreditInstant中FGroup=10的记录中FMainAmtPara1的数据。而表ICCreditInstant中FGroup=10的记录中FMainAmtPara1的数据来源于图-6的脚本。
3.7、已开票的退货通知单金额=1800
已开票的退货通知单金额对应的是表ICCreditInstant中FGroup=9的记录中FMainAmtPara3 的数据。表ICCreditInstant中FGroup=9的记录中FMainAmtPara3的数据也是来源于图-7的脚本。
和已开票的发货通知单一样,考虑可能部分开票或合并开票的情况,系统前台无法直接过滤出来已开票的退货通知单金额,需要另外计算。
通过图-10的脚本可以看出,已开票的退货通知单金额 = 退货通知单开票数量 / 退货通知单数量 * 退货通知单金额,即:20/20*1800*1=1800。
最后,通过以上查询计算可以得到,“测试客户”的已用额度 = 9000 + 9000 + 900- 7200 - 1800 - 450 + 1800 = 11250,超支额度 = 10000 - 11250 = -1250
推荐阅读