using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;

namespace TellerSystem.Contract.Function
{
    /// <summary>
    /// 查询审批信息
    /// 通过借据号查询借据信息
    /// </summary>
    public class QueryApprovalInformation : TFOutput
    {
        #region Output
        /// <summary>
        /// 产品号 0240
        /// 修改还款顺序时用这个字段存放还款顺序代码
        /// </summary>
        public string CPH { get; internal set; }

        /// <summary>
        /// 客户名称 0250
        /// 
        /// </summary>
        public string KHMC { get; internal set; }

        /// <summary>
        /// 第一还息账号 0300
        /// 
        /// </summary>
        public string DYHXZH { get; internal set; }

        /// <summary>
        /// 第二还息账号 0310
        /// 
        /// </summary>
        public string DEHXZH { get; internal set; }

        /// <summary>
        /// 第三还息账号 0320
        /// 
        /// </summary>
        public string DSHXZH { get; internal set; }

        /// <summary>
        /// 贷款金额 0390
        /// 此借据能发放的贷款金额；,核销时是核销的金额，（抵债资产变现时变现部分的账面金额，如果是全部的则是全部变现金额）修改贷款积数时为增加或减少的积数（正为增负为减）预约扣款时为预约扣款金额
        /// </summary>
        public string DKJE { get; internal set; }

        /// <summary>
        /// 最低放款额度 0400
        /// 
        /// </summary>
        public string ZDFKED { get; internal set; }

        /// <summary>
        /// 受托支付金额 0410
        /// 
        /// </summary>
        public string STZFJE { get; internal set; }

        /// <summary>
        /// 增减金额(尾款金额) 0420
        /// 
        /// </summary>
        public string ZJJEWKJE { get; internal set; }

        /// <summary>
        /// 起始日 0440
        /// 
        /// </summary>
        public string QSR { get; internal set; }

        /// <summary>
        /// 到期日 0450
        /// 展期时为展期日期; 预约扣款时为预约扣款日期
        /// </summary>
        public string DQR { get; internal set; }

        /// <summary>
        /// 还款日 0460
        /// 
        /// </summary>
        public string HKR { get; internal set; }

        /// <summary>
        /// 免息天数 0480
        /// 
        /// </summary>
        public string MXTS { get; internal set; }

        /// <summary>
        /// 增长周期（间隔周期、气贷周期、宽限期） 0510
        /// 
        /// </summary>
        public string ZCZQJGZQQDZQKXQ { get; internal set; }

        /// <summary>
        /// 期限 0520
        /// 
        /// </summary>
        public string QX { get; internal set; }

        /// <summary>
        /// 客户号 0530
        /// 
        /// </summary>
        public string KHH { get; internal set; }

        /// <summary>
        /// 证件号码 0620
        /// 
        /// </summary>
        public string ZJHM { get; internal set; }

        /// <summary>
        /// 标志位 0740
        /// [空格表示没有查询相关数据]第一位：证件类型[参考cif_id_code_rel中id_type] 第二位：担保方式[3:抵押  4:信用 5:保证 7:委托 B:质押] 第三位：复息标志[Y:收 N:不收] 第四位：利率浮动方式[1:浮比 2:浮点] 第五位：贷款类型[1:普通贷款 2:按揭贷款 5:承兑垫款7:委托贷款 9:贴现 A:授信贷款 B:卡内融资、质押消费贷款] 第六位：浮动标志[0：合同利率（不浮动）1：浮动] 第七位：计息类型[0：不计息；1：利随本清；2：按日计息；3：按月计息；4：按季计息；5：按半年计息； 6：按年计息;7：按揭；  形态调整借用这个字段，1表示正常转逾期，2表示正常转呆滞，3表示正常转呆账，4表示逾期转呆滞，5表示逾期转呆账，6表示呆滞转呆账； 抵债资产处置时借用这个字段，1-表示部分处置，2-表示全部处置 修改复利标志时借用这个字段： Y为收复利 ，N为不收 ] 第八位：还款方式[1：利随本清；2：按期还息；3：等额本息；4：等额本金；5：宽限期还款6：等额递增；7：等额递减；8：等比递增9：等比递减A：等额气球贷B：等额上周供C：尾款还款] 第九位：还款类型[M:固定日还款 F:日对日还款] 第十位：贴息标志[0:不贴息  1：贴息] 第十一位：自动还款标志[Y:自动还款 N:不自动还] 第十二位：支付方式[1：自主支付(修改还款计划)2：受托支付(删除还款计划)] 第十三位：是否允许POS消费[循环贷款是否允许pos消费0．允许 1不允许] 第十四位：是否找到记录[Y:已找到 N:未找到] 第十五位至第十七位暂不启用 第十八位：发放状态[X:信贷发送，0－审核 1－开户 2－放款 注:状态1为已展期;1为已修改利率;1为按揭已提前还款;1为已贷款核销;1为已形态调整 ]第十九位：客户类型[1：个人； 2：公司 ；3：机构（指政府机关等组织）； 4：金融同业； 5：内部员工；6金融机构] 第二十位：合同号是否存在[Y:合同号存在 N:合同号不存在] 第二十一位：借据号所关联的贷款账号是否存在[Y 存在 N 不存在]
        /// </summary>
        public string BZW { get; internal set; }

