package com.zfire.mall.manager.bean.engin.v2.deposit;

import com.zfire.mall.manager.annotation.ZfireField;
import com.zfire.mall.manager.annotation.ZfirePowerField;
import com.zfire.mall.manager.enums.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

@Data
@ApiModel
public class DepositManageVO {

    @ZfireField(tbName = "a", hide = true)
    @ApiModelProperty(value = "押金管理编号")
    private String depositManageId;

    @ZfireField(tbName = "a", hide = true)
    @ApiModelProperty(value = "企业id")
    private String adminCompanyId;

    @ZfireField(tbName = "a", hide = true)
    @ApiModelProperty(value = "客户id")
    private String customerId;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "工程登录编号")
    private String refEnginRecordNo;

    @ZfirePowerField
    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "特价项目编号")
    private String specialItemNo;

    @ZfirePowerField
    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "厂编号")
    private String factoryNo;

    @ZfirePowerField
    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "特价编号")
    private String specialNo;

    @ZfirePowerField
    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "交单编号")
    private String billNo;

    @ZfirePowerField
    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "安装时间")
    private Date installDate;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "行业类别")
    private String refTradeCategory;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "使用单位")
    private String refUseUnit;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "区域")
    private String refRegionWork;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "申请时间")
    private Date submitTime;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "受理时间")
    private Date confirmTime;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "经销商编码")
    private String customerNumber;

//    @ZfireField(tbName = "a")
//    @ApiModelProperty(value = "寄厂日期")
//    private Date sendFactoryDate;

    @ZfirePowerField
    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "寄厂日期")
    private Date mailFactoryDate;

    @ZfirePowerField
    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "寄厂年度")
    private String mailFactoryYear;

    @ZfirePowerField
    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "确认日期")
    private Date confirmDate;

    @ZfirePowerField
    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "结算编号")
    private Long settlementNo;

    @ZfirePowerField
    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "结算日期")
    private Date settlementDate;

    @ZfireField(tbName = "a", hide = true)
    @ApiModelProperty(value = "工程类型")
    private OrderTypeEnum enginOrderType;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "经销商名称")
    private String customerName;

    @ZfirePowerField
    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "格力内部备注")
    private String geLiInerNote;

    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "物料编码")
    private String materialNumber;

    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "产品名称")
    private String materialName;

    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "厂产品编码")
    private String materialOldNumber;

    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "规格型号")
    private String specification;

    @ZfireField(tbName = "b", hide = true)
    @ApiModelProperty(value = "实装产品名称")
    private String realMaterialName;

    @ZfireField(tbName = "b", hide = true)
    @ApiModelProperty(value = "实装物料编码")
    private String realMaterialNumber;

    @ZfireField(tbName = "b", hide = true)
    @ApiModelProperty(value = "实装厂产品编码")
    private String realMaterialOldNumber;

    @ZfireField(tbName = "b", hide = true)
    @ApiModelProperty(value = "实装规格型号")
    private String realSpecification;

    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "实装产品名称")
    private String depositMaterialName;

    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "实装物料编码")
    private String depositMaterialNumber;

    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "实装厂产品编码")
    private String depositMaterialOldNumber;

    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "实装规格型号")
    private String depositSpecification;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "项目类别")
    private String refProjectCategory;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "项目名称")
    private String refProjectName;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "项目类型")
    private String refProjectType;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "项目说明")
    private String refProjectNote;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "安装地址")
    private String refInstallAddress;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "项目编号")
    private String refProjectNo;

    @ZfirePowerField
    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "跨区厂编号")
    private String refFactoryNo;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "工程登录类型")
    private String refPromiseStatus;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "联系人")
    private String refLinkman;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "联系电话")
    private String refPhone;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "固定电话")
    private String refTel;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "第几申报")
    private String refDeclareNo;

//    @ZfireField(tbName = "a")
//    @ApiModelProperty(value = "权限分类")
//    private String refPowerCategory;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "机型类别")
    private String refMachineType;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "购买单位名称")
    private String refBuyUnitName;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "提交保证函")
    private String refPromiseProvide;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "保证函受理状态")
    private String refPromiseAcceptStatus;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "保证函备注")
    private String refPromisePriceRemark;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "跟进函备注")
    private String refFollowAcceptRemark;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "附件备注")
    private String refFjShenPiRemark;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "资料状态")
    private String refDatumProvide;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "资料提交日期")
    private Date refDatumProvideDate;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "资料审核结果")
    private String refDatumAcceptStatus;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "大额工程")
    private String refIsBigAmounts;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "合同变更批复结果")
    private String refContractResult;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "合同变更审批意见")
    private String refContractIdea;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "工程机转零售批复结果")
    private String refToRetailResult;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "工程机转零售审批意见")
    private String refToRetailIdea;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "资料延期批复结果")
    private String refDataDelayResult;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "资料延期审批意见")
    private String refDataDelayIdea;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "其他附件批复结果")
    private String refOtherAnnexResult;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "其他附件审批意见")
    private String refOtherAnnexIdea;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "资料审核日期")
    private Date refDatumAcceptDate;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "登录有效期")
    private Date refBillsExpireDate;

    @ZfireField(tbName = "a", hide = true)
    @ApiModelProperty(value = "工程订单格力回复")
    private String refGeLiNote;

    @ZfireField(tbName = "a", hide = true)
    @ApiModelProperty(value = "工程订单格力内部备注")
    private String refGeLiInerNote;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "是否不扣押金")
    private IsEnum takeDeposit;

    @ZfireField(tbName = "a", hide = true)
    @ApiModelProperty(value = "销售类型")
    private String saleTypeId;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "销售类型名称")
    private String saleTypeName;

