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

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: 发票申请管理(客户结算)(商品维度)-查看详情
 * @Author: linjinyu
 * @CreateDate: 7/28/20 4:58 PM
 * @UpdateUser: linjinyu
 * @UpdateDate: 7/28/20 4:58 PM
 * @UpdateRemark:
 * @Version: 1.0
 */
@Data
public class InvoiceApplyCustomerDetailDimGoodsVo implements Serializable {

	private static final long serialVersionUID = 1L;

	private Long id;

	private Integer accountingOrderType;
	private Integer dimCreateBy;

	private String  invoiceApplySn; // 开票申请编号 // 修改标记 20211201
	private String  invoiceNumber; // 发票号
	private Integer invoiceStatus; // 发票状态 0未邮寄 1已邮寄 2已作废
	private Long    invoiceType;
	private String  invoiceTitle; // 发票抬头

	private String taxRate; // 外键 表.invoice_tax_rate.id

	/****************************************** 申请部分 start ******************************************/
	private Long   applyUserId; // 申请人Id
	private String applyUserName; // 申请人
	private Date   applyTime; // 申请时间

	/****************************************** 审核部分 start ******************************************/
	// 审核人Id
	private Long    auditUserId;
	// 审核人
	private String  auditUserName;
	// 审核状态 未审核1 已同意2 已拒绝3
	// 审核时间
	private Date    auditTime;
	private Integer auditStatus;
	// 数据库没记录
	private String  auditStatusName;


	/****************************************** 开票登记部分 start ******************************************/
	// 开票人Id
	private Long    makeInvoiceUserId;
	// 开票人
	private String  makeInvoiceUserName;
	// 开票时间
	private Date    makeInvoiceTime;
	// 开票状态 0未开票 1 已开票
	private Integer makeInvoiceStatus;
	private String  makeInvoiceStatusName;


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

	/**
	 * 寄票登记部分-寄票登记人-后台帐号
	 */
	private Long    mailTickUserId;
	private String  mailTickUserName;
	/**
	 * 寄票登记部分-寄票时间
	 */
	private Date    mailTickTime;
	/**
	 * 寄票登记部分-寄票状态:0-未寄票;1-已寄票;
	 */
	private Integer mailTickStatus;
	private String  mailTickStatusName;

	private Long   expressCompanyId;
	private String expressCompanyName;
	private String expressNo;

	// 备注
	private String remark;
	private String remark2;//备注


	@Deprecated
	@ApiModelProperty("订单类型-订单来源渠道-弃用-mark by linjinyu at 20220516")
	private Integer serviceId;


	/**************************************** mark by linjinyu at 20220516 v2.3 start ****************************************/

	@ApiModelProperty("订单类型-订单来源-引用enum CommonServiceNoEnum")
	private String  serviceNo;
	@ApiModelProperty("订单类型-订单来源-引用enum CommonServiceNoEnum")
	private String  serviceNoName;

	@ApiModelProperty("操作来源-引用enum CommonSourceFromEnum")
	private String  sourceFrom;
	@ApiModelProperty("操作来源-引用enum CommonSourceFromEnum")
	private String  sourceFromName;

	/**************************************** mark by linjinyu at 20220516 v2.3   end ****************************************/

	/**
	 * 统一订单 项目ID
	 */
	private Long sysOrgId;
	/**
	 * 统一订单 企业ID
	 */
	private Long sysVirtId;
	/**
	 * 外部系统 项目ID 一般是指 服务之窗 或 企业福利
	 */
	private Long outOrgId;
	/**
	 * 外部系统 企业ID 一般是指 服务之窗 或 企业福利
	 */
	private Long outVirtId;

	@ApiModelProperty("开票申请金额: #公式= ∑(销售单价*商品数量)#-新添加 20210712-产品要求名为: 账单金额")
	private BigDecimal invoiceApplyAmount;
	@ApiModelProperty("减免金额")
	private BigDecimal freeAmount;
	@ApiModelProperty("实际金额(开票申请金额-减免金额)-产品要求名为: 开票申请金额-等于 发票金额")
	private BigDecimal realAmount;
	// inva.no_check_count as no_back_money, 	private BigDecimal noCheckCount;
	private BigDecimal noBackMoney;

	private Date    maxBackTime;
	private Integer backAccountStatus;// 回款状态 0未回款 1部分回款 2全部回款
	private String  backAccountStatusName;


	// 补充数据
	private List<String> accountingOrderSns;
	private List<String> outVirtNames;
	private String       accountingOrderSnsStr;
	private String       outVirtNamesStr;
	private Long         orderSnStatisticsCount;
	private BigDecimal   invoicedStatisticsCountAmount;

	// 原有的订单维度创建的用
	private List<InvoiceApplyDetailDimOrderItemVo> dzOrders;

	// 新做的商品维度创建的用
	private List<InvoiceApplyDetailDimGoodsItemV3Vo> innerOrderJoinGoodsList;

}
