예제 #1
0
def print_bill_history(userobj):
    """
    个人中心-账单明细 打印模块
    :param userobj: 用户对象
    :return:
    """
    dates = get_date()
    startdate = dates["start"]
    enddate = dates["end"]
    # 保存所有账单流水的记录列表,数据为一个字符串
    msglist = list()
    # 获取显示模板
    _Templates = Templates.report_bill
    # 获取符合条件的账单明细记录(dict_list 类型)
    _recordlist = dbapi.load_bill_report(userobj.bindcard, startdate, enddate)
    for record in _recordlist:
        tmpmsg = "{time}      {costtype}  {cost}     {crdno}".format(
            time=record["starttime"],
            costtype=record["payfor"].ljust(10),
            cost=str(record["cost"]).ljust(6),
            crdno=record["serialno"])
        msglist.append(tmpmsg)
    # 填充模板并打印
    common.show_message(
        _Templates.format(cardno=userobj.bindcard,
                          startdate=startdate,
                          enddate=enddate,
                          billdetail="\n".join(msglist)), "NOTICE")
예제 #2
0
def create_card_statement(cardno):
    """
    生成信用卡对账单
    :param cardno:卡号
    :return:
    """
    # 获得当前时间
    currday = datetime.now().strftime("%Y-%m-%d")
    today = date.today().day
    # 如果是账单日22号 开始生成账单
    if today == settings.STATEMENT_DAY:
        # 生成对账单数据库中存放对账单数据的字典 key
        startday = (datetime.now() + timedelta(days=-30)).strftime(
            "%Y%m{0}".format(settings.STATEMENT_DAY))
        endday = datetime.now().strftime("%Y%m%d")
        statement_key = "{start}{end}".format(start=startday, end=endday)

        # 从对账单流水中计算出要还款的金额
        startdate = (datetime.now() + timedelta(days=-30)).strftime(
            "%Y-%m-{0} 00:00:00".format(settings.STATEMENT_DAY))
        enddate = datetime.now().strftime("%Y-%m-%d 00:00:00")
        # 获取卡号对应的消费流水记录列表
        bill_list = dbapi.load_bill_report(cardno, startdate, enddate)

        statement_total = 0.00
        # 如果有消费记录,生成对账单
        if len(bill_list) > 0:
            for bill in bill_list:
                # 获取一个对账单日期的消费总费用
                statement_total += bill["cost"]

            # 获取还款日期 下个月10号
            statement_pdate = (datetime.now() +
                               timedelta(days=30)).strftime("%Y-%m-10")

            # 生成对账单的统计数据字典{"2016012220160222":{"账单日":currday,
            #                                             "账单范围":startdate至enddate,
            #                                             "账单金额":statement_bill,
            #                                             "已还款":0,
            #                                             "还款日":pdate
            #                                             "已还完":0}}

            statement_dict = {
                statement_key: {
                    "billdate": currday,
                    "startdate": startdate,
                    "enddate": enddate,
                    "total": statement_total,
                    "payed": 0,
                    "pdate": statement_pdate,
                    "interest": 0,
                    "isfinished": 0
                }
            }
            # 对账单文件名
            file_name = os.path.join(settings.REPORT_PATH,
                                     "statement_{0}".format(cardno))
            # 写入文件
            dbapi.append_db_json(statement_dict, file_name)
예제 #3
0
def print_statement_detail(cardno, serino, details):
    """
    还款模块 - 用户选择还款的单号后,显示详细的还款对账单及流水信息
    :param cardno: 信用卡卡号
    :param serino: 对账单编号
    :param statement_list: 对账单列表
    :return: 返回填充后的模板信息
    """
    # 获取显示模板
    show_Templates = Templates.report_statement_detail
    # 获取指定编号的详细信息
    _billdate = details["billdate"]  # 账单日
    _sdate = details["startdate"]  # 账单开始日期
    _edate = details["enddate"]  # 账单结束日期
    _total = details["total"]  # 费用总额
    _payed = details["payed"]  # 已还款金额
    _pdate = details["pdate"]  # 还款日
    _interest = details["interest"]  # 利息

    # 获取详细的流水清单
    _flows = list()
    _recordlist = dbapi.load_bill_report(cardno, _sdate, _edate)
    for info in _recordlist:
        tmpmsg = "{time}      {costtype}  {cost}     {crdno}".format(
            time=info["starttime"],
            costtype=info["payfor"].ljust(10),
            cost=str(info["cost"]).ljust(6),
            crdno=info["serialno"])
        _flows.append(tmpmsg)

    # 填充模板
    result_message = show_Templates.format(cardno=cardno,
                                           serino=serino,
                                           billdate=_billdate,
                                           sdate=_sdate[0:10],
                                           edate=_edate[0:10],
                                           pdate=_pdate,
                                           total=_total,
                                           payed=_payed,
                                           interest=_interest,
                                           details="\n".join(_flows))
    return result_message