package com.by4cloud.platformx.business.entity.invoice.vo; import lombok.Data; import java.math.BigDecimal; import java.util.List; import java.util.Map; /** * @author kdq * @version 1.0.0 * @ClassName InvoicingVo.java * @Description TODO * @createTime 2024年10月08日 11:16:00 */ @Data public class InvoicingVo {//发票开具 private Long saleCreditId; private String taxNo; //税号 private String entrustCode; //结算单号 private Integer fatherEntrustId; //父结算单id private Integer settlementPathId; //结算路径id private Integer sort; //排序 private String ledgerName; //销方名称 private String taxUserName;//登录名 private String invoiceTerminalCode;//开票终端代码 private Boolean isSplit;//是否需要拆分开具,默认不拆分 private String orgCode;//组织机构编码 private String taxDiskNo;//设备编号 private Boolean formatGenerate;//是否需要生成版式返回版式链接(true / false) private Boolean formatPushType;// 版式生成是否推送(true / false) /** * 值为(1/0 1 需要补全 0不需要补全,默认为0)是否根据客户编码,购方税号,购方名称查询客户信息补全未填写的购 * 方信息(购方税号,购方名称,购方地址电话,购方银行账号,邮箱,手机) */ private String completionCustom; /** * 开具请求类型:isAsync 0 同步 1 异步 默认同步开具(仅支持rpa) */ private String isAsync; /** * 是否返回蓝票已红冲红票信息,0否,1是,默认为0(仅支持税控发票) */ private String isReturnRedInfo; private InvoicingVoInfo data; @Data public static class InvoicingVoInfo { /** * 发票类型代码, 004:增值税专用发票;007:增值税普通发票;026:增值税电子发票;025:增值税卷式发票;028:增值税电子专用发票 * 01:全电发票(增值税专用发票) 02:全电发票(普通发票) */ private String invoiceTypeCode; /** * 数电纸质发票标志,Y:是,N:否。税控类发票开具不校验此字段;暂只支持用数电电票红冲数电纸票 */ private String paperInvoiceFlag; /** * 选择纸质发票标志为Y时,纸票类型必填。票种为 普通发票02时可传: 04 2016版增值税普通发票(二联折叠票), 052016版增值税普通发票(五联折叠票); * 票种为 增值税专用发票01可传: 1130 增值税专用发票(中文三联无金额限制版) ,1140 增值税专用发票(中文四联无金额限制版) 1160增值,税专用发票(中文六联无金额限制版) , * 1170 增值税专用发票(中文七联无金额限制版) */ private String paperInvoiceTypeCode; /** * 开票类型 0:正数发票(蓝票) 1:负数发票(红票)默认0 */ private String invoiceType; /** * 特殊票种标志, 00:普通发票;01:农产品销售;02:农产品收购;08:成品油 机动车(默认是00普通发票);16矿产品;03稀土; 全电类发票特殊票种标志:01 成品油发票; * 03:建筑服务发票;04:货物运输服务发票;05:不动产销售服务发票;06:不动产租赁服务发票;09:旅客运输发票;12:自产农产品销售; * 13:拖拉机和联合收割机;14:机动车;15:二手车;16:农产品收购;31:二手车*;24:报废产品收购;02:稀土;17:光伏收购;07:代收车船税;32:电子烟;18卷烟 */ private String invoiceSpecialMark; /** * 成品油单价过低是否确认开具标识:Y 是; N 否 为空时默认值为N (备注:专票单价过低强制开票会记入异常发票,红冲需要在电子税务局申请解除然后再红冲;普票单价过 * 低开具成功发票可以正常红冲) */ private String isConfirmIssue; /** * 税局二次确认是否继续开票,1:是;0:否;(03建筑服务发票,建筑服务发生地和销方注册地址不同时是否继续开票,24报废产品收购需要缴纳购置税的提示是否继续开具 * ),若不传值,系统默认按照“是”处理; */ private String confirmIssue; /** * 征税方式, 0:普通征税;2:差额征税(默认是0普通征税) */ private String taxationMethod; /** * 差额征税标签:01 全额开票、 02 差额开票 ;发票类型代码为01,02时且征税方式为2必填 */ private String taxationLabel; /** * 减按征税标识,01:个人出租住房;03:销售自己使用过的固定资产;05:住房租赁。默认为空,空代表无。 */ private String reducedTaxCode; /** * 0:无清单;1:带清单(专普票发票明细大于等于8行必须带清单):大于8行必须为清单票(电子票只能为非请单票)(默认是0无清单),发票类型代码为01,02时该字段无 */ private String invoiceListMark; /** * 含税标志, 0:不含税;1:含税(默认不含税) */ private String priceTaxMark; /** * 开票流水号, 唯一标志开票请求。支持数字字母下划线组合。 */ private String serialNo; /** * 发票请求流水号 */ private String orderNo; /** * 购方单位税号, invoiceTypeCode=004、028、01(增值税专用发票、增值税电子专用发票、全电发票(增值税专用发票))开具时必传 invoiceSpecialMark=16|17(农产品收购、光伏收购)开具时必传 */ private String buyerTaxNo; /** * 购方单位名称 全电为100个字符 */ private String buyerName; /** * 购方地址及电话, 增值税专用发票开具时必填,发票类型代码为01、02时该字段拆分为地址电话两个字段 */ private String buyerAddressPhone; /** * 购方开户行及账号, 增值税专用发票开具时必填,发票类型代码为01、02时该字段拆分为银行名称、账号两个字段 */ private String buyerBankAccount; /** * 开票人,税票选填,取值逻辑:如果终端有值取终端,如果没有去机构获取,如果都没有会自动获取机构下随机用户名称;数电票Web连接器选填, * 取值逻辑:taxUserName>drawer>默认开票人>终端授权开票人,如果以上四处都未取到随机获取该税号下最近一次登录的数电账号对应的开 * 票人;数电票乐企连接器必填,长度最大300字符。 */ private String drawer; /** * 复核人, 16个字符;税控开具时: 为空时,如果终端有值取终端,如果没有去机构获取,若都没有则为空!全电类开具时:此字段非必填,即发票类型代码为01,02时该字段非必填 */ private String checker; /** * 收款人, 16个字符;税控类开具时:若为空,如果终端有值取终端,如果没有去机构获取,若都没有则为空;全电类开具时:此字段非必填,即发票类型代码为01,02时该字段非必填 */ private String payee; /** *合计金额, 保留两位小数;支持价税分离 */ private BigDecimal invoiceTotalPrice; /** * 合计税额, 保留两位小数;支持价税分离 */ private BigDecimal invoiceTotalTax; /** * 价税合计, 保留两位小数;支持价税分离 */ private BigDecimal invoiceTotalPriceTax; /** * 备注 乐企长度为230个字符 */ private String remarks; /** * 红字信息表/确认单编号,仅invoiceType=1时需要传入数据税控类红票开具时,invoiceTypeCode=004、028时必须传值,传入红字信息表编号; 全电类红票开具时, * invoiceTypeCode=01、02时必须传值,传入红字确认单编号; */ private String redInfoNo; /** * 原发票代码, invoiceType=1,税控负数普票开具时必传;红票选数电票时,此项可为空。 */ private String originalInvoiceCode; /** * 原发票号码, invoiceType=1,税控负数普票开具时必传;红票选数电票时,此项可为空。 */ private String originalInvoiceNo; /** * 扣除额, taxationLabel=2,差额征税时必传。数值必须小于价税合计。 */ private BigDecimal deductibleAmount; /** * 销方地址及电话,发票类型代码为01、02时该字段拆分为地址、电话两个字段 */ private String sellerAddressPhone; /** * 销方开户行及账号,发票类型代码为01、02时不用此字段 */ private String sellerBankAccount; private Map ext;//扩展字段 /** * 第三方系统名称 */ private String systemName; /** * 第三方系统id */ private String systemId; /** * 客户邮箱 */ private String buyerEmail; /** * 抄送邮箱 */ private String emailCarbonCopy; /** * 客户电话 */ private String buyerPhone; /** * 用户账号,用于个人维度数据标记 */ private String userAccount; /** * 红冲原因(1 销货退回 2 开票有误 3 服务终止 4 销售折让)税控红冲原因:建议按实际开票情况传入红冲原因,若不传系统会自动根据情况判断并赋值;全电红冲原因:必填 */ private String redIssueReason; private String buyerBankName; private String buyerBankNumber; private String buyerAddress; private String buyerTelphone; private String redConfirmUuid; private String coalCalorificValue; //每千克煤炭发热量( 千卡 ) ,大于1000w必填 private String totalSulfurOnDryBasis; //干基全硫( % ) ,大于1000w必填 private String dryAshFreeVolatileMatter; //干煤无灰基挥发分(%) ,大于1000w必填 private List invoiceDetailsList; } @Data public static class InvoiceDetail{ private Map ext; private String goodsType; /** * 明细行号 */ private Integer goodsLineNo; /** * 对应蓝票明细行号 税控类红字发票开具时无需传值; 全电类红字发票开具时必须传值; */ private String originalInvoiceDetailNo; /** * 发票行性质, 0:正常行;1:折扣行;2:被折扣行,默认为0 */ private String invoiceLineNature; /** * 税收分类编码 */ private String goodsCode; /** * 商品编码 */ private String goodsPersonalCode; /** * 商品名称 */ private String goodsName; /** * 规格型号 */ private String goodsSpecification; /** * 计量单位 */ private String goodsUnit; /** * 金额,小数点后2位,超长自动保留两位小数 */ private BigDecimal goodsTotalPrice; /** * 商品数量 */ private BigDecimal goodsQuantity; /** * 商品单价 */ private BigDecimal goodsPrice; /** * 税率,超长自动保留三位小数 */ private Double goodsTaxRate; /** * 税额,两位小数 */ private BigDecimal goodsTotalTax; private String coalType; private String agreementTerm; } }