package com.malk.heshu.entity;

import cn.hutool.core.annotation.Alias;
import lombok.Data;
import java.util.List;

/**
 * 客户信息实体类
 */
@Data
public class CustomerInfo {
    
    private Integer FCUSTID;                // 主键-客户ID
    private FNumber FCreateOrgId = new FNumber("000");      // 创建组织(必填)
    private String FNumber;                 // 客户编码
    private FNumber FUseOrgId = new FNumber("000");;         // 使用组织
    @Alias("textField_mma6vp7o")
    private String FName;                   // 客户名称(必填)
    private String FShortName;              // 简称
    private FNumber FCOUNTRY;          // 国家
    private FNumber FPROVINCIAL;       // 地区
    private String FADDRESS;                // 通讯地址
    private String FZIP;                    // 邮政编码
    private String FWEBSITE;                // 公司网址
    private String FTEL;                    // 联系电话
    private String FFAX;                    // 传真
    private FNumber FCompanyClassify;  // 公司类别
    private FNumber FCompanyNature;    // 公司性质
    private FNumber FCompanyScale;     // 公司规模
    private String FINVOICETITLE;           // 发票抬头
    @Alias("textField_mma6vp85")
    private String FTAXREGISTERCODE;        // 纳税登记号
    @Alias("textField_mma72kwv")
    private String FINVOICEBANKNAME;        // 开户银行
    private String FINVOICETEL;             // 开票联系电话
    @Alias("textField_mma72kww")
    private String FINVOICEBANKACCOUNT;     // 银行账号
    @Alias("textField_mma6vp7p1")
    private String FINVOICEADDRESS;         // 开票通讯地址
    private FNumber FSUPPLIERID;       // 对应供应商
    private String FIsGroup;                // 集团客户
    private String FIsDefPayer;             // 默认付款方
    private FNumber FCustTypeId;       // 客户类别
    private FNumber FGROUPCUSTID;      // 对应集团客户
    private FNumber FGroup;            // 客户分组
    private FNumber FTRADINGCURRID;    // 结算币别(必填)
    private FNumber FCorrespondOrgId;  // 对应组织
    private String FDescription;            // 备注
    private FNumber FSALDEPTID;        // 销售部门
    private FNumber FSELLER;           // 销售员
    private FNumber FSETTLETYPEID;     // 结算方式
    private FNumber FRECCONDITIONID;   // 收款条件
    private FNumber FDISCOUNTLISTID;   // 折扣表
    private FNumber FPRICELISTID;      // 价目表
    private Integer FTRANSLEADTIME;         // 运输提前期
    private String FInvoiceType;            // 发票类型
    private FNumber FTaxType;          // 税分类
    private FNumber FRECEIVECURRID;    // 收款币别
    private Integer FPriority;               // 客户优先级
    private FNumber FTaxRate;          // 默认税率
    private String FISCREDITCHECK;          // 启用信用管理
    private String FIsTrade;                // 是否交易客户
    private String F_JX_Combo;              // 是否信用客户(必填)
    private String FUncheckExpectQty;       // 不校验可发量
    @Alias("textField_mma6vp7v")
    private String FLegalPerson;             // 法人代表
    @Alias("numberField_mma6vp83")
    private String FRegisterFund;           // 注册资本
    @Alias("textField_mquchdrg")
    private String FFoundDate;               // 创立日期
    private String FDomains;                 // 行业
    @Alias("textField_mma6vp851")
    private String FSOCIALCRECODE;           // 统一社会信用代码
    @Alias("textField_mma6vp7p")
    private String FRegisterAddress;         // 注册地址
    @Alias("textField_mogukmd2")
    private String F_UNW_Remark_apv;           // 开票要求
    @Alias("textField_mpkytqhm")
    private String F_UNW_Text_kpyx;          // 开票电子邮箱

    @Alias("numberField_mma6vp84")
    private String F_UNW_paidin;          // 实缴资本
    @Alias("numberField_mma72l0d")
    private String F_UNW_LegalScoring;          // 法务评分
    @Alias("numberField_mma72l0e")
    private String F_UNW_salerScoring;          // 业务评分
    @Alias("numberField_mma72kyi")
    private String F_UNW_overallScoring;          // 总评分
    @Alias("textField_mma72kyj")
    private String F_UNW_positioning;          // 企业定位
    @Alias("textField_mquchdrh")
    private String F_UNW_businessVP;          // 营业执照有效期
    @Alias("textField_mquchdri")
    private String F_UNW_HazardousVP;          // 危化证有效期


