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

会计打印凭证模块总结

作者: 葡萄柚子茶 | 来源:发表于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