package cn.superdesk.uniorder.dto.openapi.accounting.customer;

import cn.superdesk.uniorder.dto.param.accounting.score.customer.AccountingOrderScoreCustomerCreateSelectedCreditParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

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

/**
 * @Description:
 * @Author: linjinyu
 * @CreateDate: 2022-02-18 11:31:50
 * @UpdateUser: linjinyu
 * @UpdateDate: 2022-02-18 11:31:50
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
@NoArgsConstructor
@AllArgsConstructor
@Data
@ToString
public class AccountingScoreCustomerDto implements Serializable {

	@ApiModelProperty(value = "对账单-编号")
	private String accountingOrderSn;

	@ApiModelProperty(value = "对账单-渠道来源:THIRD_QCH_JC")
	private String serviceNo;
	@ApiModelProperty(value = "对账单-数据来源-积分类型id(如果是微信支付,显示0)20220218 后从int(10) 改动为 varchar(255) 为复合字段,逗号分隔")
	private String creditType;
	@ApiModelProperty(value = "对账单-数据来源-积分类型 20220218 后从varchar(64) 改动为 varchar(512) 为复合字段,逗号分隔")
	private String creditName;
	@ApiModelProperty(value = "对账单-数据来源-积分批次 20220218 后从varchar(64) 改动为 varchar(512) 为复合字段,逗号分隔")
	private String batchs;

	@ApiModelProperty(value = "统计-对账单-订单数")
	private Integer quantityOrder;
	@ApiModelProperty(value = "统计-对账单-订单商品数")
	private Integer quantityOrderGoods;
	@ApiModelProperty(value = "统计-对账单-积分流水数-产品描述-鼠标放置图标上悬浮显示内容 订单数:取明细所有流水的总条数")
	private Integer quantityOrderCredit;

	@ApiModelProperty(value = "对账单-结算金额 - 之前的 - 取该对账单中所有积分类型为非`微信支付`的结算金额总和,目前创建对账单成功时服务端默认`微信支付`流水不参与结算,其他积分类型的流水参与结算,未来由业务操作人员选择结算积分类型来计算")
	private BigDecimal accountingAmount;
	@ApiModelProperty(value = "对账单-订单金额 - 积分结算2.1 新加 取该对账单中所有流水的结算金额总和 等于 结算金额+微信金额 也称之为统计金额")
	private BigDecimal statisticsTotalAmount;
	@ApiModelProperty(value = "对账单-微信金额 - 积分结算2.1 新加 取该对账单中所有积分类型为`微信支付`的结算金额总和 也称之为不对账金额 不结算金额")
	private BigDecimal unAccountingAmount;

	@ApiModelProperty(value = "对账单 状态:0-未确认;1-已确认;-1-已取消;")
	private Integer accountingStatus;
	@ApiModelProperty(value = "发票申请-发票信息-发票类型(关联表:invoice_type.id)")
	private Integer invoiceType;
	@ApiModelProperty(value = "发票申请-发票信息-开票状态:0-未开票;1-已开票;2-部分开票;")
	private Integer invoiceStatus;
	@ApiModelProperty(value = "发票申请-发票信息-开票抬头")
	private String  invoiceCompanyName;
	@ApiModelProperty(value = "发票申请-发票信息-纳税人代码")
	private String  invoiceTaxpayersIDCode;


	@ApiModelProperty(value = "对账单-购方信息-所属企业")
	private Long   enterpriseId;
	@ApiModelProperty(value = "对账单-购方信息-用户Id")
	private Long   purchaseUserId;
	@ApiModelProperty(value = "对账单-购方信息-实名或昵称-用于显示-非登陆用")
	private String purchaseUserName;
	@ApiModelProperty(value = "对账单-购方信息-电话")
	private String purchasePhone;
	@ApiModelProperty(value = "对账单-购方信息-地址")
	private String purchaseAddress;

	@ApiModelProperty(value = "对账单-是否发邮件:0-不发;1-发;")
	private Integer isSendEmail;
	@ApiModelProperty(value = "对账单-发邮件时间")
	private Date    sendEmailTime;


	@ApiModelProperty(value = "账单周期 基于:1-发货时间;2-下单时间;3-完成时间;")
	private Integer dateType;
	@ApiModelProperty(value = "账单周期-开始时间")
	private Date    startTime;
	@ApiModelProperty(value = "账单周期-结束时间")
	private Date    endTime;


	@ApiModelProperty(value = "对账单-回款标记:0-未回款;1-部分回款;2-全部回款;")
	private Integer backAccountStatus;


	@ApiModelProperty(value = "对账单-供方信息-银行信息Id(关联表)-收款主体")
	private Long bankInfoId;


	@ApiModelProperty(value = "系统信息-创建时间")
	private Date createTime;
	@ApiModelProperty(value = "系统信息-创建人Id")
	private Long createUserId;

	@ApiModelProperty(value = "系统信息-更新时间")
	private Date updateTime;
	@ApiModelProperty(value = "系统信息-更新人Id")
	private Long updateUserId;


	@ApiModelProperty(value = "对账单-支付方式")
	private Integer payType;
	@ApiModelProperty(value = "对账单-支付状态:1-已支付;2-未支付;")
	private Integer payStatus;
	@ApiModelProperty(value = "对账单-查看二维码")
	private String  wxQrcodeImgUrl;

	@ApiModelProperty(value = "系统信息-软删除")
	private Integer deleted;

	@ApiModelProperty(value = "后台操作人员备注")
	private String remark;

	@ApiModelProperty(value = "积分类型(1-N) 结构体 List<Bean>")
	private String creditTypeStruct;

	@ApiModelProperty("结构体内均为引用值")
	private List<AccountingOrderScoreCustomerCreateSelectedCreditParam> creditSelected;

	private static final long serialVersionUID = 1L;
}