    private CustomerExt FT_BD_CUSTOMEREXT;   // 商务信息
    private List<CustLocation> FT_BD_CUSTLOCATION;   // 联系人
    private List<CustBank> FT_BD_CUSTBANK;           // 银行信息
    private List<CustContact> FT_BD_CUSTCONTACT;     // 地址信息
    private List<CustOrderOrg> FT_BD_CUSTORDERORG;   // 订货组织
    private List<CustSubAccount> FT_BD_CUSTSUBACCOUNT; // 子账户信息


    // 用户ID字段结构
    @Data
    public static class FUserIdField {
        private String FUserID;
    }
    
    // 商务信息扩展
    @Data
    public static class CustomerExt {
        private Integer FEntryId;                // 主键
        private String FEnableSL;                // 启用商联在线
        private String FFreezeLimit;             // 冻结范围
        private FUserIdField FFreezeOperator;    // 冻结人
        private String FFreezeDate;              // 冻结日期
        private FNumber FPROVINCE;          // 省份
        private FNumber FCITY;              // 城市
        private FNumber FDefaultConsiLoc;   // 默认收货地点
        private FNumber FDefaultSettleLoc;  // 默认开票地点
        private FNumber FDefaultPayerLoc;   // 默认付款地点
        private FNumber FDefaultContact;    // 默认联系人
        private Integer FMarginLevel;             // 保证金比例
        private String FDebitCard;               // 结算卡
        private FNumber FSettleId;          // 结算方
        private FNumber FChargeId;          // 付款方
        private String FALLOWJOINZHJ;             // 允许对接智慧订货
        private FNumber FStarOrgId;         // 星辰组织
    }
    
    // 联系人信息
    @Data
    public static class CustLocation {
        private FNumber FContactId;         // 联系人编码
        private String FIsDefaultConsigneeCT;    // 默认收货地址
        private String FIsCopy;                  // 是否复制
    }
    
    // 银行信息
    @Data
    public static class CustBank {
        private Integer FENTRYID;                // 主键
        private FNumber FCOUNTRY1;          // 开户国家
        @Alias("textField_mma72kwy")
        private String FBANKCODE;                // 银行账号
        @Alias("textField_mogukmd1")
        private String FACCOUNTNAME;             // 账户名称
        private FNumber FBankTypeRec;       // 收款银行
        private String FTextBankDetail;          // 网点名称
        private FNumber FBankDetail;        // 银行网点
        private String FOpenAddressRec;          // 开户行地址
        @Alias("textField_mma72kwx")
        private String FOPENBANKNAME;            // 开户银行
        private String FCNAPS;                   // 联行号
        private FNumber FCURRENCYID;        // 币别
        private String FISDEFAULT1;              // 默认
    }
    
    // 地址信息
    @Data
    public static class CustContact {
        private Integer FENTRYID;                // 主键
        private String FNUMBER1;                 // 交货地点编码
        @Alias("textField_mogukmdi")
        private String FNAME1;                   // 交货地点
        @Alias("textField_mogukmdi")
        private String FADDRESS1;                // 详细地址
//        @Alias("textField_mogukmdf")
        private FNAME FTContact;               // 联系人
        @Alias("textField_mogukmdg")
        private String FMOBILE;                  // 移动电话
        private Integer FTRANSLEADTIME1;         // 运输提前期
        private String FIsDefaultConsignee;      // 默认收货地址
        private String FIsDefaultSettle;         // 默认开票地址
        private String FIsDefaultPayer;          // 默认付款地址
        private String FIsUsed;                  // 启用
    }

    @Data
    public static class FNAME {
        private String FNAME;
        public FNAME(String FNAME) {
            this.FNAME = FNAME;
        }
        public FNAME() {}
    }
    
    // 订货组织
    @Data
    public static class CustOrderOrg {
        private Integer FEntryID;                // 主键
        private FNumber FOrderOrgId;        // 订货组织
        private String FIsDefaultOrderOrg;       // 默认
    }
    
    // 子账户信息
    @Data
    public static class CustSubAccount {
        private Integer FEntryID;                // 主键
        private String FSUBACCOUNTTYPE;          // 子账户类型
        private String FSUBACCOUNT;              // 子账户号
    }
}