package cn.superdesk.uniorder.dto.param.invoice.excel;

import cn.superdesk.uniorder.common.excel.model.ExcelRow;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;

import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * mark Excel import
 *
 * @Description: 导入应收账款 -新做的
 * @Author: linjinyu
 * @CreateDate: 2021/4/25 上午10:32
 * @UpdateUser: linjinyu
 * @UpdateDate: 2021/4/25 上午10:32
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
@Data
@ToString
public class InvoiceInvoicedNormalExcelRow extends ExcelRow implements Serializable {


	@ApiModelProperty("所属公司 ---- 销方名称 是要转换的 *公司主体")
	@ExcelProperty(value = "*公司主体", index = 0)
	@NotEmpty(message = "亲爱的小主^_^公司主体不能为空哦")
	private String sellerCompanyName;

	//	面上的差别就是 这个组织架构
	/****************************************** 组织架构 start ******************************************/

	@ApiModelProperty("物业公司 对映 服务之窗-集团")
	@ExcelProperty(value = "企业名称", index = 1)
	private String propertyCompanyName;
	private Long   propertyCompanyId;// 物业公司-Id-统一订单 sys_user_id ---- add
	@ApiModelProperty("外部系统 集团Id 一般是指 服务之窗 或 福利商城")
	private Long   outCliqueLeave0Id;
	@ApiModelProperty("外部系统 集团名称 一般是指 服务之窗 或 福利商城")
	private String outCliqueLeave0Name;


	@ApiModelProperty("外部系统 区域分公司Id eg: 1/2/3/4 一般是指 服务之窗 或 福利商城")
	private String outCliqueLeave14Id;
	@ExcelProperty(value = "分公司", index = 2)
	@ApiModelProperty("外部系统 区域分公司名称 eg: 区域/分公司/ 一般是指 服务之窗 或 福利商城")
	private String outCliqueLeave14Name;

	@ApiModelProperty("外部系统 项目Id 一般是指 服务之窗 或 福利商城")
	private Long   outOrgId;
	@ExcelProperty(value = "项目名称", index = 3)
	@ApiModelProperty("外部系统 项目名称 一般是指 服务之窗 或 福利商城")
	private String outOrgName;


	@ApiModelProperty("项目(财务口) 项目企业 对映 服务之窗-企业")
	@ExcelProperty(value = "项目企业", index = 4)
	private String customerProjectName;
	@ApiModelProperty("外部系统 企业Id 一般是指 服务之窗 或 福利商城")
	private Long   outVirtId;
	@ApiModelProperty("外部系统 企业名称 一般是指 服务之窗 或 福利商城")
	private String outVirtName;

	@ApiModelProperty("路径eg 0/1/1/1 中间数值均为服务之窗的数据")
	private String outPath;
	@ApiModelProperty("路径eg 集团/分公司/项目/企业 中间数值均为服务之窗的数据")
	private String outEffect;

	/****************************************** 组织架构 start ******************************************/

	/****************************************** 发票信息 start ******************************************/

	@ApiModelProperty("客户名称 ---- 购方名称 ---- 也是发票抬头(已与财务确认) ---- 也是 *开票抬头")
	@ExcelProperty(value = "*开票抬头", index = 5)
	@NotEmpty(message = "亲爱的小主^_^开票抬头不能为空哦")
	private String     purchaserCompanyName;
	@ApiModelProperty("发票种类")
	@ExcelProperty(value = "*发票种类", index = 6)
	@NotEmpty(message = "亲爱的小主^_^发票种类不能为空哦")
	private String     invoiceType;
	@ApiModelProperty("*发票号码")
	@ExcelProperty(value = "*发票号码", index = 7)
	@NotEmpty(message = "亲爱的小主^_^发票号码不能为空哦")
	private String     invoiceNumber;
	@ApiModelProperty("*开票日期")
	@ExcelProperty(value = "*开票日期", index = 8)
	@DateTimeFormat(value = "yyyy/MM/dd")
	@NotNull(message = "亲爱的小主^_^开票日期不能为空哦")
	private Date       invoicedDate;
	@ApiModelProperty("发票金额 ---- 合计金额 eg ￥3,126.11 包含税(已与财务确认) *发票金额")
	@ExcelProperty(value = "*发票金额", index = 9)
	@NotNull(message = "亲爱的小主^_^发票金额不能为空哦")
	@DecimalMin(value = "0.01", message = "亲爱的小主^_^发票金额必须大于或等于{value}")
	private BigDecimal totalAmount;
	/****************************************** 发票信息   end ******************************************/


	/****************************************** 回款信息 start ******************************************/
	@ApiModelProperty("回款日期")
	@ExcelProperty(value = "回款日期", index = 10)
	@DateTimeFormat(value = "yyyy/MM/dd")
	private Date       backCollectionTime;
	@ApiModelProperty("已回款金额")
	@ExcelProperty(value = "已回款金额", index = 11)
	private BigDecimal backCollectionAmountAlready;
	@ApiModelProperty("待回款金额")
	@ExcelProperty(value = "待回款金额", index = 12)
	private BigDecimal backCollectionAmountWaitFor;
	/****************************************** 回款信息   end ******************************************/


	@ApiModelProperty("客户经理")
	@ExcelProperty(value = "客户经理", index = 13)
	private String     customerManagerName;
	private Long       customerManagerId;// 客户经理-Id-统一订单 sys_user_id ---- add


	@ApiModelProperty("备注1(财务手工表sheet001字段) 备注")
	@ExcelProperty(value = "备注", index = 14)
	private String remark;


}
