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

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

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

/**
 * @Description: 开票申请 商品维度 Inner List Item
 * 1. 开票申请 详情 Inner 列表
 * 1. 开票申请 详情 导出 数据结构
 * @Author: linjinyu
 * @CreateDate: 2021/1/22 下午1:43
 * @UpdateUser: linjinyu
 * @UpdateDate: 2021/1/22 下午1:43
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
@NoArgsConstructor
@Data
public class InvoiceApplyDetailDimGoodsItemV3Vo implements Serializable {

	// 生成
	private Integer rowNum;

	private Long invoiceApplyId;
	private Long accountingOrderId;

	private Long    unifiedOrderId;
	private Long    unifiedOrderGoodsId;
	private Integer accountingOrderType;
	private Integer invoiceDimCreateBy;
	private Integer invoiceBackAccountStatus;

	private Integer    accountingDimCreateBy;
	private String     accountingOrderSn;
	private BigDecimal accountingAmount;
	private Integer    accountingQuantityOrder;
	private Integer    accountingQuantityGoods;
	private Integer    accountingBackAccountStatus;

	private String orderSn;

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

	private Long   projectId;
	private String projectName;

	private Long   purchaseVirtId;
	private String purchaseVirtName;
	private Long   purchaseUserId;
	private String purchaseUserName;
	private String purchasePhone;

	private Long   saleId;
	private String saleName;

	private BigDecimal orderAmount;
	private BigDecimal orderCostAmount;
	private BigDecimal orderTransportAmount;
	private BigDecimal orderTransportMerchantAssumeAmount;
	private BigDecimal orderGoodsAmount;

	private BigDecimal orderGoodsCostAmount;
	private BigDecimal orderRefundGoodsAmount;
	private BigDecimal orderRefundGoodsCostAmount;

	private Integer completState;
	private Integer orderAccountingStateCustomer;
	private Integer orderAccountingStateSupplier;

	private Integer payType;
	/**
	 * 支付方式名称
	 */
	private String  payTypeName;
	private Integer payState;
	/**
	 * 支付状态名称
	 */
	private String  payStateName;


	private String orderState;
	private String orderStateName;

	private String orderBackAccountStatus;

	@ApiModelProperty("收货人Id 必须")
	private Long   recUserId;
	@ApiModelProperty("收货人姓名 必须")
	private String recUserName;
	@ApiModelProperty("收货人手机号 必须")
	private String recUserPhone;
	@ApiModelProperty("收货人地址 必须")
	private String recAddress;

	/**
	 * 物流单号
	 */
	private String expressSn;
	/**
	 * 快递拼音简写
	 */
	private String express;
	/**
	 * 快递名称 eg:京东快递;韵达快运
	 */
	private String expressCompany;

	private Date createTime;
	private Date updateTime;
	/**
	 * 订单 支付时间
	 */
	private Date payTime;
	/**
	 * 订单 发货时间
	 */
	private Date sendTime;
	/**
	 * 订单 完成时间
	 */
	private Date finishTime;

	private Integer invoiceStatus; // 修改标记 20211201
	private String  invoiceNumber; // 修改标记 20211201
	private String  invoiceApplySn; // 修改标记 20211201

	// 订单备注-数据来源于第三方,非统一订单产生
	private String remarks;

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

	private Integer    quantity;
	// 必填 | 商品 单个 销售价
	private BigDecimal price;
	// 必填 | 商品 单个 成本价
	private BigDecimal costPrice;
	private BigDecimal goodsAmount;
	private BigDecimal goodsCostAmount;

	private Integer direction;

	private Long   cateIdLv1;
	private String cateNameLv1;
	private Long   cateIdLv2;
	private String cateNameLv2;
	private Long   cateIdLv3;
	private String cateNameLv3;
	private String selfOption;
	private String unit;

	/**
	 * 财务编码
	 */
	private String     fiscalCode;
	/**
	 * 税务编码
	 */
	private String     taxCode;
	/**
	 * 税率 %
	 */
	private BigDecimal taxRate;

	@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 Integer goodsAccountingStateCustomer;
	private Integer goodsAccountingStateSupplier;
	private Integer goodsBackAccountStatus;
}
