注意:根据业务需求:字段是否必填、长度、类型可自行调整
数据库表设计:
发票主表
CREATE TABLE `invoice` (
`id` bigint(20) NOT NULL COMMENT '主键',
`code` varchar(100) DEFAULT NULL COMMENT '发票代码',
`number` varchar(100) DEFAULT NULL COMMENT '发票号码',
`date` date DEFAULT NULL COMMENT '开票日期',
`buyer_name` varchar(255) DEFAULT NULL COMMENT '购方抬头',
`buyer_tax_code` varchar(255) DEFAULT NULL COMMENT '购方税号',
`buyer_address_phone` varchar(500) DEFAULT NULL COMMENT '购方地址电话',
`buyer_bank_account` varchar(255) DEFAULT NULL COMMENT '购方银行账号',
`seller_name` varchar(255) DEFAULT NULL COMMENT '销方名称',
`seller_tax_code` varchar(255) DEFAULT NULL COMMENT '销方税号',
`seller_address_phone` varchar(500) DEFAULT NULL COMMENT '销方地址电话',
`seller_bank_account` varchar(255) DEFAULT NULL COMMENT '销方银行账号',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`machine_no` varchar(255) DEFAULT NULL COMMENT '机器编码',
`type` varchar(20) DEFAULT NULL COMMENT '票种类型\r\n01:增值税专用发票,\r\n02:货运运输业增值税专用发票,\r\n03:机动车销售统一发票,\r\n04:增值税普通发票,\r\n08:增值税电子专用发票(含全电,全电仅新版接口支持),\r\n10:增值税电子普通发票(含全电,全电仅新版接口支持),\r\n11:增值税普通发票(卷式),\r\n14:增值税电子(通行费)发票,\r\n15:二手车销售统一发票,\r\n32:深圳区块链发票,\r\n102:通用机打电子发票',
`check_code` varchar(255) DEFAULT NULL COMMENT '校验码',
`is_abandoned` varchar(5) DEFAULT NULL COMMENT '是否作废(红冲)是否作废(红冲)\r\nY:已作废,N:未作废,H:红冲,HP:部分红冲,HF:全额红冲',
`has_seller_list` varchar(5) DEFAULT NULL COMMENT '是否有销货清单\r\nY: 有清单 N:无清单',
`seller_list_title` varchar(255) DEFAULT NULL COMMENT '销货清单标题',
`seller_list_tax` bigint(20) DEFAULT NULL COMMENT '销货清单税额(分)',
`amount_without_tax` bigint(20) DEFAULT NULL COMMENT '不含税金额(分)',
`tax_amount` bigint(20) DEFAULT NULL COMMENT '税额(分)',
`amount_with_tax` bigint(20) DEFAULT NULL COMMENT '含税金额(分)',
`tax_bureau` varchar(255) DEFAULT NULL COMMENT '所属税局',
`receiptor` varchar(40) DEFAULT NULL COMMENT '收款人',
`issuer` varchar(40) DEFAULT NULL COMMENT '开票人',
`reviewer` varchar(40) DEFAULT NULL COMMENT '复核人',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='增值税发票信息';
发票明细表
CREATE TABLE `invoice_item` (
`id` bigint(20) NOT NULL COMMENT '主键',
`invoice_id` bigint(20) DEFAULT NULL COMMENT '发票id',
`line_no` int(5) DEFAULT NULL COMMENT '行号',
`name` varchar(255) DEFAULT NULL COMMENT '名称',
`spec` varchar(255) DEFAULT NULL COMMENT '规格',
`unit` varchar(20) DEFAULT NULL COMMENT '单位',
`quantity` varchar(40) DEFAULT NULL COMMENT '数量',
`unit_price` bigint(20) DEFAULT NULL COMMENT '单价(分)',
`amount_without_tax` bigint(20) DEFAULT NULL COMMENT '不含税金额(分)',
`tax_rate` varchar(10) DEFAULT NULL COMMENT '税率',
`tax_amount` bigint(20) DEFAULT NULL COMMENT '税额(分)',
`tax_classify_code` varchar(255) DEFAULT NULL COMMENT '税收分类编码',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='增值税发票项目明细';
java实体
发票表
/**
* 增值税发票信息
*/
public class Invoice {
/**
* 主键
*/
private Long id;
/**
* 发票代码
*/
private String code;
/**
* 发票号码
*/
private String number;
/**
* 开票日期
*/
private Date date;
/**
* 购方抬头
*/
private String buyerName;
/**
* 购方税号
*/
private String buyerTaxCode;
/**
* 购方地址电话
*/
private String buyerAddressPhone;
/**
* 购方银行账号
*/
private String buyerBankAccount;
/**
* 销方名称
*/
private String sellerName;
/**
* 销方税号
*/
private String sellerTaxCode;
/**
* 销方地址电话
*/
private String sellerAddressPhone;
/**
* 销方银行账号
*/
private String sellerBankAccount;
/**
* 备注
*/
private String remark;
/**
* 机器编码
*/
private String machineNo;
/**
* 票种类型
* 01:增值税专用发票,
* 02:货运运输业增值税专用发票,
* 03:机动车销售统一发票,
* 04:增值税普通发票,
* 08:增值税电子专用发票(含全电,全电仅新版接口支持),
* 10:增值税电子普通发票(含全电,全电仅新版接口支持),
* 11:增值税普通发票(卷式),
* 14:增值税电子(通行费)发票,
* 15:二手车销售统一发票,
* 32:深圳区块链发票,
* 102:通用机打电子发票
*/
private String type;
/**
* 校验码
*/
private String checkCode;
/**
* 是否作废(红冲)
* Y:已作废
* N:未作废
* H:红冲
* HP:部分红冲
* HF:全额红冲
*/
private String isAbandoned;
/**
* 是否有销货清单
* Y:有清单
* N:无清单
*/
private String hasSellerList;
/**
* 销货清单标题
*/
private String sellerListTitle;
/**
* 销货清单税额(分)
*/
private Long sellerListTax;
/**
* 不含税金额(分)
*/
private Long amountWithoutTax;
/**
* 税额(分)
*/
private Long taxAmount;
/**
* 含税金额(分)
*/
private Long amountWithTax;
/**
* 所属税局
*/
private String taxBureau;
/**
* 收款人
*/
private String receiptor;
/**
* 开票人
*/
private String issuer;
/**
* 复核人
*/
private String reviewer;
// Getters and Setters 略
}
发票明细表
/**
* 增值税发票项目明细
*/
public class InvoiceItem {
/**
* 主键
*/
private Long id;
/**
* 发票id
*/
private Long invoiceId;
/**
* 行号
*/
private Integer lineNo;
/**
* 名称
*/
private String name;
/**
* 规格
*/
private String spec;
/**
* 单位
*/
private String unit;
/**
* 数量
*/
private String quantity;
/**
* 单价(分)
*/
private Long unitPrice;
/**
* 不含税金额(分)
*/
private Long amountWithoutTax;
/**
* 税率
*/
private String taxRate;
/**
* 税额(分)
*/
private Long taxAmount;
/**
* 税收分类编码
*/
private String taxClassifyCode;
// Getters and Setters 略
}