美文网首页
会计打印凭证模块总结

会计打印凭证模块总结

作者: 葡萄柚子茶 | 来源:发表于2019-04-25 16:33 被阅读0次

    遇到的难点:

    1.递归
    重点是退出的条件,当时被会计科目所选的等级卡住,想不到选几级科目值就可以是几级,解决办法:把科目都保存在一个列表中,然后根据所选级别,用下标来筛选科目等级

        def parse_account_code(self, num, accounts, res):
            res.append(accounts)
            accounts_parent = accounts.parent_id
            if not accounts_parent:
                if len(res) > num:
                    return res[::-1][num - 1].code
                else:
                    return res[::-1][-1].code
            return self.parse_account_code(num, accounts_parent, res)
    

    2.求和

    res = self.env['account.move.line'].search([('account_id.code', 'like', code), ('id', 'in', items)])
    sum_debit = sum(x.debit for x in res)
    sum_credit = sum(x.credit for x in res)
    

    3.去重,提高运行速度

        def unique_code(self, id, print_level):
            move_id = self.env['account.move'].search([('id', '=', id)])
            list1 = []
            list2 = list(move_id.line_ids.mapped('account_id'))
            accounts = list(set(list2))
            accounts.sort(key=list2.index)
            for account_id in accounts:
                code = self.parse_account_code(print_level, accounts=account_id, res=[])
                list1.append(code)
            new_list = list(set(list1))
            new_list.sort(key=list1.index)
            return new_list
    

    学到的新知识点

    1.wizard
    在页面中新增加一个点击按钮,可以弹出框
    生成pdf需要用到template

    首先在wizard.xml里面加button,name里的是方法的名字,在wizard下新建方法,

    针对生成excel
    返回的是self.env['report'].get_action(self, report_name, data)
    新建一个xml文件,里面写<report/>
    id属性写controllers中的方法名,
    name属性要写return中的get_action的report_name
    model属性写wizard中新建的类名
    <record>字段id属性写controllers中的方法名
    再在controllers中新定义方法,写具体的生成excel函数

    2.上下文之间传递的值
    self._context.get('')

    3.controllers
    生成excel报表需要用到的
    也需要定义相应的xml文件

    4.git相关

    git log
    git reset --hard 很长的日志数字
    # 恢复以前版本的日志
    git add 文件名
    git commit -m "merge"
    git pull origin optimize
    git push origin optimize
    

    5.models.model
    基本模型,继承之后具有官方的ORM功能
    models.TransientModel
    常用于向导模型,数据是存入数据库中,但不是永久的
    models.AbstractModel
    常用于混合继承

    6.mapped
    获取到字段的值

    records.mapped('字段名')
    

    一些开发中的技巧

    1.遇到问题可以先把参数写死,然后看功能能不能跑通
    功能跑通之后再传参数
    2.可以研究之前的模块怎么写的,当做参考
    3.调试的时候,可以从全局出发,也可以从局部一句一句代码粘贴过来调试,看每一句代码是否有问题
    4.找字段名,点开凭证,把鼠标放上去,会显示字段的名字

    相关文章

      网友评论

          本文标题:会计打印凭证模块总结

          本文链接:https://www.haomeiwen.com/subject/jcaegqtx.html