package com.malk.heshu.entity;

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

/**
 * 供应商实体类
 */
@Data
public class SupplierEntity {

    // 单据头字段
    private Integer FSupplierId;           // 实体主键
    private String FDocumentStatus;        // 数据状态
    private String FForbidStatus;          // 禁用状态
    @Alias("textField_mma6vp7o")
    private String FName;                  // 名称（必填项）
    private String FNumber;                // 编码
    private String FDescription;           // 描述
    private IdObject FCreateOrgId = new IdObject("000");         // 创建组织（必填项）
    private IdObject FUseOrgId = new IdObject("000");            // 使用组织（必填项）
    private IdObject FCreatorId;           // 创建人
    private IdObject FModifierId;          // 修改人
    private String FCreateDate;            // 创建日期
    private String FModifyDate;            // 修改日期
    private String FShortName;             // 简称
    private IdObject FForbiderId;          // 禁用人
    private String FForbidDate;            // 禁用日期
    private String FAuditDate;             // 审核日期
    private IdObject FAuditorId;            // 审核人
    private IdObject FGroup;               // 供应商分组
    private IdObject FCorrespondOrgId;      // 对应组织
    private String FSYNCGYOWNERSTATUS;      // 同步货主状态(GY)
    private String FRegNumber;              // 注册编码
    private IdObject FGROUPSUPPLYID;        // 对应集团供应商
    private String FISGROUP;                // 集团供应商
    private String F_UNW_yida;              // 宜搭审批连接
    @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;          // 营业执照有效期

    public SupplierEntity() {}

    // 基本信息
    private FBaseInfo FBaseInfo;

    // 商务信息
    private FBusinessInfo FBusinessInfo;

    // 财务信息
    private FFinanceInfo FFinanceInfo;

    // 银行信息
    private List<FBankInfo> FBankInfo;

    // 组织信息
    private List<FLocationInfo> FLocationInfo;

    // 联系人
    private List<FSupplierContact> FSupplierContact;

    /**
     * 基本信息
     */
    @Data
    public static class FBaseInfo {
        private Integer FEntryId;                 // 实体主键
        private IdObject FCountry;                // 国家
        private IdObject FProvincial;             // 地区
        private String FAddress;                  // 通讯地址
        private String FZip;                      // 邮政编码
        private IdObject FLanguage;               // 语言
        private String FWebSite;                  // 公司网址
        private IdObject FTrade;                  // 行业
        @Alias("textField_mquchdrg")
        private String FFoundDate;                // 创立日期
        @Alias("textField_mma6vp7v")
        private String FLegalPerson;              // 法人代表
        @Alias("numberField_mma6vp83")
        private Integer FRegisterFund;            // 注册资金(万元)
        private String FRegisterCode;             // 工商登记号
        @Alias("textField_mma6vp85")
        private String FSOCIALCRECODE;            // 统一社会信用代码
        private String FTendPermit;               // 生产经营许可证
        @Alias("textField_mma6vp7p")
        private String FRegisterAddress;          // 注册地址
        private IdObject FDeptId;                 // 负责部门
        private IdObject FStaffId;                // 负责人
        private IdObject FSupplierClassify;       // 供应商分类
        private String FSupplyClassify;           // 供应类别
        private IdObject FSupplierGrade;          // 供应商等级
        private IdObject FCompanyClassify;        // 公司类别
        private IdObject FCompanyNature;          // 公司性质
        private IdObject FCompanyScale;           // 公司规模
        private String FStartDate;                // 生效日期
        private String FEndDate;                  // 失效日期
    }
    
