一个简单的申请发票的需求实现(java web项目)

1、表设计

用户申请开发票需求,最少可以设计如下3张表
1、订单信息表,主要字段如下

字段注释
trade_number交易流水号,订单号
amount交易金额
create_time订单创建时间
uid用户id

2、申请记录表,主要字段如下

字段注释
uid用户id
apply_time申请时间
trade_id订单id
invoice_id发票信息id
state审核状态,要经过审核才能开票
comment审核备注,便于在不通过的时候写原因,然后用户可看

3、发票信息表,主要字段如下

字段注释
uid用户id
type开票种类,电子票、专票
taxNum纳税人识别号

…………公司地址、联系电话等等,就是发票需要的一些信息


2、业务流程

1、用户前端看到自己的交易记录(展示订单信息表信息
2、选取交易记录—>填写发票信息—>提交(申请记录表、发票信息表加一条数据),也可以引用之前填写过的发票信息表记录,此时,只是申请记录表和发票信息表关联一下即可。
3、后台审核(修改申请记录表状态
(1)审核通过,开发票
(2)不通过,让用户重新填写
4、用户查看开票记录,如果有不通过的,点击修改,再到后台审核(状态又改为待审核
5、重复3-4步

3、注意事项

注意金额换算,如果交易记录是从第三方接口取到的,比如我这次做的有部分就是速卖通平台的交易记录,是以分为单位存储的,所以计算时务必注意,统一转换成人民币元。

4、汇率换算技巧

假如现有两种货币单位表示的金额,38美元,20新加坡元,需要统一换算成人民币然后再求总金额。目前美元与人民币汇率是1:6.9768,而人民币与新加坡元的汇率是1:19.5735。
1、分别根据汇率求出人民币,美元:38 * (1 / (1 / 6.9768)) = 265.11839999999995,
新加坡元20 * (1 / (19.5735 / 1)) = 1.0217896645975426
2、换算后的人民币相加,结果为266.1401896645975,然后保留2位小数显示266.14。
注意千万不能先把汇率保留2位小数再换算,一定要算好之后,给用户显示时才能保留2位小数!

double dollarToCny = 38 * (1 / (1 / 6.9768));
double sgdToCny = 20 * (1 / (19.5735 / 1));
double sum = dollarToCny + sgdToCny;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值