工资条: TableMaker部分

TableMaker.py

Shawn
11/22/2018

这个类负责生成邮件的内容, 为了方便所以我选择直接用html格式来实现工资表.
为了方便使用所以就直接写成了工具类.

软件本体见 https://blog.csdn.net/weixin_41084236/article/details/84325652

html相关的知识详见这里


    @staticmethod
    def table(s):  # 表格总包装
        return ""+ s +"
"
@staticmethod def tr(s): # 表格行包装 return "" + s + "" @staticmethod def td_spin(s, span): # 表格跨列单元格包装 return f"" + s + "" @staticmethod def td(s): # 表格普通单元格包装 return "" + s + "" @staticmethod def p(s): # 段落包装 return "

" + s + "

"

这个部分用来方便实现简便的html转换, 因为要用到的功能很少, 所以就没有调用专业的库.


    @staticmethod
    def salary_str(row_line_array):  # 个人数据包装, 将数组包装成表格的一行
        info = ""
        for element in row_line_array:
            info += TableMaker.td(element)
        return TableMaker.tr(info)

这个部分用来将输入的个人资料数组转换成工资表的一行


    @staticmethod
    def table_head_str(date_str, title):  # 表头包装, 根据输入的标题、日期输出四行固定格式的表头
        line3data = [
            "部门", "姓名", "卡号", "开户行", "入职日期",
            "基本工资", "岗位工资", "合计", "绩效", "工资合计",
            "实际天数", "出勤天数", "缺勤天数", "病假天数", "缺勤",
            "绩效","其他", "合计", "午贴", "交补",
            "其它", "合计", "应发工资", "公司社保", "公司公积金",
            "合计", "个人社保", "个人公积金", "其它", "合计",
            "税前工资", "个税1", "个税2", "实发工资"
        ]

        line0 = TableMaker.tr(TableMaker.td_spin(title, 34))
        line1 = TableMaker.tr(
            TableMaker.td_spin("编制单位:XXX有限公司", 14)
            + TableMaker.td_spin(date_str, 12)
            + TableMaker.td_spin("单位:元", 8)
        )
        line2 = TableMaker.tr(
            TableMaker.td_spin("", 5)
            + TableMaker.td_spin("工资部分", 5)
            + TableMaker.td_spin("出勤", 4)
            + TableMaker.td_spin("应扣项目", 4)
            + TableMaker.td_spin("应发", 5)
            + TableMaker.td_spin("公司部分", 3)
            + TableMaker.td_spin("代缴项目", 4)
            + TableMaker.td_spin("", 4)
        )
        line3 = ""
        for item in line3data:
            line3 += TableMaker.td(item)
        line3 = TableMaker.tr(line3)

        return line0 + line1 + line2 + line3

这个部分用来生成固定的表头, 由需求决定. 大体上就是用单元格\跨行单元格来拼接.


    @staticmethod
    def pack_up(name, salary_title, manager, date_str, personal_part):  # 表格总输出,根据输入返回完整的表格+前后段落
        content = ''
        personal_line = ''
        table = ''
        opening = [
            "   " + name + "您好:",
            "感谢你对公司作出的贡献和努力!\n现向您发送" + salary_title + ",公司已代缴个人五险一金、个人所得税!您的工资条明细如下:"
        ]
        ending = [
            "如有任何问题或疑问请在3个工作日内与"+manager+"联系,如无则默认为当月工资发放无误。谢谢!",
            "继续加油!"
        ]
        for _open in opening:
            content += TableMaker.p(_open)

        table += TableMaker.table_head_str(date_str, salary_title)
        for element in personal_part:
            personal_line += TableMaker.td(element)
        table += TableMaker.tr(personal_line)
        content += TableMaker.table(table)

        for _end in ending:
            content += TableMaker.p(_end)
        return content

这个部分是整个类最主要的功能, 根据输入一步输出邮件的内容.
排版为:开头段落+个人工资表+结尾段落

你可能感兴趣的:(Python)