        /// <summary>
        /// 浮动点数 0840
        /// 
        /// </summary>
        public string FDDS { get; internal set; }

        /// <summary>
        /// 复利利率 0850
        /// 
        /// </summary>
        public string FLLL { get; internal set; }

        /// <summary>
        /// 合同号 0870
        /// 
        /// </summary>
        public string HTH { get; internal set; }

        /// <summary>
        /// 委托协议编号 0880
        /// 
        /// </summary>
        public string WTXYBH { get; internal set; }

        /// <summary>
        /// 增减比例 0940
        /// 
        /// </summary>
        public string ZJBL { get; internal set; }

        /// <summary>
        /// 合同利率 0970
        /// 此贷款的利率； 展期时为展期利率;
        /// </summary>
        public string HTLL { get; internal set; }

        /// <summary>
        /// 罚息利率 1005
        /// 
        /// </summary>
        public string FXLL { get; internal set; }

        /// <summary>
        /// 第一还本账号 1011
        /// 
        /// </summary>
        public string DYHBZH { get; internal set; }

        /// <summary>
        /// 第二还本账号 1021
        /// 
        /// </summary>
        public string DEHBZH { get; internal set; }

        /// <summary>
        /// 第三还本账号 102W
        /// 
        /// </summary>
        public string DSHBZH { get; internal set; }

        /// <summary>
        /// 存款账号 1061
        /// 
        /// </summary>
        public string CKZH { get; internal set; }

        /// <summary>
        /// 浮动比例 1123
        /// 展期时，为展期浮动比
        /// </summary>
        public string FDBL { get; internal set; }

        /// <summary>
        /// 逾期利率 1124
        /// 
        /// </summary>
        public string YQLL { get; internal set; }

        /// <summary>
        /// 综合要素 1230
        /// 逾期利率比|罚息利率比|
        /// </summary>
        public string ZHYS { get; internal set; }

        /// <summary>
        /// 合同下已开户抵质押贷款金额 1003
        /// 
        /// </summary>
        public string DZYDKJE { get; internal set; }

        /// <summary>
        /// 关联抵质押品金额 1002
        /// 
        /// </summary>
        public string GLDZYPJE { get; internal set; }

        /// <summary>
        /// 贷款账号 0370
        /// 
        /// </summary>
        public string DKZH { get; internal set; }

        /// <summary>
        /// 合同下抵质押贷款未放款总金额 1001
        /// 
        /// </summary>
        public string DZYDKZJE { get; internal set; }

        /// <summary>
        /// 业务类型 0220
        /// 
        /// </summary>
        public string YWLX { get; internal set; }

        /// <summary>
        /// 合同下贷款余额 1004
        /// 
        /// </summary>
        public string HTDKYE { get; internal set; }

        /// <summary>
        /// 交易机构 0910
        /// 
        /// </summary>
        public string JYJG { get; internal set; }
        /// <summary>
        ///  第一还本补贴比例或金额
        /// </summary>
        public string HBBTZ1 { get; internal set; }
        /// <summary>
        /// 第二还本补贴比例或金额
        /// </summary>
        public string HBBTZ2 { get; internal set; }
        /// <summary>
        /// 第三还本补贴比例或金额
        /// </summary>
        public string HBBTZ3 { get; internal set; }
        /// <summary>
        /// 第一还息补贴比例或金额
        /// </summary>
        public string HXBTZ1 { get; internal set; }
        /// <summary>
        /// 第二还息补贴比例或金额
        /// </summary>
        public string HXBTZ2 { get; internal set; }
        /// <summary>
        /// 第三还息补贴比例或金额
        /// </summary>
        public string HXBTZ3 { get; internal set; }

        #endregion

