/// <summary>
        /// 通过人员编号,和发票类别查询和是否财务组该人员的发票信息
        /// </summary>
        /// <param name="personID">人员编号</param>
        /// <param name="invoiceType">发票类别</param>
        /// <param name="isGroup">是否财务组</param>
        /// <returns>成功:发票信息数组 失败:null 没有查找到数据返回元素数为0的ArrayList</returns>
        public ArrayList QueryInvoices(string personID, InvoiceTypeEnumService invoiceType, bool isGroup)
        {
            string sql = string.Empty;             //查询SQL语句

            if (this.Sql.GetSql("Fee.InvoiceService.SelectInvoices.ByIdTypeIsGroup", ref sql) == -1)
            {
                this.Err = "没有找到索引为:Fee.InvoiceService.SelectInvoices.ByIdTypeIsGroup的SQL语句";

                return(null);
            }

            return(this.QueryInvoicesBySql(sql, personID, invoiceType.ID.ToString(), NConvert.ToInt32(isGroup).ToString().ToString()));
        }
        /// <summary>
        /// 通过人员编号,和发票类别查询该人员的发票信息
        /// </summary>
        /// <param name="personID">人员编号</param>
        /// <param name="invoiceType">发票类别</param>
        /// <returns>成功:发票信息数组 失败:null 没有查找到数据返回元素数为0的ArrayList</returns>
        public ArrayList QueryInvoices(string personID, InvoiceTypeEnumService invoiceType)
        {
            string sql = string.Empty;             //查询SQL语句

            if (this.Sql.GetSql("Fee.InvoiceService.SelectInvoices.1", ref sql) == -1)
            {
                this.Err = "没有找到索引为:Fee.InvoiceService.SelectInvoices.1的SQL语句";

                return(null);
            }

            return(this.QueryInvoicesBySql(sql, personID, invoiceType.ID.ToString()));
        }
        /// <summary>
        /// 获得领用过发票类型为InvoiceType的所有人员信息 /
        /// </summary>
        /// <param name="invoiceType">发票类别</param>
        /// <returns>成功:人员信息数组 失败:null 没有查找到数据返回元素数为0的ArrayList</returns>
        public ArrayList QueryPersonsByInvoiceType(InvoiceTypeEnumService invoiceType)
        {
            string sql = string.Empty;             //查询SQL语句

            if (this.Sql.GetSql("Fee.InvoiceService.GetPersonByInvoiceType", ref sql) == -1)
            {
                this.Err = "没有找到索引为:Fee.InvoiceService.GetPersonByInvoiceType的SQL语句";

                return(null);
            }

            return(this.QueryPersonsBySql(sql, invoiceType.ID.ToString()));
        }
        /// <summary>
        /// 检测所给的起始号和发票数量是否有效:
        /// </summary>
        /// <param name="startNO">起始号</param>
        /// <param name="endNO">发票数量</param>
        /// <param name="invoiceType">发票类型</param>
        /// <returns>有效true, 无效 false</returns>
        public bool InvoicesIsValid(long startNO, long endNO, InvoiceTypeEnumService invoiceType)
        {
            if (endNO < startNO)
            {
                this.Err = "输入的终止号大于起始号!";

                return(false);
            }

            string sql = string.Empty;

            ArrayList invoices = new ArrayList();

            if (this.Sql.GetSql("Fee.InvoiceService.SelectInvoices.2", ref sql) == -1)
            {
                this.Err = "没有找到索引为:Fee.InvoiceService.SelectInvoices.2的SQL语句";

                return(false);
            }

            invoices = QueryInvoicesBySql(sql, invoiceType.ID.ToString());

            //如果没有符合条件的发票,说明可以生成
            if (invoices == null)
            {
                return(true);
            }

            for (int i = 0; i < invoices.Count; i++)
            {
                Invoice invoice = invoices[i] as Invoice;

                if (Convert.ToInt64(invoice.BeginNO) <= startNO && startNO <= Convert.ToInt64(invoice.EndNO))
                {
                    return(false);
                }
                if (Convert.ToInt64(invoice.BeginNO) <= endNO && endNO <= Convert.ToInt64(invoice.EndNO))
                {
                    return(false);
                }
            }

            return(true);
        }
        /// <summary>
        /// 根据发票类型得到当前可用的起始号(默认)
        /// </summary>
        /// <param name="invoiceType">发票类型</param>
        /// <returns>可用起始号</returns>
        public string GetDefaultStartCode(InvoiceTypeEnumService invoiceType)
        {
            string sql     = string.Empty;        //查询SQL语句
            string startNO = string.Empty;        //起始号

            if (this.Sql.GetSql("Fee.InvoiceService.GetDefaultStartCode.1", ref sql) == -1)
            {
                this.Err = "没有找到索引为:Fee.InvoiceService.GetDefaultStartCode.1的SQL语句";

                return(null);
            }

            try
            {
                sql = string.Format(sql, invoiceType.ID);
            }
            catch (Exception e)
            {
                this.Err = e.Message;
                this.WriteErr();

                return(null);
            }

            startNO = this.ExecSqlReturnOne(sql);

            //如果起始号为空,那么默认为"000000000001"
            if (startNO == null || startNO == string.Empty)
            {
                startNO = "000000000001";
            }
            else            //否则,为当前号+1
            {
                startNO = (Convert.ToInt64(startNO) + 1).ToString().PadLeft(12, '0');
            }

            return(startNO);
        }
        public ArrayList SelectInvoicesByGroup(InvoiceTypeEnumService invoiceType, bool isGroup)
        {
            string strSql = "";

            if (this.Sql.GetSql("Fee.InvoiceService.SelectInvoices.ByTypeIsGroup", ref strSql) == -1)
            {
                return(null);
            }
            try
            {
                //0领取时间1发票种类2领取人3发票开始号4发票终止号5发票已用号
                //6 used_state7公用标志
                string typeid = invoiceType.ID.ToString();
                strSql = string.Format(strSql, typeid, isGroup == true ? 1 : 0);
            }
            catch (Exception ex)
            {
                this.ErrCode = ex.Message;
                this.Err     = ex.Message;
                return(null);
            }
            return(QueryInvoicesBySql(strSql));
        }