package cn.superdesk.uniorder.dto.vo.accounting.unified.supplier.notyet;

import cn.superdesk.uniorder.common.security.sensitive.annotion.Desensitized;
import cn.superdesk.uniorder.common.security.sensitive.constants.SensitiveTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

/**
 * @Description: 目前修改为
 * 1. 供应商 对账单 详情 导出
 * @Author: linjinyu
 * @CreateDate: 5/14/20 3:35 PM
 * @UpdateUser: linjinyu
 * @UpdateDate: 5/14/20 3:35 PM
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
@Data
public class UnifiedOrderJoinGoodsOfSupplierStatementOfAccountVo implements Serializable {

	private static final long serialVersionUID = 1964454586516073535L;

	private Long   unifiedOrderGoodsId;
	private Long   unifiedOrderId;
	private String orderSn;

	//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
	private BigDecimal orderAmount;
	private String     orderAmountFormat;
	//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
	private BigDecimal orderCostAmount;
	private String     orderCostAmountFormat;
	//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
	private BigDecimal orderTransportAmount;
	private String     orderTransportAmountFormat;

	private Long   outOrgId;
	private String outOrgName;

	private Long   purchaseVirtId;
	private String purchaseVirtName;

	@ApiModelProperty("下单人Id")
	private Long   purchaseUserId;
	@Desensitized(type = SensitiveTypeEnum.CHINESE_NAME_MODE_3)
	@ApiModelProperty("下单人姓名")
	private String purchaseUserName;
	@Desensitized(type = SensitiveTypeEnum.MOBILE_PHONE)
	@ApiModelProperty("下单人联系电话")
	private String purchasePhone;

	//"!物流名称", "!物流单号", "!运费",// add 20200819
	//	uo.express_sn,
	private String expressSn;
	//	uo.express,
	private String express;
	//	uo.express_company,
	private String expressCompany;

	private Integer orderState;
	private String  orderStateName;
	//订单完成状态 1-已完成;2-未完成;3-已取消/已作废/已删除
	private Integer completeState;



	private Long   saleId;
	private String saleName;

	@ApiModelProperty("支付方式")
	private Integer payType;
	@ApiModelProperty("支付方式名称")
	private String  payTypeName;
	@ApiModelProperty("付款状态")
	private Integer payState;
	@ApiModelProperty("支付状态名称")
	private String  payStateName;

//	<!-- uo.service_name, 弃用 改用定义 mark by linjinyu at 20220624 -->
	@ApiModelProperty("!!!弃用!!! 改用定义 mark by linjinyu at 20220624")
	private String serviceName;
	private String serviceNo;
	private String serviceNoName;

	@ApiModelProperty("收货人Id 必须")
	private Long   recUserId;
	@Desensitized(type = SensitiveTypeEnum.CHINESE_NAME_MODE_3)
	@ApiModelProperty("收货人姓名 必须")
	private String recUserName;
	@Desensitized(type = SensitiveTypeEnum.MOBILE_PHONE)
	@ApiModelProperty("收货人手机号 必须")
	private String recUserPhone;
	@Desensitized(type = SensitiveTypeEnum.ADDRESS_MODE_2)
	@ApiModelProperty("收货人地址 必须")
	private String recAddress;


	/****************************************** recAddress 拆分字段 start ******************************************/
	private String addressProvince;
	private String addressCity;
	private String addressArea;
	private String addressTown;
	private String addressAddress;


	@ApiModelProperty("订单 下单时间")
	private Date createTime;
	@ApiModelProperty("订单 最后更新时间")
	private Date updateTime;
	@ApiModelProperty("订单 支付时间")
	private Date payTime;
	@ApiModelProperty("订单 发货时间")
	private Date sendTime;
	@ApiModelProperty("订单 完成时间")
	private Date finishTime;
	@ApiModelProperty("结算时间")
	private Date accountingTime;


	private Long   goodsId;
	private Long   outSnapshotOrderGoodsId;
	private String goodsName;
	private String goodsAlias;

	private Integer    quantity;
	// 必填 | 商品 单个 销售价
//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
	private BigDecimal price;
	private String     priceFormat;
	// 必填 | 商品 单个 成本价
//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
	private BigDecimal costPrice;
	private String     costPriceFormat;
	//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
	private BigDecimal goodsAmount;
	private String     goodsAmountFormat;
	//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
	private BigDecimal goodsCostAmount;
	private String     goodsCostAmountFormat;

	private Integer direction;

	@ApiModelProperty("三级分类 一级分类 ID")
	private Long   cateIdLv1;
	@ApiModelProperty("三级分类 一级分类 名称")
	private String cateNameLv1;

	@ApiModelProperty("三级分类 二级分类 ID")
	private Long   cateIdLv2;
	@ApiModelProperty("三级分类 二级分类 名称")
	private String cateNameLv2;

	@ApiModelProperty("三级分类 三级分类 ID")
	private Long   cateIdLv3;
	@ApiModelProperty("三级分类 三级分类 名称")
	private String cateNameLv3;


	private String selfOption;
	private String unit;

	@ApiModelProperty("老版财务编码")
	private String     fiscalCode;
	@ApiModelProperty("老版税率 税率 取值范围(0-100)% eg : 16 代表 16%")
	private BigDecimal taxRate;
	@ApiModelProperty("老版税率 编码")
	private String     taxCode;

	@ApiModelProperty("商户税率 税率")
	private BigDecimal merchTaxRate;
	@ApiModelProperty("商户税率 编码")
	private String     merchTaxCode;
	@ApiModelProperty("商户税率 ID")
	private Long       merchTaxId;

	@ApiModelProperty("平台税率 税率")
	private BigDecimal operationTaxRate;
	@ApiModelProperty("平台税率 编码")
	private String     operationTaxCode;
	@ApiModelProperty("平台税率 ID")
	private Long       operationTaxId;

	private String goodsParams;

	@ApiModelProperty("uoc.accounting_state_customer 客户对账:1-已对账;2-未对账;")
	private Integer accountingStateCustomer;
	@ApiModelProperty("uoc.accounting_state_customer 客户对账:1-已对账;2-未对账;")
	private String  accountingStateCustomerName;
	@ApiModelProperty("uoc.accounting_state_supplier 供应商对账:1-已对账;2-未对账;")
	private Integer accountingStateSupplier;
	@ApiModelProperty("uoc.accounting_state_supplier 供应商对账:1-已对账;2-未对账;")
	private String  accountingStateSupplierName;


	@ApiModelProperty("客户对账锁定:0-正常;1-销定;")
	private Integer orderLockingCustomer;
	@ApiModelProperty("供应商对账锁定:0-正常;1-销定;")
	private Integer orderLockingSupplier;
	@ApiModelProperty("客户对账锁定:0-正常;1-销定;")
	private Integer goodsLockingCustomer;
	@ApiModelProperty("供应商对账锁定:0-正常;1-销定;")
	private Integer goodsLockingSupplier;

}