        #region Input
		/// <summary>
        /// 参数清单
        /// </summary>
        public class Input : TFInput
        {
            /// <summary>
            /// 操作类型 0210
            /// 01-审批 02-展期 03-修改合同利率 04-还款账号 05-提前还款缩短还款期 06-提前还款减小月供07-贷款核销本金 08-贷款核销利息 09-形态调整 10-抵债资产处置  11-还款方式  12-计息类型  13-展期利率  14-逾期利率 15-罚息利率 16-贷款积数 17-复息标志 18-还款顺序 19-违约状态 20-普通贷款提前还本 21-贷款预约还款 22-还款计划 
            /// </summary>
            public string CZLX { get; set; }

            /// <summary>
            /// 证件号码 0620
            ///  
            /// </summary>
            public string ZJHM { get; set; }

            /// <summary>
            /// 证件类型 0670
            /// 参考cif_id_code_rel中id_type 
            /// </summary>
            public string ZJLX { get; set; }

            /// <summary>
            /// 借据号 0860
            ///  
            /// </summary>
            public string JJH { get; set; }

            /// <summary>
            /// 合同号 0870
            /// 授信和卡内质押使用 
            /// </summary>
            public string HTH { get; set; }


            /// <summary>                 
            /// 定义业务逻辑              
            /// </summary>                
            /// <returns></returns>  
            public override TFOutput Raise()
            {
                //拉取数据                                  
                var output = new QueryApprovalInformation();
                PageData.TradeAPIs.InitFd(MessageData);
                PageData.TradeAPIs.CommSend(MessageData);
				MessageData.Fd126_5 = MainCode;
                MessageData.Fd16 = "K016";
                MessageData.Fd21 = CZLX;
                MessageData.Fd62 = ZJHM;
                MessageData.Fd67 = ZJLX;
                MessageData.Fd86 = JJH;
                MessageData.Fd87 = HTH;

                PageData.TradeAPIs.CallServer(MessageData);
                if (MessageData.Fd12 != "0000")
                {
                    output.IsFailed = true;
                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
                }                
                output.CPH = (MessageData.Fd24);
                output.KHMC = (MessageData.Fd25);
                output.DYHXZH = (MessageData.Fd30);
                output.DEHXZH = (MessageData.Fd31);
                output.DSHXZH = (MessageData.Fd32);
                output.DKJE = (MessageData.Fd39);
                output.ZDFKED = (MessageData.Fd40);
                output.STZFJE = (MessageData.Fd41);
                output.ZJJEWKJE = (MessageData.Fd42);
                output.QSR = (MessageData.Fd44);
                output.DQR = (MessageData.Fd45);
                output.HKR = (MessageData.Fd46);
                output.MXTS = (MessageData.Fd48);
                output.ZCZQJGZQQDZQKXQ = (MessageData.Fd51);
                output.QX = (MessageData.Fd52);
                output.KHH = (MessageData.Fd53);
                output.ZJHM = (MessageData.Fd62);
                output.BZW = (MessageData.Fd74);
                output.FDDS = (MessageData.Fd84);
                output.FLLL = (MessageData.Fd85);
                output.HTH = (MessageData.Fd87);
                output.WTXYBH = (MessageData.Fd88);
                output.ZJBL = (MessageData.Fd94);
                output.HTLL = (MessageData.Fd97);
                output.FXLL = (MessageData.Fd100_5);
                output.DYHBZH = (MessageData.Fd101_1);
                output.DEHBZH = (MessageData.Fd102_1);
                output.DSHBZH = (MessageData.Fd102_W);
                output.CKZH = (MessageData.Fd106_1);
                output.HBBTZ1 = (MessageData.Fd107_4);
                output.HBBTZ2 = (MessageData.Fd107_7);
                output.HBBTZ3 = (MessageData.Fd107_E);
                output.HXBTZ1 = (MessageData.Fd108_4); 
                output.HXBTZ2 = (MessageData.Fd108_7); 
                output.HXBTZ3 = (MessageData.Fd108_E);
                output.FDBL = (MessageData.Fd112_3);
                output.YQLL = (MessageData.Fd112_4);
                output.ZHYS = (MessageData.Fd123);
                output.DZYDKJE = (MessageData.Fd100_3);
                output.GLDZYPJE = (MessageData.Fd100_2);
                output.DKZH = (MessageData.Fd37);
                output.DZYDKZJE = (MessageData.Fd100_1);
                output.YWLX = (MessageData.Fd22);
                output.HTDKYE = (MessageData.Fd100_4);
                output.JYJG = (MessageData.Fd91);

                return output;
            }
        }
        #endregion
    }
}
