def test_117_deduction_apply_all_periods(self): """主动还款:连续还款整笔结清""" data = excel_table_byname(self.file, 'deduction_apply') param = json.loads(data[0]['param']) repayment_plan_list = self.r.get("rmkj_9_periods_repayment_plan") maturity = GetSqlData.get_maturity( project_id=self.r.get("rmkj_9_periods_projectId"), environment=self.env) for period in range(1, maturity + 1): success_amount = 0.00 repayment_detail_list = [] for i in json.loads(repayment_plan_list): if i['period'] == period: plan_detail = { "period": i['period'], "payAmount": i['restAmount'], "planCategory": i['repaymentPlanType'] } success_amount = round( success_amount + plan_detail.get("payAmount"), 2) repayment_detail_list.append(plan_detail) param.update({ "sourceRequestId": Common.get_random("requestNum"), "projectId": self.r.get("rmkj_9_periods_projectId"), "sourceProjectId": self.r.get("rmkj_9_periods_sourceProjectId"), "sourceUserId": self.r.get("rmkj_9_periods_sourceUserId"), "serviceSn": Common.get_random("serviceSn"), "payTime": Common.get_time("-"), "successAmount": success_amount, "period": period }) param['repaymentDetailList'] = repayment_detail_list if len(data[0]['headers']) == 0: headers = None else: headers = json.loads(data[0]['headers']) rep = Common.response(faceaddr=data[0]['url'], headers=headers, data=json.dumps(param, ensure_ascii=False), product="cloudloan", environment=self.env) self.assertEqual(rep['resultCode'], int(data[0]['resultCode'])) Assert.check_repayment(True, self.env, self.r.get("rmkj_9_periods_projectId"), param) self.r.set("rmkj_9_periods_deductionTaskId", rep['content']['deductionTaskId'])
def _init_repayment_plan(env: str, project_id: str) -> None: """ 放款时还款计划校验 :param env: :param project_id: :return: """ database_repayment_plan = GetSqlData.get_repayment_plan( project_id=project_id, environment=env) maturity = GetSqlData.get_maturity(project_id=project_id, environment=env) for plan in database_repayment_plan: assert_that(plan["repayment_status"]).is_equal_to(1) Ulog().logger_().info("还款计划状态校验通过") assert_that(database_repayment_plan).is_length(maturity * 2) Ulog().logger_().info("还款计划条数校验通过")
def _get_swap_data(env: str, project_id: str, period: int): _data = { "period": period, "current_repayment_plan": [], # 当前期的还款计划 "before_repayment_plan": [], # 已发生的还款计划 "after_repayment_plan": [], # 未发生的还款计划 "current_fee_plan": [], # 当前期费计划 "before_fee_plan": [], # 已发生的费计划 "after_fee_plan": [], # 未发生的费计划 "current_swap_detail": [], # 当前期债转详情 "before_swap_detail": [], # 已发生期的债转详情 "after_swap_detail": [], # 未发生期的债转详情 "maturity": GetSqlData.get_maturity(project_id=project_id, environment=env), "database_repayment_plan": GetSqlData.get_repayment_plan(project_id=project_id, environment=env), "database_fee_plan": GetSqlData.get_fee_plan(project_id, env), "database_swap_detail": GetSqlData.get_swap_detail(project_id, env), "asset": GetSqlData.get_asset(project_id, env) } for p in _data["database_repayment_plan"]: if p["period"] == period: _data["current_repayment_plan"].append(p) elif p["period"] < period: _data["before_repayment_plan"].append(p) else: _data["after_repayment_plan"].append(p) for f in _data["database_fee_plan"]: if f["period"] == period: _data["current_fee_plan"].append(f) elif f["period"] < period: _data["before_fee_plan"].append(f) else: _data["after_fee_plan"].append(f) for s in _data["database_swap_detail"]: if s["period"] == period: _data["current_swap_detail"].append(s) elif s["period"] < period: _data["before_swap_detail"].append(s) else: _data["after_swap_detail"].append(s) return _data
def _get_repay_data(env: str, project_id: str, param: Optional[dict]) -> dict: """ 初始化校验需要用到的还款数据 :param env: :param project_id: :param param: :return: """ _data = { "repay_type": param["repayType"], "period": param["period"], "pay_time": param["payTime"], "repayment_detail": param["repaymentDetailList"], "repay_principal": 0, "repay_interest": 0, "plan_pay_date": None, "success_amount": param["successAmount"], "payment_flow_source": param["paymentFlowSource"], "source_repayment_id": param["sourceRepaymentId"], "maturity": GetSqlData.get_maturity(project_id=project_id, environment=env), "database_repayment_plan": GetSqlData.get_repayment_plan(project_id=project_id, environment=env), "database_fee_plan": GetSqlData.get_fee_plan(project_id, env), "database_repayment": GetSqlData.get_repayment(project_id, env)[-1], "database_repayment_detail": GetSqlData.get_repayment_detail(project_id, env), "current_repayment_plan": [], # 当前期的还款计划 "before_repayment_plan": [], # 已发生的还款计划 "after_repayment_plan": [], # 未发生的还款计划 "current_fee_plan": [], # 当前期费计划 "before_fee_plan": [], # 已发生的费计划 "after_fee_plan": [], # 未发生的费计划 "current_repayment_detail": [], # 当前期还款流水 "before_repayment_detail": [], # 已发生的还款流水 "after_repayment_detail": [] # 未发生的还款流水 } _data["plan_pay_date"] = GetSqlData.get_repayment_plan_date( project_id, env, 1, _data["period"])["plan_pay_date"] for p in _data["database_repayment_plan"]: if p["period"] == _data["period"]: _data["current_repayment_plan"].append(p) elif p["period"] < _data["period"]: _data["before_repayment_plan"].append(p) else: _data["after_repayment_plan"].append(p) for f in _data["database_fee_plan"]: if f["period"] == _data["period"]: _data["current_fee_plan"].append(f) elif f["period"] < _data["period"]: _data["before_fee_plan"].append(f) else: _data["after_fee_plan"].append(f) for detail in _data["repayment_detail"]: if detail["planCategory"] == 1: _data["repay_principal"] += detail["payAmount"] elif detail["planCategory"] == 2: _data["repay_interest"] += detail["payAmount"] for repayment_detail in _data["database_repayment_detail"]: if repayment_detail["period"] < _data["period"]: _data["before_repayment_detail"].append(repayment_detail) elif repayment_detail["period"] == _data["period"]: _data["current_repayment_detail"].append(repayment_detail) elif repayment_detail["period"] > _data["period"]: _data["after_repayment_detail"].append(repayment_detail) return _data