package cn.superdesk.uniorder.dto.vo.invoice.supplier;

import cn.superdesk.uniorder.dto.vo.organisation.SysPlatformExtInvoiceVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @Description: Java类作用描述
 * @Author: linjinyu 重构
 * @CreateDate: 2021/11/30 下午1:04
 * @UpdateUser: linjinyu
 * @UpdateDate: 2021/11/30 下午1:04
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
@Data
public class InvoiceApplySupplierDetailDimGoodsVo implements Serializable {

	private static final long serialVersionUID = -1956139928027439782L;

	@ApiModelProperty("发票申请Id invoiceApplyId")
	private Long   id;
	@ApiModelProperty("开票申请编号 // 修改标记 20211201")
	private String invoiceApplySn;


	@ApiModelProperty("发票抬头 老方式 - 新方式为 sysPlatformExtInvoiceId invoice_bank_info.id")
	private String invoiceTitle;
//	@ApiModelProperty("供应商信息扩展发票信息.id sysEnterpriseExtInvoiceId 如果等于0 老方式 显示 invoiceTitle 如果大于0 显示 sysSupplierExtInvoiceSnapshotEntity")
//	private Long                       sysSupplierExtInvoiceId;
//	@ApiModelProperty("供应商信息扩展发票信息快照 JSON 字符串")
//	private String                     sysSupplierExtInvoiceSnapshot;
//	@ApiModelProperty("供应商信息扩展发票信息快照 对象")
//	private SysSupplierExtInvoiceParam sysSupplierExtInvoiceSnapshotEntity;

	@ApiModelProperty("购买方信息扩展发票信息.id sysPlatformExtInvoiceId 如果等于0 老方式 显示 invoiceTitle 如果大于0 显示 sysPlatformExtInvoiceSnapshotEntity")
	private Long                    sysPlatformExtInvoiceId;
	@ApiModelProperty("购买方信息扩展发票信息快照 JSON 字符串")
	private String                  sysPlatformExtInvoiceSnapshot;
	@ApiModelProperty("购买方信息扩展发票信息快照 对象")
	private SysPlatformExtInvoiceVo sysPlatformExtInvoiceSnapshotEntity;


	@ApiModelProperty("发票号")
	private String  invoiceNumber;
	@ApiModelProperty("发票种类")
	private Integer invoiceType;
	@ApiModelProperty("发票种类")
	private String  invoiceTypeName;


	@ApiModelProperty("所属供应商/商户Id")
	private Long   saleId;
	@ApiModelProperty("所属供应商/商户名称")
	private String saleName;

	/****************************************** 发票申请部分 start ******************************************/

	@ApiModelProperty(value = "发票申请部分 - 开票申请金额:商品或流水累加 - 等于 goodsCostAmount")
	private BigDecimal invoiceApplyAmount;

	@ApiModelProperty("发票申请部分-发票申请人Id-后台帐号")
	private Long   applyUserId;
	@ApiModelProperty("发票申请部分-发票申请人名称-后台帐号")
	private String applyUserName;
	@ApiModelProperty("发票申请部分-发票申请时间")
	private Date   applyTime;

	/****************************************** 发票申请审核部分 start ******************************************/

	@ApiModelProperty("发票申请审核部分-审核人Id-后台帐号")
	private Long    auditUserId;
	@ApiModelProperty("发票申请审核部分-审核人名称-后台帐号")
	private String  auditUserName;
	@ApiModelProperty("发票申请审核部分-审核时间")
	private Date    auditTime;
	@ApiModelProperty("发票申请审核部分-审核状态 1-未审核;2-已同意;3-已拒绝;")
	private Integer auditStatus;
	@ApiModelProperty("发票申请审核部分-审核状态 1-未审核;2-已同意;3-已拒绝;数据库没记录,通过程序定义的附加产生")
	private String  auditStatusName;

	/****************************************** 开票进展部分 start ******************************************/

	@ApiModelProperty("开票进展部分(超级前台(适用)|侨城汇(适用))-开票进展状态:0-待开票(原:未邮寄);1-已邮寄(弃用);2-已作废;10-开票中;11-已开票;12-已收票;原来的定义:发票状态 0未邮寄 1已邮寄 2已作废")
	private Integer invoiceStatus;
	@ApiModelProperty("开票进展部分(超级前台(适用)|侨城汇(适用))-开票进展状态:0-待开票;2-已作废;20-待寄票;30-待收票;40-待付款;99-已完成;")
	private String  invoiceProgressingStatusName;
	@ApiModelProperty("开票进展部分(超级前台(适用)|侨城汇(适用))-最后更新人-sysUserId")
	private Long    invoiceProgressingUserId;
	@ApiModelProperty("开票进展部分(超级前台(适用)|侨城汇(适用))-最后更新人-sysUserId")
	private String  invoiceProgressingUserName;
	@ApiModelProperty("开票进展部分(超级前台(适用)|侨城汇(适用))-最后更新时间")
	private Date    invoiceProgressingTime;


	/****************************************** 开票登记部分 start ******************************************/