//    @ApiModelProperty(value = "业务员")
//    private String serviceId;

//    @ZfireField(tbName = "a")
//    @ApiModelProperty(value = "业务员名称")
//    private String serviceName;

    @ZfireField(tbName = "a", isTotal = true)
    @ApiModelProperty(value = "订单总数量")
    private Integer qty;

    @ZfireField(tbName = "a", isTotal = true)
    @ApiModelProperty(value = "押金总额")
    private BigDecimal depositAmount;

    @ZfireField(tbName = "a", isTotal = true)
    @ApiModelProperty(value = "押金收差总额")
    private BigDecimal depositDiffAmount;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "是否退押")
    private IsEnum isRefundDeposit;

    @ZfirePowerField
    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "订单格力内部备注")
    private String orderGeLiInnerNote;

    @ZfirePowerField
    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "格力内部资料备注")
    private String geLiInnerDataNote;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "实际使用单位")
    private String realUseUnit;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "实际安装地址")
    private String realInstallAddress;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "备注")
    private String remark;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "申请退押金备注")
    private String applyNote;

    @ZfirePowerField
    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "审批通过后备注")
    private String examineAfterRemark;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "补充资料备注")
    private String amendRemark;

    @ZfirePowerField
    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "复核备注")
    private String reviewRemark;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "补充资料状态")
    private DepositDataStateEnum dataState;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "单据状态")
    private ExamineStatusEnum examineStatus;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "审核结果")
    private ConfirmResultEnum confirmResult;

    @ZfireField(tbName = "b", hide = true)
    @ApiModelProperty(value = "id")
    private String id;

    @ZfireField(tbName = "b", hide = true)
    @ApiModelProperty(value = "金蝶物料id")
    private String materialId;

    @ZfireField(tbName = "b", hide = true)
    @ApiModelProperty(value = "实装金蝶物料id")
    private String realMaterialId;

    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "基本单位编码")
    private String unit;

    @ZfireField(tbName = "b", colName = "price")
    @ApiModelProperty(value = "单价")
    private BigDecimal itemPrice;

    @ZfireField(tbName = "b", colName = "qty", isTotal = true)
    @ApiModelProperty(value = "数量")
    private Integer itemQty;

    @ZfireField(isQuery = false)
    @ApiModelProperty(value = "金额")
    private Integer itemTotalAmount;

    @ZfireField(tbName = "b", colName = "remark")
    @ApiModelProperty(value = "备注")
    private String itemRemark;

    @ZfireField(tbName = "b", colName = "deposit_amount", isTotal = true)
    @ApiModelProperty(value = "押金金额")
    private BigDecimal itemDepositAmount;

    @ZfireField(tbName = "b", colName = "data_qty", isTotal = true)
    @ApiModelProperty(value = "资料数量")
    private Integer itemDataQty;

    @ZfireField(tbName = "b", colName = "diff_amount", isTotal = true)
    @ApiModelProperty(value = "收差金额")
    private BigDecimal itemDiffAmount;

    @ZfireField(tbName = "b", isTotal = true)
    @ApiModelProperty(value = "押金数量")
    private Integer hasSendQty;

    @ZfireField(isQuery = false)
    @ApiModelProperty(value = "发货数量")
    private Integer orderHasSendQty = 0;

    @ZfireField(tbName = "b", colName = "contract_qty", isTotal = true)
    @ApiModelProperty(value = "合同数量")
    private Integer itemContractQty;

    @ZfireField(tbName = "b", colName = "contract_price", type = "amount", isTotal = true)
    @ApiModelProperty(value = "合同单价")
    private BigDecimal itemContractPrice;

    @ZfireField(tbName = "b", colName = "contract_amount", type = "amount", isTotal = true)
    @ApiModelProperty(value = "合同金额")
    private BigDecimal itemContractAmount;

    @ZfirePowerField
    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "入厂日期")
    private Date inFactoryDate;

    @ZfirePowerField
    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "入厂类型")
    private String inFactoryType;

    @ZfireField(tbName = "b")
    @ApiModelProperty(value = "钱包序号")
    private String customerWalletId;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "验收人")
    private String checkBy;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "验收说明")
    private String checkNote;
//
//    @ZfireField(tbName = "a")
//    @ApiModelProperty(value = "验收日期")
//    private Date checkDate;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "创建人")
    private String createName;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "更新人")
    private String updateName;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "提交人")
    private String submitName;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "审核人")
    private String confirmName;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "补充人")
    private String amendName;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "补充时间")
    private Date amendTime;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "复核人")
    private String reviewName;

    @ZfireField(tbName = "a")
    @ApiModelProperty(value = "复核时间")
    private Date reviewTime;

    @ZfireField(tbName = "b", isQuery = false)
    @ApiModelProperty(value = "销售数量")
    private Integer itemSalesQty;

    @ZfireField(tbName = "b", isQuery = false)
    @ApiModelProperty(value = "销售金额")
    private BigDecimal itemSalesAmount;

}
