资源描述
资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。
Telenor系统(账单管理子系统)
功能设计说明书
编 写
胡波
编写 时间
-12-22
审 批
审批 时间
版本
V0.16
亚信科技( 中国) 有限公司版权所有
文档中的全部内容属亚信科技( 中国) 有限公司所有,
未经允许, 不可全部或部分发表、 复制、 使用于任何目的。
文档修订摘要
日期
版本号
修订章节
描述
作者
评审者
评审日期
-01-17
V0.1
初稿
林荣福
-02-13
V0.2
评审后修改
林荣福
-03-20
V0.3
修改文档格式
林荣福
-4-28
V0.6
添加调账规则和批量调账调账原因
林荣福
-09-05
V0.8
按照产品调账
林荣福
-09-24
V0.9
多账期调账
林荣福
-10-15
V1.1
添加crm审批
林荣福
-06-01
V1.2
增加调账原因科目
胡波
-08-11
V1.3
Invoice级调账
胡波
-08-12
V1.4
Add line调账
胡波
-09-06
V1.5
用户级调账
胡波
-12-22
V1.6
反悔期调账
胡波
目录
1 引言 1
1.1 文档用途 1
1.2 阅读对象 1
1.3 名词术语 1
1.4 参考资料 1
2 概述 3
2.1 调账子系统概述 3
2.2 调账子系统功能定义 3
2.3 设计约束 3
2.4 复用内容 4
3 总体结构说明 5
3.1 系统结构 5
3.1.1 系统内外部关系图 5
3.1.2 功能模块简要说明 5
3.1.3 依赖的外部接口 5
3.1.4 对外提供的接口 13
3.2 模块程序构建结构图 14
4 子系统功能设计 15
4.1 账单调整子系统功能设计 15
4.1.1 数据模型设计 15
4.1.2 功能实现说明 22
4.1.3 界面实现说明 34
4.2 Credit Note 42
4.2.1 数据模型设计 42
4.2.2 功能实现说明 50
4.2.3 界面实现说明 52
5 附录 53
5.1 错误码列表 53
5.2 需求文档功能跟踪矩阵 53
1 引言
1.1 文档用途
本文档的目的是确定Veris Billing账单管理模块的功能范围, 明确账单管理功能的设计方案, 指导开发人员完成开发设计工作, 并帮助测试人员编写测试案例。
1.2 阅读对象
l 产品设计工程师
l 产品开发工程师
l 产品测试工程师
l 其它相关人员
1.3 名词术语
缩写、 术语
解 释
正向调账
正向调账也叫向上调账, 是指因资费或其它特殊原因需增加客户的账单费用, 表示客户需向运营商多缴纳一笔费用增加客户的账单费用叫做正调账
负向调账
负向调账也叫向下调账, 常见于发生投诉时减少目标费用额度, 表示运营商多收了客户费用, 需退还给客户减少客户的账单费用叫做负调账
Credit Note
当客户收到错误的帐单之后, 基于法律要求, 需要再给客户邮寄一份说明, 告知其错误原因, 正确帐单邮寄时间等信息。当账单因负向调整账单的时候还需要寄送Credit Note给客户当客户收到错误的帐单之后, 基于法律要求, 需要再给客户邮寄一份说明, 告知其错误原因, 正确帐单邮寄时间等信息。当账单上的金额比客户实际使用金额多时需要寄送Credit Note。
呆账
呆账是指超过缴费期限, 经过催讨依然没有缴清, 可能成为坏账的账单。
坏账
坏账是指无法收回或极小可能收回款项的账单。
1.4 参考资料
1. OpenBilling6.0帐务管理详细设计规格说明书-调账.doc
2. Credit Note需求说明书v1.0.doc
3. 调账软件需求说明书v1.0.doc
4. 呆坏账功能规格说明书v1.2.doc
2 概述
2.1 调账子系统概述
账单是用户消费记录查询的依据, 账单用于记录客户使用计费服务产生的各种费用明细, 。Billing系统需要能够对客户产生的这些账单进行查询和修改操作。客户能够账单查询来知晓自己的消费记录。如果客户的账单出现问题, 需要有改正机制对账单进行修改。
2.2 调账子系统功能定义
按照功能的不同能够将账单管理系统分为如下几个模块:
账单查询。
账单调整。
调账审批流程。
2.3 设计约束
调账模块设计的时候有如下的设计约束账单管理模块设计的时候有如下的设计约束:
1. 调账往下调整账单的时候调整额度如果大于客户的未缴金额则多余部分要当做Advance Payment 返回给客户( 例如: 客户账单为100, 未缴金额为40, 如果往下调整60, 则账单往下调整40, 剩余的20会当做Advance Payment返回给客户) 。
2. 往下调整账单的时候必须生成往下调整账单的时候能够指定是否生成Credit Note。
3. 调整账单明细的时候账单总金额要一起调整, 需要保证账单总金额和账单明细金额加起来的总额相等。
只有有调账权限的操作员才能够执行调账操作( 如调账200元, 只有操作权限大于200的操作员才能够进行调账操作, 操作权限小于200元的操作员是无法执行此次调账的, 需要提交申请单给高权限的操作员) 。
4. 呆坏账账单不允许进行调账。无科目调账的时候需要使用默认调帐科目进行调账。
2.4 复用内容
3 总体结构说明
3.1 系统结构
3.1.1 系统内外部关系图
3.1.2 功能模块简要说明
账单查询: 将客户的实时账单和历史账单进行查询, 使客户能够查询自己的实时消费记录和历史消费记录。
调账执行: 对某个费用科目, 某个账单进行调整, 以一定的形式( 一次性费用, 负账单, 账单, 账本, 外部费用) 反馈给用户。
调账审批流程: 当操作员权限不足时, 不足以达到所需的金额限制; 发送调账申请给上一级等待审批经过; 再调用调账执行。
3.1.3 依赖的外部接口
3.1.3.1 权限查询接口
权限查询接口分为当前操作员权限查询和查询具有调账权限的操作员信息两个接口:
查询当前操作员权限:
名称
do_queryOperEntity
接口路径:
com.ailk.openbilling.service.imsinner.IImsReverseService. do_queryOperEntity ()
原型
public Do_queryOperEntityResponse do_queryOperEntity(SOperInfo SOper, SQueryOperEntityReq SQueryOperEntityReq)
功能
查询当前操作员权限信息
参数
字段类型
字段名称
说明
SOperInfo
SOper
工单入参
SQueryOperEntityReq
SQueryOperEntityReq
权限查询参数
返回值
字段类型
说明
Do_queryOperEntityResponse
返回值结构体
备注
该接口能够根据当前操作员的ID查询出操作员所具有的调账权限
SOperInfo:
字段类型
字段名
说明
String
so_nbr
交易流水号
Integer
busi_code
API业务编码
Short
so_mode
受理一级区划编码
String
so_date
受理二级区划编码
Short
charge_flag
受理渠道类型
Short
isnormal
受理渠道
String
outer_cust_id
外部客户标识
Long
cust_id
客户标识
String
outer_acct_id
外部账号标识
Long
acct_id
账号标识
Long
user_id
用户id
String
phone_id
电话号码
Long
op_id
操作员id
short
prov_code
省市编码
Short
region_code
地区编码
Short
county_code
国家编码
Integer
org_id
备用字段
String
rso_nbr
备用字段
Short
is_monitor
备用字段
String
remark
备注信息
Short
step_id
备用字段
String
source_system
对外围系统的定义
Short
notify_flag
告警标志
String
tenant_id
租户id
SQueryOperEntityReq:
字段类型
字段名
说明
String
opId
操作员标识
String
orgId
组织标识
String
acceptStaffId
受理员工号
Do_queryOperEntityResponse:
字段类型
字段名
说明
List<String>
entityIds
操作员的权限信息
查询具有调账权限的操作员信息:
名称
do_queryOperByEntityIds
接口路径:
com.ailk.openbilling.service.imsinner.IImsReverseService. do_queryOperByEntityIds ()
原型
public Do_queryOperByEntityIdsResponse do_queryOperByEntityIds(SOperInfo SOper, SQueryOperByEntityIdsReq SQueryOperByEntityIdsReq)
功能
查询具有调账权限的操作员信息
参数
字段类型
字段名称
说明
SOperInfo
SOper
工单入参
SQueryOperByEntityIdsReq
SQueryOperByEntityIdsReq
权限查询参数
返回值
字段类型
说明
Do_queryOperByEntityIdsResponse
返回值结构体
备注
该接口能够根据需要的权限信息查询具有该权限的操作员信息
SQueryOperByEntityIdsReq:
字段类型
字段名
说明
List<String>
entityIds
需要查询的权限信息
String
opId
操作员标识
String
orgId
组织标识
String
acceptStaffId
受理员工号
Do_queryOperByEntityIdsResponse:
字段类型
字段名
说明
List<OpInfo>
operInfoList
需要查询的权限信息
OpInfo:
字段类型
字段名
说明
String
opId
操作员标识
String
operatorId
操作员编码
String
staffId
序列号
String
loginName
操作员工号
String
custOpId
客服员工编号
String
passWord
登录密码
String
securityLevel
密码安全级别
String
allowUpdateFlag
是否允许修改密码
String
effectDate
账号生效时间
String
expireDate
账号失效时间
String
tryTimes
失败登录尝试次数
String
lockFlag
账号锁定状态
String
pWDEffectDate
密码生效时间
String
chgPWDAlarmDays
密码过期提前通知天数
String
pWDUpdateAlarm
密码修改提醒标示
String
isAdmin
是否是超级管理员
String
orgId
操作员组织
String
parentOrdId
操作员上级组织
String
regionCode
操作员地市
String
defaultSys
操作员状态
String
staffName
操作员默认系统
String
orgName
员工姓名
String
status
状态
String
tenantId
租户id
3.1.3.2 一次性费用接口
名称
用户级优惠
Sdl文件
onetimecharge_def.sdl, onetimecharge.sdl
原型
int32 otc_calc(
in MOnetimechargeDef::SOtcCalc sOtcCalc,
out MOnetimechargeDef::SOtcConfirm sOtcConfirm);
功能
用户级优惠月帐计算
上行参数
字段类型
字段名称
说明
MOnetimechargeDef::SOtcCalc
sOtcCalc
下行参数
字段类型
字段名称
说明
MOnetimechargeDef::SOtcConfirm
sOtcConfirm
错误码
cErrorMsg: 错误信息返回值
SOtcCalc:
字段类型
字段名
说明
int64
cust_id
客户编号
int64
acct_id
帐户编号
int64
pay_acct_id
付费账户
int64
resource_id
设备编号
int64
otc_opt_date
一次性费用产生的时间
int64
so_nbr
工单号
int32
spec_id
业务代码
int32
pricing_plan_id
定价计划ID
int16
channel_id
渠道ID
int16
calc_type
算费类型
int16
service_type
业务类型1:recurring, 2:on demand
int32
accumulate_times
累计次数
int16
object_type
0:设备(相关客户信息全传) 1:账户( 只传cust_id,acct_id)
int16
deduct_type
扣费模式 0:非强制扣费; 1:强制扣费
int16
billing_type
0:预付费 1: 后付费
int16
event_type
算费事件: =0 正式算费冻结接口( 累计量冻结、 费用冻结) ; =1 算费累计接口( 计算费用、 更新累计量)
string
phone_id
手机号
string
topup_phone_id
充值手机号;充值的号码, 即被充入资金的号码
SOtcFeeList
otc_fee_list
算费接口费用列表
ExtParaMap
ext_para
扩展参数
SOtcConfirm:
字段类型
字段名
说明
int64
cust_id
客户编号
int64
acct_id
帐户编号
int64
pay_acct_id
付费账户
int64
resource_id
设备编号
int64
otc_opt_date
一次性费用产生的时间
int64
so_nbr
工单号
int32
spec_id
业务代码
int32
pricing_plan_id
定价计划ID
int16
channel_id
渠道ID
int16
calc_type
算费类型
int16
service_type
业务类型1:recurring, 2:on demand
int32
accumulate_times
累计次数
int16
object_type
0:设备(相关客户信息全传) 1:账户( 只传cust_id,acct_id)
int16
deduct_type
扣费模式 0:非强制扣费; 1:强制扣费
int16
billing_type
0:预付费 1: 后付费
int16
event_type
算费事件: =0 正式算费冻结接口( 累计量冻结、 费用冻结) ; =1 算费累计接口( 计算费用、 更新累计量)
string
phone_id
手机号
string
topup_phone_id
充值手机号;充值的号码, 即被充入资金的号码
int32
result_value
计算费用各种返回情况: =1 无资费; =2 正常算费成功;
=3 预付费业务扣费失败( 即余额不足, 含分帐帐户帐单)
SOtcUserInfo
otc_user_info
一次性费用资料信息
SOtcFeeLogList
otc_fee_log_list
算费接口费用日志列表
SOtcTaxFeeList
otc_tax_fee_list
税费列表
SAccumulateLogList
accumulate_log_list
累计量日志列表
SBillRoundDetailList
round_detail_list
税费遗失信息
ExtParaMap
ext_para
扩展参数
MAbmInterfaceBillingDef::
SAbmSessionInfoList
session_list
session编号
MAbmInterfaceBillingDef::
SAbmSessionInfoList
reguide_session_list
一次性费用扣费中的代付、 累计量会话编号
MAbmInterfaceBillingDef::
SAccumulateList
accumulate_list
累计量记录
MAbmInterfaceBillingDef::
SPayFeeLogList
pay_fee_log_list
代付日志信息
MAbmInterfaceBillingDef::
SBudgetInfoList
budget_list
预算信息
MAbmInterfaceBillingDef::
SDeductBalanceList
deduct_balance_list
剩余资金
MAbmInterface::
SDeductBillList
bill_list
历史欠费
MAbmInterface::
SPocketDeductLogList
pocket_deduct_list
帐本冲销日志
MAbmInterface::
SCreditDeductLogList
credit_deduct_list
信用度冲销日志
MAbmInterface::
SBudgetDeductLogList
budget_deduct_list
预算冲销日志
3.1.3.3 冲销接口
名称
deduct
接口路径:
com.ailk.openbilling.topuppayment.business.payment.AbmMgnt.deduct ()
原型
public int deduct(WriteoffRet writeoffRet, Holder<List<SCredit>> listCredit,
Holder<List<SPocketDeductLog>> listPocketDeductLog)
功能
进行账单的冲销
参数
字段类型
字段名称
说明
WriteoffRet
writeoffRet
冲销参数
Holder<List<SCredit>>
listCredit
信用度信息
Holder<List<SPocketDeductLog>>
listPocketDeductLog
冲销记录
返回值
字段类型
说明
int
返回值( 1冲销成功)
备注
该接口能够根据需要的权限信息查询具有该权限的操作员信息
WriteoffRet:
字段类型
字段名
说明
List<DeductBill>
cDeductBillList
冲销账单信息
CaPocket
cAPocket
账本信息
List<Notification>
notificationList
告警参数
Long
acctId
账户编号
Integer
billDate
账单日期
Integer
notificationId
告警编号
SCredit:
字段类型
字段名
说明
int64
acct_id;
帐户编号
int64
serv_id;
用户编号
int64
asset_id;
资产编号
int64
amount;
信用度值
int64
freeze_fee;
冻结费用
int64
deduct_fee;
当前冲销额度
int64
his_deduct_fee;
历史冲销费用
int64
real_deduct_fee;
实时冲销费用
int64
risk_deduct_fee;
欠控冲销费用
int64
risk_freeze_fee;
欠控冻结费用
int64
valid_date;
生效期
int64
expire_date;
失效期
int64
last_update_time;
上次更新时间
int32
risk_freeze_time;
欠控冻结时间
int32
risk_deduct_time;
欠控冲销时间
int32
item_code;
信用度科目编号
int32
freeze_time;
冻结时间
int32
measure_id;
货币编号
int64
tenant_id;
mvno标记
int16
billing_type;
计费类型(0
int16
credit_flag;
是否为临时信用度,0-否
int16
hierarche_type;
层级标志
SPocketDeductLog:
字段类型
字段名
说明
int64
acct_id;
帐户编号
int64
serv_id;
用户编号(账本)
int64
bill_object_id;
使用对象(账单)
int64
bill_id;
帐单编号
int64
asset_id;
资产编号
int64
product_id;
产品编号(账单)
int64
woff_fee;
本次冲销费用
int64
woff_tax_fee;
本次冲销税费
int64
bill_begin_date;
账单起始时间
int32
pocket_item_code;
账本科目编号
int32
pocketmeas_id;
资金货币编号
int32
bill_item_code;
账单科目代码
int64
tenant_id;
mvno标记
int16
bill_object_type;
使用对象类型(账单)
int16
bill_billing_type;
付费类型(账单)
int16
confirm_bill_force;
/费用强制转移: 0 非强制, 1 强制
float
exchange_rate;
汇率
创立申请单接口
名称
DoCreateTicket
接口路径:
com.ailk.openbilling.service.imsinner.IImsReverseService.DoCreateTicket()
原型
public DoCreateTicketResponse DoCreateTicket(SOperInfo soperinfo, DoCreateTicketReq docreateticketreq);
功能
向CRM提交申请单
参数
字段类型
字段名称
说明
SOperInfo
soperinfo
工单公共头
DoCreateTicketReq
docreateticketreq
申请单明细
返回值
字段类型
说明
DoCreateTicketResponse
返回值
备注
该接口能够向CRM提交调账申请单
DoCreateTicketReq:
字段类型
字段名
说明
AdjustId
String
调账id 调账的唯一编码 代码由3部分组成: 调帐时间(YYYYMMDD)+15位帐户编号(不足前补0)+15位的业务工单号(不足前补0)
0701+500+ 833=833
OperateWay
Short
操作方式 1、 初次提交, 2、 修改后提交
AdjustAmount
Double
调账金额, trouble ticket将根据该参数值路由到不同审批金额权限的工作组。
AdjustDesc
String
调账描述 本次调账信息的文本化的描述, trouble ticket直接存储到工单内容中。 Billing测示例: 调帐原因代码:0002;调帐总金额:200.0;调帐备注:费用错误;
AdjustDetailUrl
String
调账详情界面url 在Trouble ticket工单详情界面上, 可经过点击调账id后面的按钮, 打开billing提供的详细的结构化界面, Billing提供的url会自动拼装一些页面必要参数, 经过URL直接传进来。
OperatorId
String
操作员id。sec.sec_operator.operator_id
AcceptStaffId
String
操作员id
TenantId
String
租户
DoCreateTicketResponse:
字段类型
字段名
说明
ShowSerialNo
String
工单流水号
3.1.4 算税接口
名称
taxFeeCalculate
接口路径:
com.ailk.openbilling.topuppayment.consume.SalInterface.taxFeeCalculate()
原型
public STaxOut taxFeeCalculate(STaxIn staxIn)
功能
算税
参数
字段类型
字段名称
说明
STaxIn
staxIn
算税入参
返回值
字段类型
说明
STaxOut
返回值
备注
对费用科目进行算税
STaxIn:
字段名
字段类型
说明
billList
CsdlArrayList<SBillInfo>
SBillInfo结构:
billId:标识唯一性 sbill:caBill结构字段
flag:0正常账单 rcbilldetaillist:caBillItem结构
STaxOut
字段名
字段类型
说明
billList
CsdlArrayList<SBillInfo>
SBillInfo结构:
rcbilldetaillist:caBillItem结构(算税后的费用科目)
taxbilldetaillist:caBillTax结构(算出来的税)
3.1.5 对外提供的接口
3.1.5.1 调账对外接口
com.ailk.openbilling.topuppayment.service.billAadjust.BillAdjustService.adjustBill(AdjustBillIn adjustIn, CommonParam commonParam);
AdjustBillIn:
字段类型
字段名
说明
Long
acctId
账户编号
String
adjustType
调整方式,有两位,第一位是上调的方式,第二位是下调的方式,0表示调一次性费用1表示调账单, 不需要传入
short
billFlag
0调整历时账单1调整实时账单,默认0
Integer
measureId
货币单位
List<AdjustBillDtl>
listAdjustDtl
调整明细
String
adjReason
调整原因,调整备注
Integer
adjCode
调整原因Code
Integer
synAssetFlag
是否需要校验db, mdb一致性, 默认不校验
Short
needCreditNote
0不需要生成Credit Note 1需要生成Credit Note
Short
nextBill
下账期标志位, 当为1的时候则是调到外部费用, 只有下调的时候能够传入
Long
resourceId
用户id
double
amount
无账单调账金额
Boolean
checkPermission
是否需要校验权限, 默认是true, false的时候不校验
AdjustBillDtl:
字段类型
字段名
说明
Long
billNo
账单编号
String
invoiceNumber
Invoice Number
Integer
adjCode
调整原因Code
Integer
adjustFee
调整金额
Integer
itemCode
调整科目
Integer
billMonth
账单月
调账审批反馈接口
com.ailk.openbilling.topuppayment.service.billAdjust.BillAdjustService. dealApproveResponse (CommonParam commonParam,ApproveResult approveResult);
ApproveResult:
字段名
字段类型
说明
adjustId
String
调账的唯一编码
代码由3部分组成: 调帐时间(YYYYMMDD)+15位帐户编号(不足前补0)+15位的业务工单号(不足前补0)
approveResult
Short
1审批经过进行调账; 2、 审批不经过并退回修改; 3、 取消调账单。
approveResultDesc
String
审批附加信息
operatorId
Long
调整科目
模块程序构建结构图
4 子系统功能设计
4.1 账单调整子系统功能设计
数据模型设计
逻辑实体模型
模型上需要增加权限申请记录表和调账审批明细表用于对调账操作进行申请和审批。
使用现有表CA_APPLIED_RATE表用以记录调账信息。
在SYS_ENUM_DATA中添加基础数据用来记录权限的等级划分。
4.1.1.1.1 实体模型
调账审批模型:
CA_APPROVAL_DTL
_DTL
CA_APPROVAL
调账规则模型:
BI_BUSI_AVAILABLE
BI_BUSI_PLAN
PM_COMPOSITE_RULE_PRICE
PM_PROD_OFFER_PRICE_RULE
PM_ADJUST_RULE
表结构( 物理设计)
表汇总
序号
子系统
表名
中文名称和简单描述
1
调账审批
CA_APPROVAL
权限申请记录表
2
CA_APPROVAL_DTL
申请审批明细表
3
调账执行
CA_BUSI_REC_BILL
调账扩展工单表
4
PM_ADJUST_RULE
调账规则表
5
PM_REASON_CODE
调账原因表
6
账单查询
CA_BILL
账单表
7
CA_BILL_ITEM
账单明细表
8
CA_BILL_PROD
产品话费周期表
权限申请记录表CA_APPROVAL
权限申请记录表用来记录操作员提交的申请单, 按照创立时间进行分表, 主键为流水号。
字段名
数据类型
字段简单描述
so_nbr
Long
流水号
create_date
Date
创立时间
busi_spec_id
Integer
业务类型
acct_id
Long
账户编号
reason
String
申请原因
remark
String
审批备注
deal_flag
short
处理状态0未审批1审批经过2审批不经过
deal_date
Date
审批日期
deal_amount
Long
涉及的总金额
measure_id
Integer
货币单位
approve_opId
Long
审批操作员编号
approve_orgId
Integer
审批操作员组织
op_I名称修改一下
d
Long
申请操作员编号
org_Id
Integer
申请操作员组织
tenant_id
Long
租户id
ext1
String
扩展字段1, 调账这里是billFlag, 0调整历史账单1调整实时账单
ext2
String
扩展字段2, 调账这里用于区分是否需要生成Credit Note,0不生成1要生成
ext3
String
扩展字段3, 调账这里是是否调整到下账期0否1调整到下账期是否调整到下账期
申请审批明细表CA_APPROVAL_ DTL
审批明细表用以记录申请单需要操作的业务的详细信息, 按照创立时间进行分表, 主键是流水号和创立时间还有科目。
字段名
数据类型
字段简单描述
so_nbr
Long
流水号
create_date
Date
创立时间
busi_spec_id
Integer
业务类型
ext1
String
扩展字段1, 这里是Invoice_no
ext2
String
billNo|adjust code|resourceId|base invoice amount扩展字段2,这里是bill_no
amount
Long
设计的资产额度
measure_id
Integer
货币单位
item_code
I
展开阅读全文