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")
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)
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