二开实现凭证过账界面显示未过账凭证数原创
金蝶云社区-战斗的凯文
战斗的凯文
4人赞赏了该文章 138次浏览 未经作者许可,禁止转载编辑于2024年07月30日 16:33:58

        总账凭证过账界面不能方便的分辨哪些账簿在当前期间已全部过账,哪些还有未过账凭证。会计人员操作过账时,就缺乏参考依然,不知道哪个账簿当期需要过账,为了避免遗漏,往往只能全选所有账簿一起过账。这样,导致部分已全部过账的账簿进行不必要的检查,影响过账效率,这显然不是我们希望看到的场景。那么,就有必要在界面上清晰的显示出账簿当前期间未过账凭证的数量,方便用户参考。

        本方案的思路为:添加一列,通过查询凭证得出对应账簿当期未过账凭证数,更新到这一列上显示出来。

        具体步骤如下:

一,协同开发平台(原BOS设计器)中扩展凭证过账,添加一个整数字段,指定相关属性如下图所示:

image.png

二,添加Python插件代码,如下图所示:

image.png

Python代码如下:

import clr
clr.AddReference('Kingdee.BOS.App')
from Kingdee.BOS.App.Data import *
 
def SetUnpostVchCount():
    sql = """SELECT v.FACCOUNTBOOKID FBOOKID,COUNT(v.FVOUCHERID) FCNT FROM T_GL_VOUCHER v
JOIN T_BD_ACCOUNTBOOK b ON b.FBOOKID=v.FACCOUNTBOOKID
WHERE v.FYEAR=b.FCURRENTYEAR AND v.FPERIOD=b.FCURRENTPERIOD AND v.FPOSTED='0' AND v.FINVALID='0' AND V.FISADJUSTVOUCHER='0'
GROUP BY v.FACCOUNTBOOKID,v.FYEAR,v.FPERIOD"""
    dy = DBUtils.ExecuteDynamicObject(this.Context,sql)
    if dy is None:
        return
    #this.View.ShowMessage("dy_"+str(dy.Count))
    rows = this.Model.GetEntryRowCount("FEntity")
    #this.View.ShowMessage("rows_"+str(rows))
    for i in range(rows):
        book = this.Model.GetValue("FAccountBook",i)
        if(book):
            bookid = book["Id"]
            #this.View.ShowMessage("bookid_"+str(bookid))
            for k in range(dy.Count):
            #for d in dy:
                if(int(dy[k]["FBOOKID"])==int(bookid)):
                    #this.View.ShowMessage("Set_"+str(dy[k]["FCNT"]))
                    this.Model.SetValue("FUnPostedVch",int(dy[k]["FCNT"]),i)
                    break
        else:
            #this.View.ShowMessage("book null")
            break
    this.View.UpdateView("FEntity")
 
def AfterBindData(e):
    SetUnpostVchCount()
 
def BarItemClick(e):
    if(e.Cancel):
        return
    if(e.BarItemKey.upper()=="TBREFRESH"):
        SetUnpostVchCount()

三,运行调试:

image.png

PS:可以通过字段标题栏上的过账和排序功能来快速确定需要选择过账的账簿范围。

image.pngimage.png


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