    /**
     * 商务信息
     */
    @Data
    public static class FBusinessInfo {
        private Integer FEntryId;                 // 实体主键
        private IdObject FPurchaserGroupId;       // 采购组
        private Integer FMinPOValue;              // 最小订单量
        private String FNeedConfirm;              // 需要确认
        private IdObject FParentSupplierId;       // 汇总公司
        private String FBusinessStatus;           // 业务状态
        private String FFreezeLimit;              // 冻结范围
        private IdObject FSettleTypeId;           // 结算方式
        private IdObject FPRICELISTID;            // 默认价目表
        private Object FWipStockPlaceId;          // 默认WIP仓位
        private IdObject FWipStockId;             // 默认WIP仓库
        private IdObject FDiscountListId;         // 默认折扣表
        private IdObject FProviderId;             // 供货方
        private IdObject FFreezeOperator;         // 冻结人
        private String FFreezeDate;               // 冻结日期
        private IdObject FVmiStockId;             // VMI仓库
        private String FVmiBusiness;              // VMI业务
        private String FEnableSL;                 // 启用供应商协同
        private Integer FDepositRatio;            // 保证金比例%
        private String FDefaultContactId;         // 默认联系人
    }
    
    /**
     * 财务信息
     */
    @Data
    public static class FFinanceInfo {
        private Integer FEntryId;                 // 实体主键
        private IdObject FPayCurrencyId;          // 结算币别（必填项）
        private IdObject FCustomerId;             // 对应客户
        private Integer FPayAdvanceAmount;        // 单次预付额度
        @Alias("textField_mma6vp85")
        private String FTaxRegisterCode;          // 税务登记号
        private String FTendType;                 // 经营类型
        private IdObject FTaxType;                // 税分类
        private String FFinanceDesc;              // 描述
        private IdObject FPayCondition;           // 付款条件
        private String FInvoiceType;              // 发票类型
        private IdObject FSettleId;               // 结算方
        private IdObject FChargeId;               // 收款方
        private IdObject FTaxRateId;              // 默认税率
    }
    
    /**
     * 银行信息
     */
    @Data
    public static class FBankInfo {
        private Integer FBankId;                  // 实体主键
        private IdObject FBankCountry;            // 国家
        @Alias("textField_mma72kwy")
        private String FBankCode;                 // 银行账号
        @Alias("textField_mogukmd1")
        private String FBankHolder;               // 账户名称
        private String FBankIsDefault;            // 默认
        private String FBankDesc;                 // 描述
        private IdObject FBankCurrencyId;         // 币别
        @Alias("textField_mma72kwx")
        private String FOpenBankName;             // 开户银行
        private IdObject FBankTypeRec;            // 收款银行
        private String FOpenAddressRec;           // 开户行地址
        private String FCNAPS;                    // 联行号
        private String FSwiftCode;                // SwiftCode
        private String FTextBankDetail;           // 网点名称
        private IdObject FBankDetail;             // 银行网点
    }
    
    /**
     * 组织信息（地点信息）
     */
    @Data
    public static class FLocationInfo {
        private Integer FLocationId;              // 实体主键
        private Integer FTransportDays;           // 运输时间
        private Integer FPlanDeliveryPeriod;      // 计划交货周期
        private String FLocDesc;                  // 备注
        private String FLocNumber;                // 地点编码
        private String FLocName;                  // 地点名称（必填项）
        private String FLocAddress;               // 通讯地址（必填项）
        private String FLocIsUsed;                // 启用
        private String FLocTel;                   // 电话
        private String FLocMobile;                // 手机（必填项）
        private String FLocFax;                   // 传真
        private String FLocEMail;                 // 电子邮箱
        private String FIsDefaultSupply;          // 默认供货地址
        private String FIsDefaultSettle;          // 默认开票地址
        private String FIsDefaultPayee;           // 默认收款地址
        private String FLocContact;               // 联系人（旧）
        private IdObject FLocNewContact;          // 联系人（必填项）
    }
    
    /**
     * 联系人信息
     */
    @Data
    public static class FSupplierContact {
        private Integer FContactId;               // 实体主键
        @Alias("textField_mma72kx2")
        private String FContact;                  // 联系人
        private String FPost;                     // 职务
        @Alias("textField_mma72kx3")
        private String FTel;                      // 电话
        private String FMobile;                   // 手机
        private String FFax;                      // 传真
        private String FEMail;                    // 电子邮箱
        private String FIMCode;                   // 即时通讯
        private String FContactIsDefault;         // 默认联系人
        private String FContactDescription;       // 备注
        private String FCommonContactId;          // 供应商联系人
        private String FContactNumber;            // 编码
        private String FConForbidStatus;          // 禁用状态
        private String FGender;                   // 性别
    }
}