	@ApiModelProperty("发票登记部分-开票登记人-后台帐号")
	private Long    makeInvoiceUserId;
	@ApiModelProperty("发票登记部分-开票登记人-后台帐号")
	private String  makeInvoiceUserName;
	@ApiModelProperty("发票登记部分-开票登记时间")
	private Date    makeInvoiceTime;
	@ApiModelProperty("发票登记部分-发票登记状态:0-未登记;1-已登记;2-重新开票;")
	private Integer makeInvoiceStatus;
	@ApiModelProperty("发票登记部分-发票登记状态:0-未登记;1-已登记;2-重新开票;数据库没记录,通过程序定义的附加产生")
	private String  makeInvoiceStatusName;

	/****************************************** 寄票登记部分 start ******************************************/

	@ApiModelProperty("寄票登记部分-寄票登记人-后台帐号")
	private Long    mailTickUserId;
	@ApiModelProperty("寄票登记部分(超级前台(适用)|侨城汇(适用))-寄票登记人名称-后台帐号") // 标记 数据库现在好像是没有
	private String  mailTickUserName;
	@ApiModelProperty("寄票登记部分-寄票时间")
	private Date    mailTickTime;
	@ApiModelProperty("寄票登记部分-寄票状态:0-未寄票;1-已寄票;")
	private Integer mailTickStatus;
	@ApiModelProperty("寄票登记部分-寄票状态:0-未寄票;1-已寄票;数据库没记录,通过程序定义的附加产生")
	private String  mailTickStatusName;

	@ApiModelProperty("寄票登记部分-快递公司Id")
	private Long   expressCompanyId;
	@ApiModelProperty("寄票登记部分-快递公司名称")
	private String expressCompanyName;
	@ApiModelProperty("寄票登记部分-快递单号")
	private String expressNo;

	/****************************************** 收票登记部分 start ******************************************/

	@ApiModelProperty(value = "收票登记部分 - 最后更新人 - sysUserId")
	private Long    receiveInvoiceUserId;
	@ApiModelProperty(value = "收票登记部分 - 最后更新人 - sysUserId")
	private String  receiveInvoiceUserName;
	@ApiModelProperty(value = "收票登记部分 - 最后更新时间")
	private Date    receiveInvoiceTime;
	@ApiModelProperty(value = "收票登记部分 - 收票状态:0-未收票;1-已收票;")
	private Integer receiveInvoiceStatus;
	@ApiModelProperty(value = "收票登记部分 - 收票状态:0-未收票;1-已收票;")
	private String  receiveInvoiceStatusName;

	/****************************************** 付款登记部分 start ******************************************/

	@ApiModelProperty("付款(结清)登记部分登记部分(超级前台(适用)|侨城汇(适用))-付款状态:0-待付款;1-部分付款;2-已付款;")
	private Integer payoffAccountStatus;
	@ApiModelProperty("付款(结清)登记部分(超级前台(适用)|侨城汇(适用))-付款状态:0-待付款;1-部分付款;2-已付款;数据库没记录,通过程序定义的附加产生")
	private String  payoffAccountStatusName;
	@ApiModelProperty("付款(结清)登记部分(超级前台(适用)|侨城汇(适用))-付款登记方式记录:0-初始;10-手动;11-流水;")
	private Integer payoffAccountModeRecord;
	@ApiModelProperty("付款(结清)登记部分(超级前台(适用)|侨城汇(适用))-最后更新人-sysUserId")
	private Long    payoffAccountUserId;
	@ApiModelProperty("付款(结清)登记部分(超级前台(适用)|侨城汇(适用))-最后更新人-sysUserId")
	private String  payoffAccountUserName;
	@ApiModelProperty("付款(结清)登记部分(超级前台(适用)|侨城汇(适用))-最后更新时间")
	private Date    payoffAccountTime;


	@ApiModelProperty(value = "绑定附件 upload_files.uid")
	private String attachmentUploadFilesUids;


	@ApiModelProperty("发票税率 外键 表.invoice_tax_rate.id(要查证)-供应商结算2.0")
	private String taxRate;

	@ApiModelProperty("备注")
	private String remark;

	@ApiModelProperty("统计部分-对账单数量")
	private Integer    accountingOrderQuantity;
	@ApiModelProperty("统计部分-订单数量")
	private Integer    orderQuantity;
	@ApiModelProperty("统计部分-订单金额")
	private BigDecimal orderAmount;
	@ApiModelProperty("统计部分-订单商品item数量累加")
	private Integer    goodsQuantity;
	@ApiModelProperty("统计部分-订单商品item的数量累加")
	private Integer    goodsItemQuantity;
	@ApiModelProperty("统计部分-商品销售金额(统一订单)")
	private BigDecimal goodsAmount;
	@ApiModelProperty("统计部分-商品成本金额(统一订单)")
	private BigDecimal goodsCostAmount;

	@ApiModelProperty("商品")
	private List<InvoiceApplySupplierDetailDimGoodsItemVo> goods;

}
