/// <summary>
 ///保存数据信息至凭证主表
 /// </summary>
 /// <param name="Model"></param>
 /// <returns></returns>
 public static bool InsertIntoAttestBill(AttestBillModel Model)
 {
     StringBuilder sql = new StringBuilder();
     sql.AppendLine("Insert into Officedba.CurrencyTypeSetting ( CompanyCD,CurrencyName, ");
     sql.AppendLine("CurrencySymbol,isMaster,ExchangeRate,ConvertWay,ChangeTime,UsedStatus )");
     sql.AppendLine("Values(@CompanyCD,@CurrencyName,@CurrencySymbol,");
     sql.AppendLine("@isMaster,@ExchangeRate,@ConvertWay,@ChangeTime,@UsedStatus )");
     SqlParameter[] parms = new SqlParameter[8];
     //parms[0] = SqlHelper.GetParameter("@CompanyCD", Model.CompanyCD);
     //parms[1] = SqlHelper.GetParameter("@CurrencyName", Model.CurrencyName);
     //parms[2] = SqlHelper.GetParameter("@CurrencySymbol", Model.CurrencySymbol);
     //parms[3] = SqlHelper.GetParameter("@isMaster", Model.isMaster);
     //parms[4] = SqlHelper.GetParameter("@ExchangeRate", Model.ExchangeRate);
     //parms[5] = SqlHelper.GetParameter("@ConvertWay", Model.ConvertWay);
     //parms[6] = SqlHelper.GetParameter("@ChangeTime", Model.ChangeTime);
     //parms[7] = SqlHelper.GetParameter("@UsedStatus", Model.UsedStatus);
     SqlHelper.ExecuteTransSql(sql.ToString(), parms);
     return SqlHelper.Result.OprateCount > 0 ? true : false;
 }
Beispiel #2
0
 /// <summary>
 /// 更新凭证信息
 /// </summary>
 /// <param name="Model">主表Model信息</param>
 /// <param name="List">明细表信息</param>
 /// <returns></returns>
 public static bool UpdateAttestBillInfo(AttestBillModel Model, ArrayList List)
 {
     try
     {
         return VoucherDBHelper.UpdateAttestBillInfo(Model,List);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Beispiel #3
0
        /// <summary>
        /// 凭证提交插入主,明细表信息--事务处理
        /// </summary>
        /// <param name="Model">主表Model</param>
        /// <param name="List">明细表Model加入List中</param>
        /// <returns></returns>
        public static bool InsertIntoAttestBill(AttestBillModel Model, ArrayList List, out int ID, string rblAccount)
        {
            try
            {
               UserInfoUtil userInfo = (UserInfoUtil)SessionUtil.Session["UserInfo"];
               string loginUserID = ((UserInfoUtil)SessionUtil.Session["UserInfo"]).UserID;
               LogInfoModel logModel = InitLogInfo(Model.AttestNo);
               logModel.Element = ConstUtil.LOG_PROCESS_INSERT;
               //设置操作日志类型 修改
               logModel.ObjectName = ConstUtil.CODING_RULE_TABLE_ATTESTBILL;

                bool suuc=VoucherDBHelper.InsertIntoAttestBill(Model,List,out ID,rblAccount);
                if (suuc)
                    logModel.Remark = ConstUtil.LOG_PROCESS_SUCCESS;
                else
                    logModel.Remark = ConstUtil.LOG_PROCESS_FAILED;
                LogDBHelper.InsertLog(logModel);

                for (int i = 0; i < List.Count; i++)
                {
                    LogInfoModel logModell = InitLogInfo((List[i] as AttestBillDetailsModel).Abstract);
                    logModell.ObjectName = ConstUtil.CODING_RULE_TABLE_ATTESTBILLDETIALS;
                    logModell.Element = ConstUtil.LOG_PROCESS_INSERT;
                    if (suuc)
                        logModell.Remark = ConstUtil.LOG_PROCESS_SUCCESS;
                    else
                        logModell.Remark = ConstUtil.LOG_PROCESS_FAILED;
                    LogDBHelper.InsertLog(logModell);

                }
                    return suuc;
            }
            catch (Exception exx)
            {
                throw exx;
            }
        }
        /// <summary>
        /// 凭证提交插入主,明细表信息--事务处理
        /// </summary>
        /// <param name="Model">主表Model</param>
        /// <param name="List">明细表Model加入List中</param>
        /// <returns></returns>
        public static bool InsertIntoAttestBill(AttestBillModel Model, ArrayList List, out int ID, string rblAccount)
        {
            StringBuilder sql = new StringBuilder();//插入凭证主表SQL语句
            sql.AppendLine("Insert into officedba.AttestBill ( VoucherDate, ");
            sql.AppendLine("AttestNo,Attachment,AttestName,Creator,");
            sql.AppendLine("CreateDate,status");
            sql.AppendLine(",FromTbale,FromName,");
            sql.AppendLine("FromValue,AccountStatus,Note,CompanyCD ) ");
            sql.AppendLine(" Values ( ");
            sql.AppendLine("@VoucherDate,@AttestNo,@Attachment,@AttestName,@Creator,");
            sql.AppendLine("@CreateDate,@status");
            sql.AppendLine(",@FromTbale,@FromName,");
            sql.AppendLine("@FromValue,@AccountStatus,@Note,@CompanyCD ) ");
            sql.AppendLine("set @IntID= @@IDENTITY");

            SqlParameter[] parms = new SqlParameter[14];
            parms[0] = SqlHelper.GetParameter("@VoucherDate", Model.VoucherDate);
		    parms[1] = SqlHelper.GetParameter("@AttestNo", Model.AttestNo);
		    parms[2] = SqlHelper.GetParameter("@Attachment",Model.Attachment );
		    parms[3] = SqlHelper.GetParameter("@AttestName",Model.AttestName );
		    parms[4] = SqlHelper.GetParameter("@Creator",Model.Creator );
		    parms[5] = SqlHelper.GetParameter("@CreateDate",Model.CreateDate );
		    parms[6] = SqlHelper.GetParameter("@status",Model.status );
		    parms[7] = SqlHelper.GetParameter("@FromTbale",Model.FromTbale );
		    parms[8] = SqlHelper.GetParameter("@FromName", Model.FromName);
		    parms[9] = SqlHelper.GetParameter("@FromValue", Model.FromValue);
		    parms[10] = SqlHelper.GetParameter("@AccountStatus",Model.AccountStatus );
		    parms[11] = SqlHelper.GetParameter("@Note", Model.Note==null?"":Model.Note);
            parms[12] = SqlHelper.GetParameter("@CompanyCD",Model.CompanyCD);
            parms[13] = SqlHelper.GetOutputParameter("@IntID", SqlDbType.Int);

            SqlConnection conn = new SqlConnection(SqlHelper._connectionStringStr);
            conn.Open();
            SqlTransaction mytran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.Transaction = mytran;
            try
            {
                if (parms != null && parms.Length > 0)
                {
                    foreach (SqlParameter item in parms)
                        cmd.Parameters.Add(item);
                }
                cmd.CommandText = sql.ToString();
                cmd.ExecuteNonQuery();
                ID = Convert.ToInt32(parms[13].Value);
                string KeyID = string.Empty;//主表关联明细表,明细表对应的主表ID
                //string GetInsertIDSql = string.Format(@"select ID from officedba.AttestBill where AttestNo='{0}' and CompanyCD='{1}' and VoucherDate='{2}' ", Model.AttestNo, Model.CompanyCD, Model.VoucherDate);//获取上面插入主表信息的数据库主键ID
                //cmd.CommandText = GetInsertIDSql;
                KeyID =ID.ToString();
                if (KeyID.Trim().Length > 0)
                {
                    for (int i = 0; i < List.Count; i++)
                    {
                        StringBuilder DetailsSql = new StringBuilder();//定义插入凭证明细表SQL语句
                        DetailsSql.AppendLine("Insert into Officedba.AttestBillDetails ( AttestBillID, ");
                        DetailsSql.AppendLine("Abstract,SubjectsCD,SubjectsDetails,DebitAmount,");
                        DetailsSql.AppendLine("CreditAmount,ExchangeRate,FormTBName,FileName,CurrencyTypeID,OriginalAmount )");
                        DetailsSql.AppendLine(" Values ( ");
                        DetailsSql.AppendLine(" @AttestBillID" + i + ",@Abstract" + i + ",@SubjectsCD" + i + ",@SubjectsDetails" + i + ",@DebitAmount" + i + ",");
                        DetailsSql.AppendLine(" @CreditAmount" + i + ",@ExchangeRate" + i + ",@FormTBName" + i + ",@FileName" + i + ",@CurrencyTypeID" + i + ",@OriginalAmount" + i + " )");

                        SqlParameter[] parmss = new SqlParameter[11];
                        parmss[0] = SqlHelper.GetParameter("@AttestBillID" + i + "", KeyID);
                        parmss[1] = SqlHelper.GetParameter("@Abstract" + i + "", (List[i] as AttestBillDetailsModel).Abstract);
                        parmss[2] = SqlHelper.GetParameter("@SubjectsCD" + i + "", (List[i] as AttestBillDetailsModel).SubjectsCD);
                        parmss[3] = SqlHelper.GetParameter("@SubjectsDetails" + i + "", (List[i] as AttestBillDetailsModel).SubjectsDetails);
                        parmss[4] = SqlHelper.GetParameter("@DebitAmount" + i + "", (List[i] as AttestBillDetailsModel).DebitAmount);
                        parmss[5] = SqlHelper.GetParameter("@CreditAmount" + i + "", (List[i] as AttestBillDetailsModel).CreditAmount);
                        parmss[6] = SqlHelper.GetParameter("@ExchangeRate" + i + "", (List[i] as AttestBillDetailsModel).ExchangeRate);
                        parmss[7] = SqlHelper.GetParameter("@FormTBName" + i + "", (List[i] as AttestBillDetailsModel).FormTBName);
                        parmss[8] = SqlHelper.GetParameter("@FileName" + i + "", (List[i] as AttestBillDetailsModel).FileName);
                        parmss[9] = SqlHelper.GetParameter("@CurrencyTypeID" + i + "", (List[i] as AttestBillDetailsModel).CurrencyTypeID);
                        parmss[10] = SqlHelper.GetParameter("@OriginalAmount" + i + "", (List[i] as AttestBillDetailsModel).OriginalAmount);

                        if (parmss != null && parmss.Length > 0)
                        {
                            foreach (SqlParameter item in parmss)
                                cmd.Parameters.Add(item);
                        }
                        cmd.CommandText = DetailsSql.ToString();
                        cmd.ExecuteNonQuery();
                    }
                }
                else
                {
                    mytran.Rollback();
                    return false;
                }
                mytran.Commit();//事务提交 

                if (rblAccount == "1")
                {
                    InsertAccount(ID);
                }
                return true;

            }
            catch
            {
                mytran.Rollback();//事务回滚
                ID = 0;
                return false;
            }
            finally
            {
                conn.Close();
            }

        }
        /// <summary>
        /// 更新凭证信息
        /// </summary>
        /// <param name="Model">主表Model信息</param>
        /// <param name="List">明细表信息</param>
        /// <returns></returns>
        public static bool UpdateAttestBillInfo(AttestBillModel Model, ArrayList List)
        {
            StringBuilder sql = new StringBuilder();//更新凭证主表SQL语句
            sql.AppendLine("Update officedba.AttestBill set VoucherDate=@VoucherDate, ");
            sql.AppendLine("AttestNo=@AttestNo,Attachment=@Attachment,AttestName=@AttestName, ");
            sql.AppendLine("Creator=@Creator ");
            sql.AppendLine(" where ID=@ID ");

            SqlParameter[] parms = new SqlParameter[6];
            parms[0] = SqlHelper.GetParameter("@VoucherDate", Model.VoucherDate);
            parms[1] = SqlHelper.GetParameter("@AttestNo", Model.AttestNo);
            parms[2] = SqlHelper.GetParameter("@Attachment", Model.Attachment);
            parms[3] = SqlHelper.GetParameter("@AttestName", Model.AttestName);
            parms[4] = SqlHelper.GetParameter("@Creator", Model.Creator);
            parms[5] = SqlHelper.GetParameter("@ID", Model.ID);

            SqlConnection conn = new SqlConnection(SqlHelper._connectionStringStr);
            conn.Open();
            SqlTransaction mytran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.Transaction = mytran;
            try
            {
                if (parms != null && parms.Length > 0)
                {
                    foreach (SqlParameter item in parms)
                        cmd.Parameters.Add(item);
                }
                cmd.CommandText = sql.ToString();
                cmd.ExecuteNonQuery();
                string DeletAttestBillDetailsSql = string.Format(@"delete from officedba.AttestBillDetails where AttestBillID='{0}'", Model.ID);//删除主表对应的明细表信息
                cmd.CommandText = DeletAttestBillDetailsSql;
                cmd.ExecuteNonQuery();
                for (int i = 0; i < List.Count; i++)
                {
                    StringBuilder DetailsSql = new StringBuilder();//定义插入凭证明细表SQL语句
                    DetailsSql.AppendLine("Insert into Officedba.AttestBillDetails ( AttestBillID, ");
                    DetailsSql.AppendLine("Abstract,SubjectsCD,SubjectsDetails,DebitAmount,");
                    DetailsSql.AppendLine("CreditAmount,ExchangeRate,FormTBName,FileName,CurrencyTypeID,OriginalAmount )");
                    DetailsSql.AppendLine(" Values ( ");
                    DetailsSql.AppendLine(" @AttestBillID" + i + ",@Abstract" + i + ",@SubjectsCD" + i + ",@SubjectsDetails" + i + ",@DebitAmount" + i + ",");
                    DetailsSql.AppendLine(" @CreditAmount" + i + ",@ExchangeRate" + i + ",@FormTBName" + i + ",@FileName" + i + ",@CurrencyTypeID" + i + ",@OriginalAmount" + i + " )");

                    SqlParameter[] parmss = new SqlParameter[11];
                    parmss[0] = SqlHelper.GetParameter("@AttestBillID" + i + "", Model.ID);
                    parmss[1] = SqlHelper.GetParameter("@Abstract" + i + "", (List[i] as AttestBillDetailsModel).Abstract);
                    parmss[2] = SqlHelper.GetParameter("@SubjectsCD" + i + "", (List[i] as AttestBillDetailsModel).SubjectsCD);
                    parmss[3] = SqlHelper.GetParameter("@SubjectsDetails" + i + "", (List[i] as AttestBillDetailsModel).SubjectsDetails);
                    parmss[4] = SqlHelper.GetParameter("@DebitAmount" + i + "", (List[i] as AttestBillDetailsModel).DebitAmount);
                    parmss[5] = SqlHelper.GetParameter("@CreditAmount" + i + "", (List[i] as AttestBillDetailsModel).CreditAmount);
                    parmss[6] = SqlHelper.GetParameter("@ExchangeRate" + i + "", (List[i] as AttestBillDetailsModel).ExchangeRate);
                    parmss[7] = SqlHelper.GetParameter("@FormTBName" + i + "", (List[i] as AttestBillDetailsModel).FormTBName);
                    parmss[8] = SqlHelper.GetParameter("@FileName" + i + "", (List[i] as AttestBillDetailsModel).FileName);
                    parmss[9] = SqlHelper.GetParameter("@CurrencyTypeID" + i + "", (List[i] as AttestBillDetailsModel).CurrencyTypeID);
                    parmss[10] = SqlHelper.GetParameter("@OriginalAmount" + i + "", (List[i] as AttestBillDetailsModel).OriginalAmount);

                    if (parmss != null && parmss.Length > 0)
                    {
                        foreach (SqlParameter item in parmss)
                            cmd.Parameters.Add(item);
                    }
                    cmd.CommandText = DetailsSql.ToString();
                    cmd.ExecuteNonQuery();
                }
                mytran.Commit();//事务提交
                return true;

            }
            catch
            {
                mytran.Rollback();//事务回滚
                return false;
            }
            finally
            {
                conn.Close();
            }
        }
        public static bool ConfirmFees(string OrderNO,FeesModel FeesM, List<FeesDetailModel> FeesDetailM, out string strMsg)
        {
            string  CompanyCD = ((UserInfoUtil)SessionUtil.Session["UserInfo"]).CompanyCD;
            string strSq = string.Empty;
            bool isSuc = false;
            strMsg = "";
            //判断单据是否为制单状态,非制单状态不能确认
            if (isHandle(OrderNO, "0"))
            {
                //TransactionManager tran = new TransactionManager();
                //tran.BeginTransaction();
                try
                {                   
                    //判断是否启用自动生成凭证
                    //((UserInfoUtil)SessionUtil.Session["UserInfo"]).IsApply;//自动审核登帐
                    //((UserInfoUtil)SessionUtil.Session["UserInfo"]).IsVoucher;//自动生成凭证
                    if (((UserInfoUtil)SessionUtil.Session["UserInfo"]).IsVoucher == true)
                    {
                        AttestBillModel Model = new AttestBillModel();//凭证主表实例
                        ArrayList DetailList = new ArrayList();//凭证明细数组
                        Model.CompanyCD = CompanyCD;
                        Model.FromName = "";
                        Model.Attachment = 1;//附件数
                        Model.AttestName = "记账凭证";//凭证名称
                        Model.VoucherDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));//凭证日期
                        Model.AttestNo = "记-" + VoucherDBHelper.GetMaxAttestNo(CompanyCD, DateTime.Now.ToString("yyyy-MM-dd"));//凭证号
                        Model.Creator = ((UserInfoUtil)SessionUtil.Session["UserInfo"]).EmployeeID;//制单人
                        Model.CreateDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));//制单日期
                        Model.FromTbale = "officedba.Fees";//来源表名
                        Model.FromValue = FeesM.ID;//来源表主键

                        AttestBillDetailsModel DetailModel = new AttestBillDetailsModel();//凭证明细表实例
                        DetailModel.Abstract = FeesM.Note;// dt.Rows[0]["Abstract"].ToString();//摘要
                        DetailModel.CurrencyTypeID = Convert.ToInt32(FeesM.CurrencyType); //币种
                        DetailModel.ExchangeRate = FeesM.CurrencyRate;//汇率
                        DetailModel.SubjectsCD = FeesM.SubjectsNo;//科目编号
                        DetailModel.OriginalAmount = FeesM.TotalPrice;//原币金额
                        DetailModel.DebitAmount = 0;//借方金额
                        DetailModel.CreditAmount = FeesM.TotalPrice * Convert.ToDecimal(FeesM.CurrencyRate);//贷方金额

                        DetailModel.SubjectsDetails = "";
                        DetailModel.FormTBName = "";
                        DetailModel.FileName = "";
                        string Auciliary = VoucherDBHelper.GetSubjectsAuciliaryCD(FeesM.SubjectsNo, CompanyCD);

                        if (Auciliary == "供应商" || Auciliary == "客户" || Auciliary == "职员")
                        {
                            DetailModel.SubjectsDetails = FeesM.ContactUnits;//辅助核算
                            if (Auciliary == "供应商")
                            {
                                DetailModel.FormTBName = "officedba.ProviderInfo";
                                DetailModel.FileName = "CustName";
                            }
                            else if (Auciliary == "客户")
                            {
                                DetailModel.FormTBName = "officedba.CustInfo";
                                DetailModel.FileName = "CustName";
                            }
                            else
                            {
                                DetailModel.FormTBName = "officedba.EmployeeInfo";
                                DetailModel.FileName = "EmployeeName";
                            }
                        }
                        DetailList.Add(DetailModel);


                        //foreach (DataRow row in tempdt.Rows)//根据凭证模板构建凭证明细数组
                        foreach (FeesDetailModel FDetailM in FeesDetailM)
                        {
                            AttestBillDetailsModel DetailM = new AttestBillDetailsModel();//凭证明细表实例
                            DetailM.Abstract = FeesM.Note;//摘要
                            DetailM.CurrencyTypeID = Convert.ToInt32(FeesM.CurrencyType);//币种
                            DetailM.ExchangeRate = FeesM.CurrencyRate;//汇率
                            DetailM.SubjectsCD = FDetailM.SubjectsNo;//科目编号
                            DetailM.OriginalAmount = FDetailM.FeeTotal;//原币金额
                            DetailM.DebitAmount = FDetailM.FeeTotal * Convert.ToDecimal(FeesM.CurrencyRate);//借方金额
                            DetailM.CreditAmount = 0;//贷方金额

                            DetailM.SubjectsDetails = "";
                            DetailM.FormTBName = "";
                            DetailM.FileName = "";

                            DetailList.Add(DetailM);
                        }

                        //自动生成凭证并根据IsApply判断是否登帐 --生成成功
                        int BillID = 0;
                        string IsA = ((UserInfoUtil)SessionUtil.Session["UserInfo"]).IsApply == true ? "1" : "0";
                        if (VoucherDBHelper.InsertIntoAttestBill(Model, DetailList, out BillID, IsA))
                        {

                            SqlParameter[] paras = new SqlParameter[3];
                            strSq = "update  officedba.Fees set ConfirmStatus='1' , Confirmor=@EmployeeID, ";
                            strSq += " ConfirmDate=getdate(),IsAccount='1',Accountor=@EmployeeID,AccountDate=getdate() ";

                            paras[0] = new SqlParameter("@EmployeeID", ((UserInfoUtil)SessionUtil.Session["UserInfo"]).EmployeeID);
                            paras[1] = new SqlParameter("@CompanyCD", ((UserInfoUtil)SessionUtil.Session["UserInfo"]).CompanyCD);
                            paras[2] = new SqlParameter("@FeesNo", OrderNO);

                            strSq += " WHERE FeesNo  = @FeesNo  and CompanyCD=@CompanyCD";

                            //SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, strSq, paras);
                            SqlHelper.ExecuteTransSql(strSq.ToString(), paras);
                            if (SqlHelper.Result.OprateCount > 0)
                            {
                                isSuc = true;
                                strMsg = "确认成功!";
                            }
                            else
                            {
                                isSuc = false;
                                strMsg = "生成凭证失败!";
                            }
                        }
                    }
                    else
                    {
                        SqlParameter[] paras = new SqlParameter[3];
                        strSq = "update  officedba.Fees set ConfirmStatus='1' , Confirmor=@EmployeeID, ";
                        strSq += " ConfirmDate=getdate() ";

                        paras[0] = new SqlParameter("@EmployeeID", ((UserInfoUtil)SessionUtil.Session["UserInfo"]).EmployeeID);
                        paras[1] = new SqlParameter("@CompanyCD", ((UserInfoUtil)SessionUtil.Session["UserInfo"]).CompanyCD);
                        paras[2] = new SqlParameter("@FeesNo", OrderNO);

                        strSq += " WHERE FeesNo  = @FeesNo  and CompanyCD=@CompanyCD";

                        SqlHelper.ExecuteTransSql(strSq.ToString(), paras);
                        if (SqlHelper.Result.OprateCount > 0)
                        {
                            isSuc = true;
                            strMsg = "确认成功!";
                        }
                        else
                        {
                            isSuc = false;
                            strMsg = "确认失败!";
                        }
                    }
                }
                catch (Exception ex)
                {
                    
                    //tran.Rollback();

                    isSuc = false;
                    strMsg = "确认失败,请联系系统管理员!";
                    throw ex;
                }
            }
            else
            {
                isSuc = false;
                strMsg = "该单据已被其他用户确认,不可再次确认!";
            }
            return isSuc;
        }
        /// <summary>
        /// 业务单确认时自动生成凭证--自动登帐--启用自动生成凭证时生成凭证后自动回写源单登记凭证状态
        /// </summary>
        /// <param name="TemplateType">模板类别(1.采购订单,2. 销售订单,3. 委托代销单,4. 销售退货单,5. 采购入库,6. 其他出库单,7. 销售出库单,8. 其他入库单,9.收款单,10.付款单)</param>
        /// <param name="CompanyCD">公司编号</param>
        /// <param name="IsVoucher">是否自动生成凭证 0 不生成 1 启用自动生成</param>
        /// <param name="IsApply">凭证是否自动登帐 0 不登帐 1 启用自动登帐</param>
        /// <param name="BillAmount">业务单含税金额合计</param>
        /// <param name="FromTBInfo">来源表信息,格式来源表名+,+来源表主键(业务单主表名称(带上架构),自动生成凭证的业务单主键)必填</param>
        /// <param name="CurrencyInfo">业务单币种信息,格式为(币种ID,汇率)必填,若业务单无币种汇率,则默认传本位币及汇率</param>
        /// <param name="ProOrCustID">科目辅助核算ID(默认为业务单中的供应商或客户主键)</param>
        /// <param name="returnV">返回提示信息</param>
        /// <returns></returns>
        public static bool AutoVoucherInsert(int TemplateType, string CompanyCD, string IsVoucher, string IsApply, decimal BillAmount, string FromTBInfo, string CurrencyInfo, int ProOrCustID, out string returnV) 
        {
            bool rev = true;
            string returnValue =string.Empty;
            int BillID = 0;//生成凭证的凭证主键
            if (IsVoucher == "1")//自动生成凭证
            {
                /*判断某业务单是否配置生成凭证模板--start*/
                StringBuilder SelectTemplateSQL = new StringBuilder();
                SelectTemplateSQL.AppendLine("select Abstract,TemNo from officedba.VoucherTemplate ");
                SelectTemplateSQL.AppendLine(" where CompanyCD=@CompanyCD and TemType=@TemType and UsedStatus='1' ");
                SqlCommand comm = new SqlCommand();
                comm.CommandText = SelectTemplateSQL.ToString();
                comm.Parameters.AddWithValue("@CompanyCD", SqlDbType.VarChar).Value = CompanyCD;
                comm.Parameters.AddWithValue("@TemType", SqlDbType.Int).Value = TemplateType;

                DataTable dt = SqlHelper.ExecuteSearch(comm);
                /*判断某业务单是否配置生成凭证模板--End*/
                if (dt != null && dt.Rows.Count > 0)
                {
                    /*获取业务单对应的凭证模板明细--start*/
                    StringBuilder TemplateDetailSQL = new StringBuilder();
                    TemplateDetailSQL.AppendLine(" select SubjectsNo,Direction,Scale  ");
                    TemplateDetailSQL.AppendLine(" from officedba.VoucherTemplateDetail ");
                    TemplateDetailSQL.AppendLine(" where  CompanyCD=@CompanyCD ");
                    TemplateDetailSQL.AppendLine(" and TemNo=@TemNo");

                    SqlCommand cmd = new SqlCommand();
                    cmd.CommandText = TemplateDetailSQL.ToString();
                    cmd.Parameters.AddWithValue("@CompanyCD", SqlDbType.VarChar).Value = CompanyCD;
                    cmd.Parameters.AddWithValue("@TemNo", SqlDbType.VarChar).Value = dt.Rows[0]["TemNo"].ToString();

                    DataTable tempdt = SqlHelper.ExecuteSearch(cmd);
                    /*获取业务单对应的凭证模板明细--End*/
                    if (tempdt != null && tempdt.Rows.Count > 0)
                    {


                        AttestBillModel Model = new AttestBillModel();//凭证主表实例
                        ArrayList DetailList = new ArrayList();//凭证明细数组
                        Model.Attachment = 1;//附件数
                        Model.AttestName = "记账凭证";//凭证名称
                        Model.VoucherDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));//凭证日期
                        Model.AttestNo = "记-" + VoucherDBHelper.GetMaxAttestNo(CompanyCD, DateTime.Now.ToString("yyyy-MM-dd"));//凭证号
                        Model.Creator = ((UserInfoUtil)SessionUtil.Session["UserInfo"]).EmployeeID;//制单人
                        Model.CreateDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));//制单日期
                        Model.FromTbale = FromTBInfo.Split(',')[0].ToString();//来源表名
                        Model.FromValue = FromTBInfo.Split(',')[1].ToString();//来源表主键
                        Model.CompanyCD = CompanyCD;
                        Model.FromName = "";
                        foreach (DataRow row in tempdt.Rows)//根据凭证模板构建凭证明细数组
                        {
                            AttestBillDetailsModel DetailModel = new AttestBillDetailsModel();//凭证明细表实例
                            DetailModel.Abstract = dt.Rows[0]["Abstract"].ToString();//摘要
                            DetailModel.CurrencyTypeID = int.Parse(CurrencyInfo.Split(',')[0].ToString());//币种
                            DetailModel.ExchangeRate = Convert.ToDecimal(CurrencyInfo.Split(',')[1].ToString());//汇率
                            DetailModel.SubjectsCD = row["SubjectsNo"].ToString();//科目编号
                            decimal orgAmount = BillAmount * Convert.ToDecimal(row["Scale"].ToString()) / 100;
                            DetailModel.OriginalAmount = orgAmount;//原币金额

                            if (row["Direction"].ToString() == "0")
                            {
                                DetailModel.DebitAmount = orgAmount * Convert.ToDecimal(CurrencyInfo.Split(',')[1].ToString());//借方金额
                                DetailModel.CreditAmount = 0;//贷方金额
                            }
                            else
                            {
                                DetailModel.DebitAmount = 0;//借方金额
                                DetailModel.CreditAmount = orgAmount * Convert.ToDecimal(CurrencyInfo.Split(',')[1].ToString());//贷方金额
                            }


                            string Auciliary = VoucherDBHelper.GetSubjectsAuciliaryCD(row["SubjectsNo"].ToString(), CompanyCD);
                            DetailModel.SubjectsDetails = "";
                            DetailModel.FormTBName = "";
                            DetailModel.FileName = "";
                            if (Auciliary == "供应商" || Auciliary == "客户")
                            {
                                DetailModel.SubjectsDetails = ProOrCustID.ToString();//辅助核算
                                if (Auciliary == "供应商")
                                {
                                    DetailModel.FormTBName = "officedba.ProviderInfo";
                                    DetailModel.FileName = "CustName";
                                }
                                else
                                {
                                    DetailModel.FormTBName = "officedba.CustInfo";
                                    DetailModel.FileName = "CustName";
                                }
                            }
                            DetailList.Add(DetailModel);
                        }
                        if (VoucherDBHelper.InsertIntoAttestBill(Model, DetailList, out BillID, "0"))//自动生成凭证并根据IsApply判断是否登帐 --生成成功
                        {


                            /*更新原始业务单登记凭证状态 start*/
                            StringBuilder UpdateSourceTB = new StringBuilder();
                            UpdateSourceTB.AppendLine("update {0} set IsAccount=@IsAccount,AccountDate=@AccountDate, ");
                            UpdateSourceTB.AppendLine("Accountor=@Accountor , AttestBillID=@AttestBillID ");
                            UpdateSourceTB.AppendLine(" where ID=@ID ");

                            string UpdateSourceTBSQL = string.Format(UpdateSourceTB.ToString(), FromTBInfo.Split(',')[0].ToString());

                            SqlParameter[] parms = 
                           {
                               new SqlParameter("@IsAccount","1"),
                               new SqlParameter("@AccountDate",DateTime.Now.ToString("yyyy-MM-dd")),
                               new SqlParameter("@Accountor",((UserInfoUtil)SessionUtil.Session["UserInfo"]).EmployeeID.ToString()),
                               new SqlParameter("@AttestBillID",BillID.ToString()),
                               new SqlParameter("@ID",FromTBInfo.Split(',')[1].ToString())
                           };

                            if (SqlHelper.ExecuteTransSql(UpdateSourceTBSQL, parms) > 0)//更新业务单成功
                            {
                                //
                            }
                            else
                            {
                                returnValue = " 警告:自动生成凭证失败!";
                                rev = false;
                                //删除凭证操作开始
                                VoucherDBHelper.DeleteAttestBillInfo(BillID.ToString());
                                //删除凭证操作结束
                            }
                            /*更新原始业务单登记凭证状态 End*/



                            if (IsApply == "1")//自动生成凭证是否自动登帐 --否
                            {
                                if (!VoucherDBHelper.InsertAccount(BillID))
                                {

                                    returnValue = " 警告:自动生成凭证失败!";
                                    rev = false;
                                    //删除凭证操作开始
                                    VoucherDBHelper.DeleteAttestBillInfo(BillID.ToString());
                                    //删除凭证操作结束


                                    /*更新原始业务单登记凭证状态 start*/
                                    StringBuilder AntiUpdateSourceTB = new StringBuilder();
                                    AntiUpdateSourceTB.AppendLine("update {0} set IsAccount=@IsAccount,AccountDate=@AccountDate, ");
                                    AntiUpdateSourceTB.AppendLine("Accountor=@Accountor , AttestBillID=@AttestBillID ");
                                    AntiUpdateSourceTB.AppendLine(" where ID=@ID ");

                                    string AntiUpdateSourceTBSQL = string.Format(UpdateSourceTB.ToString(), FromTBInfo.Split(',')[0].ToString());

                                    SqlParameter[] Antiparms = 
                                   {
                                       new SqlParameter("@IsAccount","0"),
                                       new SqlParameter("@AccountDate",DateTime.Now.ToString("yyyy-MM-dd")),
                                       new SqlParameter("@Accountor",((UserInfoUtil)SessionUtil.Session["UserInfo"]).EmployeeID.ToString()),
                                       new SqlParameter("@AttestBillID",BillID.ToString()),
                                       new SqlParameter("@ID",FromTBInfo.Split(',')[1].ToString())
                                   };

                                    SqlHelper.ExecuteTransSql(AntiUpdateSourceTBSQL, Antiparms);//更新业务单成功

                                    /*更新原始业务单登记凭证状态 End*/
                                }
                            }

                        }
                        else
                        {


                            returnValue = " 警告:自动生成凭证失败!";
                            rev = false;
                        }



                    }


                }
                else
                {
                    //未设置模板
                    returnValue = "警告:自动生成凭证失败,请在“财务管理-初始设置”中设置或启用对应的凭证模板!";
                    rev = false;
                }
            }
            returnV= returnValue;
            return rev;
        }
      public static bool BuildAttestBill(AttestBillModel Attestmodel, out int ID)
      {
          bool result = false;
          StringBuilder Attestsql = new StringBuilder();
          Attestsql.AppendLine("Insert into officedba.AttestBill");
          Attestsql.AppendLine("(CompanyCD,VoucherDate,AttestNo,");
          Attestsql.AppendLine("AttestName,Creator,CreateDate,");
          Attestsql.AppendLine("status,FromTbale,FromValue)");
          Attestsql.AppendLine("Values(@CompanyCD,@VoucherDate,");
          Attestsql.AppendLine("@AttestNo,@AttestName,@Creator,getdate(),");
          Attestsql.AppendLine("@status,@FromTbale,@FromValue)");
          Attestsql.AppendLine("set @IntID= @@IDENTITY");


          SqlCommand CmdAttest = new SqlCommand();

          CmdAttest.Parameters.AddWithValue("@CompanyCD", SqlDbType.VarChar).Value = Attestmodel.CompanyCD;
          CmdAttest.Parameters.AddWithValue("@AttestNo", SqlDbType.VarChar).Value = Attestmodel.AttestNo;
          CmdAttest.Parameters.AddWithValue("@AttestName", SqlDbType.VarChar).Value = Attestmodel.AttestName;
          CmdAttest.Parameters.AddWithValue("@Creator", SqlDbType.Int).Value = Attestmodel.Creator;
          CmdAttest.Parameters.AddWithValue("@status", SqlDbType.Int).Value = Attestmodel.status;
          CmdAttest.Parameters.AddWithValue("@FromTbale", SqlDbType.VarChar).Value = Attestmodel.FromTbale;
          CmdAttest.Parameters.AddWithValue("@FromValue", SqlDbType.VarChar).Value = Attestmodel.FromValue;
          CmdAttest.Parameters.AddWithValue("@VoucherDate", SqlDbType.DateTime).Value = Attestmodel.VoucherDate;

          SqlParameter Ret = new SqlParameter("@IntID", SqlDbType.Int); //定义返回值参数 
          Ret.Direction = ParameterDirection.Output;
          CmdAttest.Parameters.Add(Ret);

          CmdAttest.CommandText = Attestsql.ToString();

          ArrayList cmdList = new ArrayList();
          cmdList.Add(CmdAttest);

          //添加已期末处理的项目信息
        //  InsertPeriodProced(Attestmodel.CompanyCD, ItemID,"1", PeriodNum, cmdList);
         // UpdateEndItemIsAccount(ItemID,cmdList);//更新登帐状态
          result = SqlHelper.ExecuteTransWithArrayList(cmdList);
          ID = Convert.ToInt32(Ret.Value);
          return result;
      }
        public static bool EndExchangeRate(string[] CurrTypeRate,
            string ItemID, string PeriodNum, ref string AttestNo, ref int AttestID,string DuringDate)
        {
            if (CurrTypeRate == null) return false;
            bool result = false;
            //获取当前企业代码
            string CompanyCD = ((UserInfoUtil)SessionUtil.Session["UserInfo"]).CompanyCD;
            try
            {
                #region 凭证实体
                //实例凭证单据实体对象
                AttestBillModel Attestmodel = new AttestBillModel();
                //凭证明细实体定义
                AttestBillDetailsModel Detailmodel = null;
                #endregion
                //汇总总金额
                decimal SumTotalPrice = 0;
                //登帐凭证ID号
                string EndAccountID = string.Empty;
                //凭证单据ID
                int ID;
                //会计科目代码
                string SubjectsCD = string.Empty;
                //定义数组存储实体对象
                ArrayList modelList = new ArrayList();

                //获取本币币种ID
                int MasterCurrencyID = Convert.ToInt32(CurrTypeSettingDBHelper.GetMasterCurrency(CompanyCD).Rows[0]["ID"]);
                //获取结转汇兑损益摘要ID

                /*修改于20090604 摘要直接存名称 by 莫申林  start*/
                //int AbstractID;
                //AbstractID = Convert.ToInt32(SummarySettingBus.GetSummaryIDByName(ConstUtil.SUMMARY_JZHDSY_NAME));
                string AbstractID;
                AbstractID = ConstUtil.SUMMARY_JZHDSY_NAME;
                /*修改于20090604 摘要直接存名称 by 莫申林  end*/

                //对输入的资料日期进行处理开始
                //开始时间
                string StartDate = string.Empty;
                //结束时间
                string EndDate = string.Empty;
                string DayEnd = string.Empty;//月末数
                int MothString = Convert.ToInt32(DuringDate.Split('-')[1].ToString());
                int yearString = Convert.ToInt32(DuringDate.Split('-')[0].ToString());
                if (MothString == 4 || MothString == 6 || MothString == 9 || MothString == 11)
                {
                    DayEnd = "-30";
                }
                else if (MothString == 2)
                {
                    if (((yearString % 4 == 0 && yearString % 100 == 0)) || (yearString % 400 == 0))
                    {
                        DayEnd = "-29";
                    }
                    else
                    {
                        DayEnd = "-28";
                    }
                }
                else
                {
                    DayEnd = "-31";
                }
                StartDate = yearString.ToString() + "-" + MothString.ToString() + "-01";
                EndDate = yearString.ToString() + "-" + MothString.ToString() + DayEnd;
                foreach (string array in CurrTypeRate)
                {
                    decimal TempPrice = 0;
                    string[] Currency = array.Split(',');
                    DataTable dt = EndItemProcessing.GetAccountBookEndAmount(CompanyCD, MasterCurrencyID, Convert.ToInt32(Currency[0]),StartDate,EndDate);
                    if (dt != null && dt.Rows.Count > 0)
                    {
                        foreach (DataRow rows in dt.Rows)
                        {
                            //外币本币期末余额
                            decimal WbEndAmount, BbEndAmount = 0;
                            //读取外币期末余额
                            WbEndAmount = Convert.ToDecimal(rows["wbEndAmount"]);
                            //读取本币期末余额
                            BbEndAmount = Convert.ToDecimal(rows["EndAmount"]);
                            //计算利率后的金额
                            decimal TotalPrice = WbEndAmount * (Convert.ToDecimal(Currency[1])) - BbEndAmount;
                            SumTotalPrice += TotalPrice;
                            TempPrice += TotalPrice;

                            #region 科目凭证明细赋值
                            if (TotalPrice != 0)
                            {
                                Detailmodel = new AttestBillDetailsModel();//实例凭证明细实体对象
                                // Detailmodel.AttestBillID = ID;
                                Detailmodel.Abstract = AbstractID; //摘要ID
                                Detailmodel.SubjectsCD = rows["SubjectsCD"].ToString();//库存现金科目
                                if (TotalPrice > 0)
                                {
                                    Detailmodel.DebitAmount = TotalPrice;//借方金额
                                    Detailmodel.CreditAmount = 0;//贷方金额
                                }
                                else
                                {
                                    Detailmodel.DebitAmount = 0;//借方金额为0
                                    //Modified 2009-06-26
                                    TotalPrice = Convert.ToDecimal(TotalPrice.ToString().Substring(TotalPrice.ToString().IndexOf("-") + 1, TotalPrice.ToString().Length - TotalPrice.ToString().IndexOf("-") - 1));
                                    Detailmodel.CreditAmount = TotalPrice;//贷方金额
                                }
                                Detailmodel.CurrencyTypeID = MasterCurrencyID;
                                //Detailmodel.CurrencyTypeID = Convert.ToInt32(Currency[0]);//币种
                                Detailmodel.OriginalAmount = TotalPrice;//原币金额
                                //Modified 2009-06-26
                                //  Detailmodel.ExchangeRate = Convert.ToDecimal(Currency[1]);//汇率
                                Detailmodel.ExchangeRate = 1;
                                //明细实体对象添加到数组中
                                modelList.Add(Detailmodel);
                            }
                           #endregion
                        }
                        #region 2009-06-07 Modified by jiangym
                        //if (TempPrice != 0)
                        //{
                        //    #region 本年利润凭证明细赋值
                        //    Detailmodel = new AttestBillDetailsModel();//实例本年利润凭证明细实体对象
                        //  //  Detailmodel.AttestBillID = ID;
                        //    Detailmodel.Abstract = AbstractID; //摘要ID
                        //    Detailmodel.SubjectsCD = SUBJECT_CD_KCXJ_CODE;//库存现金科目
                        //    if (TempPrice > 0)
                        //    {
                        //        Detailmodel.DebitAmount = TempPrice;//借方金额
                        //        Detailmodel.CreditAmount = 0;//贷方金额
                        //    }
                        //    else
                        //    {
                        //        Detailmodel.DebitAmount = 0;//借方金额为0
                        //        //Modified 2009-06-26
                        //        TempPrice = Convert.ToDecimal(TempPrice.ToString().Substring(TempPrice.ToString().IndexOf("-") + 1, TempPrice.ToString().Length - TempPrice.ToString().IndexOf("-") - 1));

                        //        Detailmodel.CreditAmount = TempPrice;//贷方金额
                        //    }
                        //    Detailmodel.CurrencyTypeID = MasterCurrencyID;

                        //  //  Detailmodel.CurrencyTypeID = Convert.ToInt32(Currency[0]);//币种
                        //    Detailmodel.OriginalAmount = TempPrice;//原币金额

                        //    //Modified 2009-06-26

                        //    Detailmodel.ExchangeRate = 1;
                        //   // Detailmodel.ExchangeRate = Convert.ToDecimal(Currency[1]);//汇率


                        //    //明细实体对象添加到数组中
                        //    modelList.Add(Detailmodel);
                        //    #endregion
                        //}
                        #endregion
                    }


                }

                #region 生成汇兑损益明细
                if (SumTotalPrice != 0)
                {
                    Detailmodel = new AttestBillDetailsModel();
                    //  Detailmodel.AttestBillID = ID;
                    Detailmodel.Abstract = AbstractID; //摘要ID
                    Detailmodel.SubjectsCD = SUBJECT_CD_HDSY_CODE;//汇兑损益科目
                    if (SumTotalPrice > 0)
                    {
                        Detailmodel.DebitAmount = 0;//借方金额为0
                        Detailmodel.CreditAmount = SumTotalPrice;//贷方金额
                    }
                    else
                    {
                        SumTotalPrice = Convert.ToDecimal(SumTotalPrice.ToString().Substring(SumTotalPrice.ToString().IndexOf("-") + 1, SumTotalPrice.ToString().Length - SumTotalPrice.ToString().IndexOf("-") - 1));
                        Detailmodel.DebitAmount = SumTotalPrice;//借方金额

                        //Modified 2009-06-26
                    
                        Detailmodel.CreditAmount = 0;//贷方金额为0
                    }
                    Detailmodel.CurrencyTypeID = MasterCurrencyID;//本币类别
                    Detailmodel.OriginalAmount = SumTotalPrice;//原币金额
                    Detailmodel.ExchangeRate = 1;//汇率
                    //明细实体对象添加到数组中
                    modelList.Add(Detailmodel);
                }
                #endregion
                //判断是否有凭证明细
                if (modelList.Count > 0)
                {
                    #region 凭证单据实体赋值
                    int PeriodRecordID=0;

                    result = EndItemProcessing.InsertPeriodProced(CompanyCD, ItemID,PeriodNum,"1",out   PeriodRecordID);
                    if (result)
                    {
                        Attestmodel.CompanyCD = CompanyCD;
                        //获取生成的凭证号
                        Attestmodel.AttestNo = "记-" + VoucherDBHelper.GetMaxAttestNo(CompanyCD, DateTime.Now.ToString());
                        AttestNo = Attestmodel.AttestNo;
                        Attestmodel.VoucherDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
                        Attestmodel.AttestName = "记账凭证";
                        Attestmodel.Creator = ((UserInfoUtil)SessionUtil.Session["UserInfo"]).EmployeeID;
                        Attestmodel.status = 0;
                        Attestmodel.FromTbale = "officedba.EndItemProcessedRecord";
                        if (PeriodRecordID > 0)
                        {
                            Attestmodel.FromValue = PeriodRecordID.ToString();
                        }
                        else
                        {
                            Attestmodel.FromValue = "";
                        }
                    }
                    //添加凭证单据信息
                    result = EndItemProcessing.BuildAttestBill(Attestmodel, out ID);
                    AttestID = ID;
                    if (result)
                    {
                        //遍历明细实体给单据编号赋值
                        for (int j = 0; j < modelList.Count; j++)
                        {
                            (modelList[j] as AttestBillDetailsModel).AttestBillID = ID;
                        }
                    }
                    #endregion
                }

                result = EndItemProcessing.BuildEndRatechangeDetailInfo(modelList);
                if (modelList.Count > 0)
                {
                    if (result)
                    {
                        VoucherBus.SetStatus(AttestID.ToString(), "1", "status", 0);
                        VoucherBus.InsertAccount(AttestID);
                    }
                }
                //凭证自动登帐及自动审核
           
                return result;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// 损益科目期末结转
        /// </summary>
        /// <param name="ItemID"></param>
        /// <param name="PeriodNum"></param>
        /// <param name="getAttestNo"></param>
        /// <param name="AttestID"></param>
        /// <param name="DuringDate"></param>
        /// <returns></returns>
        public static bool ProfitandLossMade(string ItemID, string PeriodNum, ref string getAttestNo, ref string AttestID, string DuringDate)
        {
            try
            {
                string CompanyCD = ((UserInfoUtil)SessionUtil.Session["UserInfo"]).CompanyCD;
                bool result = false;

                 //开始时间
                string StartDate = string.Empty;
                //结束时间
                string EndDate = string.Empty;
                //月末数
                string DayEnd = string.Empty;
                int MothString = Convert.ToInt32(DuringDate.Split('-')[1].ToString());
                int yearString = Convert.ToInt32(DuringDate.Split('-')[0].ToString());
                if (MothString == 4 || MothString == 6 || MothString == 9 || MothString == 11)
                {
                    DayEnd = "-30";
                }
                else if (MothString == 2)
                {
                    if (((yearString % 4 == 0 && yearString % 100 == 0)) || (yearString % 400 == 0))
                    {
                        DayEnd = "-29";
                    }
                    else
                    {
                        DayEnd = "-28";
                    }
                }
                else
                {
                    DayEnd = "-31";
                }
                StartDate = yearString.ToString() + "-" + MothString.ToString() + "-01";
                EndDate = yearString.ToString() + "-" + MothString.ToString() + DayEnd;
                if (!CheckProfitEndAmount(StartDate, EndDate))
                {

                    //获取本币币种ID
                    int CurrencyID = Convert.ToInt32(CurrTypeSettingDBHelper.GetMasterCurrency(CompanyCD).Rows[0]["ID"]);
                    //获取结转本期损益摘要ID
                    // 修改于20090604 摘要直接存名称 by 莫申林
                    /*修改于20090604 摘要直接存名称 by 莫申林  start*/
                    //int AbstractID;
                    //AbstractID = Convert.ToInt32(SummarySettingBus.GetSummaryIDByName(ConstUtil.SUMMARY_JZBQSY_NAMEA));
                    string AbstractID;
                    AbstractID = ConstUtil.SUMMARY_JZBQSY_NAMEA;
                    /*修改于20090604 摘要直接存名称 by 莫申林  end*/


                    AttestBillModel Attestmodel = new AttestBillModel(); //实例凭证单据实体对象
                    #region 凭证单据实体赋值
                    Attestmodel.CompanyCD = CompanyCD;
                   
                    Attestmodel.AttestName = "记账凭证";
                    Attestmodel.Creator = ((UserInfoUtil)SessionUtil.Session["UserInfo"]).EmployeeID;
                    Attestmodel.status = 0;
                    Attestmodel.FromTbale = "officedba.EndItemProcessedRecord";
                    //   Attestmodel.FromValue = ItemID;
                    Attestmodel.VoucherDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
                    Attestmodel.CreateDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
                    Attestmodel.Attachment = 0;
                    Attestmodel.FromName = "ProfitandLoss";
                    #region 更新期末处理结转损益状态
                    int PeriodRecordID = 0;
                    result = EndItemProcessing.InsertPeriodProced(CompanyCD, ItemID, PeriodNum, "1", out  PeriodRecordID);
                    #endregion

                    if (PeriodRecordID > 0)
                    {
                        Attestmodel.FromValue = PeriodRecordID.ToString();
                    }
                    else
                    {
                        Attestmodel.FromValue = "";
                    }
                    #endregion

                    DataTable sourcedt = GetProfitandLossInfo(StartDate, EndDate);//获取账簿中所有损益类科目的期末余额
                    DataTable debitdt = GetChangeDt(sourcedt, 0);//期末余额为借方的损益类科目信息数据集
                    DataTable creditdt = GetChangeDt(sourcedt, 1);//期末余额为贷方的损益类科目信息数据集

                    
                    if (debitdt != null && debitdt.Rows.Count > 0)
                    {
                        decimal Money = 0;
                        int VouchreID = 0;
                        ArrayList MyList = new ArrayList();
                        Attestmodel.AttestNo = "记-" + VoucherDBHelper.GetMaxAttestNo(CompanyCD, DateTime.Now.ToString("yyyy-MM-dd"));
                        getAttestNo += Attestmodel.AttestNo + ",";


                        foreach (DataRow dr in debitdt.Rows)
                        {
                            AttestBillDetailsModel Detailmodel = new AttestBillDetailsModel();//凭证明细实体定义
                            Detailmodel.Abstract = AbstractID;//摘要ID
                            Detailmodel.SubjectsCD = dr["SubjectsCD"].ToString();
                            Detailmodel.CurrencyTypeID = CurrencyID;
                            Detailmodel.ExchangeRate = 1;
                            Detailmodel.CreditAmount = Convert.ToDecimal(dr["EndM"].ToString()); //贷方金额
                            Detailmodel.OriginalAmount = Convert.ToDecimal(dr["EndM"].ToString());//外币金额
                            Detailmodel.DebitAmount = 0; //借方金额
                            Detailmodel.SubjectsDetails = "";
                            Detailmodel.FormTBName = "";
                            Detailmodel.FileName = "";
                            Money += Convert.ToDecimal(dr["EndM"].ToString());
                            MyList.Add(Detailmodel);

                        }

                        #region 本年利润凭证明细赋值
                        AttestBillDetailsModel AttestDetailmodel = new AttestBillDetailsModel();//凭证明细实体定义
                        AttestDetailmodel.Abstract = AbstractID;//摘要ID
                        AttestDetailmodel.SubjectsCD = SUBJECT_CD_DNLY_CODE;//本年利润科目
                        AttestDetailmodel.DebitAmount = Money;//借方金额
                        AttestDetailmodel.CurrencyTypeID = CurrencyID;
                        AttestDetailmodel.ExchangeRate = 1;
                        AttestDetailmodel.CreditAmount = 0;//贷方金额
                        AttestDetailmodel.OriginalAmount = Money;//外币金额
                        AttestDetailmodel.SubjectsDetails = "";
                        AttestDetailmodel.FormTBName = "";
                        AttestDetailmodel.FileName = "";
                        //本年利润实体对象添加到数组中
                        MyList.Add(AttestDetailmodel);
                        #endregion

                        result=VoucherBus.InsertIntoAttestBill(Attestmodel, MyList, out VouchreID, "1");
                        AttestID += VouchreID + ",";
                    }


                    if (creditdt != null && creditdt.Rows.Count > 0)
                    {
                        decimal Money = 0;
                        int VouchreID = 0;
                        ArrayList MyList = new ArrayList();
                        Attestmodel.AttestNo = "记-" + VoucherDBHelper.GetMaxAttestNo(CompanyCD, DateTime.Now.ToString("yyyy-MM-dd"));
                        getAttestNo += Attestmodel.AttestNo + ",";


                        foreach (DataRow dr in creditdt.Rows)
                        {
                            AttestBillDetailsModel Detailmodel = new AttestBillDetailsModel();//凭证明细实体定义
                            Detailmodel.Abstract = AbstractID;//摘要ID
                            Detailmodel.SubjectsCD = dr["SubjectsCD"].ToString();
                            Detailmodel.CurrencyTypeID = CurrencyID;
                            Detailmodel.ExchangeRate = 1;
                            Detailmodel.CreditAmount = 0; //贷方金额
                            Detailmodel.OriginalAmount = Convert.ToDecimal(dr["EndM"].ToString());//外币金额
                            Detailmodel.DebitAmount = Convert.ToDecimal(dr["EndM"].ToString()); //借方金额
                            Detailmodel.SubjectsDetails = "";
                            Detailmodel.FormTBName = "";
                            Detailmodel.FileName = "";
                            Money += Convert.ToDecimal(dr["EndM"].ToString());
                            MyList.Add(Detailmodel);

                        }

                        #region 本年利润凭证明细赋值
                        AttestBillDetailsModel AttestDetailmodel = new AttestBillDetailsModel();//凭证明细实体定义
                        AttestDetailmodel.Abstract = AbstractID;//摘要ID
                        AttestDetailmodel.SubjectsCD = SUBJECT_CD_DNLY_CODE;//本年利润科目
                        AttestDetailmodel.DebitAmount = 0;//借方金额
                        AttestDetailmodel.CurrencyTypeID = CurrencyID;
                        AttestDetailmodel.ExchangeRate = 1;
                        AttestDetailmodel.CreditAmount = Money;//贷方金额
                        AttestDetailmodel.OriginalAmount = Money;//外币金额
                        AttestDetailmodel.SubjectsDetails = "";
                        AttestDetailmodel.FormTBName = "";
                        AttestDetailmodel.FileName = "";
                        //本年利润实体对象添加到数组中
                        MyList.Add(AttestDetailmodel);
                        #endregion

                        result=VoucherBus.InsertIntoAttestBill(Attestmodel, MyList, out VouchreID, "1");
                        AttestID += VouchreID + ",";
                    }
                }
                AttestID = AttestID.TrimEnd(new char[] { ',' });
                getAttestNo = getAttestNo.TrimEnd(new char[] { ',' });
                return result;

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static bool ProfitandLossChange(string ItemID, string PeriodNum,
            ref string getAttestNo, ref int AttestID, string DuringDate)
        {
            bool result = false;
            string CompanyCD = ((UserInfoUtil)SessionUtil.Session["UserInfo"]).CompanyCD;
            try
            {
                #region 凭证实体
                AttestBillModel Attestmodel = new AttestBillModel(); //实例凭证单据实体对象
                AttestBillDetailsModel Detailmodel = null;//凭证明细实体定义
                #endregion
                #region 凭证单据实体赋值
                Attestmodel.CompanyCD = CompanyCD;
                Attestmodel.AttestNo = "记-" + VoucherDBHelper.GetMaxAttestNo(CompanyCD, DateTime.Now.ToString());
                getAttestNo = Attestmodel.AttestNo;
                Attestmodel.AttestName = "记账凭证";
                Attestmodel.Creator = ((UserInfoUtil)SessionUtil.Session["UserInfo"]).EmployeeID;
                Attestmodel.status = 0;
                Attestmodel.FromTbale = "officedba.EndItemProcessedRecord";
             //   Attestmodel.FromValue = ItemID;
                Attestmodel.VoucherDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));

                #endregion
                int ID;
                ArrayList modelList = new ArrayList();//定义数组存储实体对象
                //添加凭证单据信息

                //开始时间
                string StartDate = string.Empty;
                //结束时间
                string EndDate = string.Empty;
                //月末数
                string DayEnd = string.Empty;
                int MothString = Convert.ToInt32(DuringDate.Split('-')[1].ToString());
                int yearString = Convert.ToInt32(DuringDate.Split('-')[0].ToString());
                if (MothString == 4 || MothString == 6 || MothString == 9 || MothString == 11)
                {
                    DayEnd = "-30";
                }
                else if (MothString == 2)
                {
                    if (((yearString % 4 == 0 && yearString % 100 == 0)) || (yearString % 400 == 0))
                    {
                        DayEnd = "-29";
                    }
                    else
                    {
                        DayEnd = "-28";
                    }
                }
                else
                {
                    DayEnd = "-31";
                }
                StartDate = yearString.ToString() + "-" + MothString.ToString() + "-01";
                EndDate = yearString.ToString() + "-" + MothString.ToString() + DayEnd;
                if (!CheckProfitEndAmount(StartDate,EndDate))
                {
                    #region 凭证单据实体赋值
                    int PeriodRecordID = 0;

                    result = EndItemProcessing.InsertPeriodProced(CompanyCD, ItemID, PeriodNum, "1", out  PeriodRecordID);
                    if (PeriodRecordID > 0)
                    {
                        Attestmodel.FromValue = PeriodRecordID.ToString();
                    }
                    else
                    {
                        Attestmodel.FromValue = "";
                    }


                    result = EndItemProcessing.BuildAttestBill(Attestmodel, out ID);
                    AttestID = ID;
                    //损益类方向为借的ID
                    string AccountIDj = string.Empty;
                    //损益类方向为贷的ID
                    string AccountIDd = string.Empty;
                    //获取本币币种ID
                    int CurrencyID = Convert.ToInt32(CurrTypeSettingDBHelper.GetMasterCurrency(CompanyCD).Rows[0]["ID"]);
                    //获取结转本期损益摘要ID
                    #region 修改于20090604 摘要直接存名称 by 莫申林
                    /*修改于20090604 摘要直接存名称 by 莫申林  start*/
                    //int AbstractID;
                    //AbstractID = Convert.ToInt32(SummarySettingBus.GetSummaryIDByName(ConstUtil.SUMMARY_JZBQSY_NAMEA));
                    string AbstractID;
                    AbstractID = ConstUtil.SUMMARY_JZBQSY_NAMEA;
                    /*修改于20090604 摘要直接存名称 by 莫申林  end*/

               

                    #endregion
                    if (result && ID > 0)
                    {
                        //取出损益类科目方向为借的信息
                        DataTable dtJ = EndItemProcessing.GetSYSubjectsEndAmount(CompanyCD, DIRECTION_J, StartDate,EndDate);
                        if (dtJ != null && dtJ.Rows.Count > 0)
                        {
                            //读取AccountIDj
                            foreach (DataRow rowj in dtJ.Rows)
                            {
                                AccountIDj += rowj["ID"].ToString() + ",";
                            }
                            AccountIDj = AccountIDj.Remove(AccountIDj.Length - 1);
                            //取出损益类方向为借的期末余额
                            DataTable dtJEndAmount = EndItemProcessing.GetSYEndAmountByID(AccountIDj);
                            if (dtJEndAmount != null && dtJEndAmount.Rows.Count > 0)
                            {
                                //读取方向为借的期末余额
                                foreach (DataRow jendrow in dtJEndAmount.Rows)
                                {
                                    if (Convert.ToDecimal(jendrow["EndAmount"]) != 0)
                                    {

                                        #region 明细实体赋值
                                        Detailmodel = new AttestBillDetailsModel();//实例凭证明细实体对象
                                        Detailmodel.AttestBillID = ID;
                                        Detailmodel.CurrencyTypeID = CurrencyID;
                                        Detailmodel.Abstract = AbstractID;//摘要ID
                                        Detailmodel.SubjectsCD = jendrow["SubjectsCD"].ToString();
                                        //判断损益科目方向为借的金额统计是否大于0
                                        //大于则为贷否则为借方

                                        if (Convert.ToDecimal(jendrow["EndAmount"]) > 0)
                                        {
                                            Detailmodel.OriginalAmount = Convert.ToDecimal(jendrow["EndAmount"]);//外币金额
                                            Detailmodel.CreditAmount = Convert.ToDecimal(jendrow["EndAmount"]);//贷方金额
                                            Detailmodel.DebitAmount = 0;
                                            //将损益类科目方向为借的逆向生成的实体添加到数组当中
                                            modelList.Add(Detailmodel);//实体对象添加到数组中

                                            #region 本年利润凭证明细赋值
                                            Detailmodel = new AttestBillDetailsModel();//实例本年利润凭证明细实体对象
                                            Detailmodel.AttestBillID = ID;
                                            Detailmodel.CurrencyTypeID = CurrencyID;
                                            Detailmodel.Abstract = AbstractID;//摘要ID
                                            Detailmodel.SubjectsCD = SUBJECT_CD_DNLY_CODE;//本年利润科目

                                            Detailmodel.OriginalAmount = Convert.ToDecimal(jendrow["EndAmount"]);//外币金额
                                            Detailmodel.DebitAmount = Convert.ToDecimal(jendrow["EndAmount"]);//借方金额
                                            Detailmodel.CreditAmount = 0;//贷方金额为0

                                            //本年利润实体对象添加到数组中
                                            modelList.Add(Detailmodel);
                                            #endregion

                                        }
                                        else
                                        {
                                            decimal EndAmount = Convert.ToDecimal(jendrow["EndAmount"]);
                                            EndAmount = Convert.ToDecimal(EndAmount.ToString().Substring(EndAmount.ToString().IndexOf("-") + 1, EndAmount.ToString().Length - EndAmount.ToString().IndexOf("-") - 1));

                                            //Detailmodel.OriginalAmount = Convert.ToDecimal(jendrow["EndAmount"]);//外币金额
                                            //Detailmodel.DebitAmount = Convert.ToDecimal(jendrow["EndAmount"]);//借方金额
                                            //Detailmodel.CreditAmount = 0;//贷方金额为0
                                            //modelList.Add(Detailmodel);//实体对象添加到数组中

                                            //#region 本年利润凭证明细赋值
                                            //Detailmodel = new AttestBillDetailsModel();//实例本年利润凭证明细实体对象
                                            //Detailmodel.AttestBillID = ID;
                                            //Detailmodel.Abstract = AbstractID;//摘要ID
                                            //Detailmodel.CurrencyTypeID = CurrencyID;
                                            //Detailmodel.SubjectsCD = SUBJECT_CD_DNLY_CODE;//本年利润科目
                                            //Detailmodel.CreditAmount = Convert.ToDecimal(jendrow["EndAmount"]);//贷方金额
                                            //Detailmodel.OriginalAmount = Convert.ToDecimal(jendrow["EndAmount"]);//外币金额
                                            //Detailmodel.DebitAmount = 0;//借方金额为0


                                            Detailmodel.OriginalAmount = EndAmount;//外币金额
                                            Detailmodel.DebitAmount = EndAmount;//借方金额
                                            Detailmodel.CreditAmount = 0;//贷方金额为0
                                            modelList.Add(Detailmodel);//实体对象添加到数组中

                                            #region 本年利润凭证明细赋值
                                            Detailmodel = new AttestBillDetailsModel();//实例本年利润凭证明细实体对象
                                            Detailmodel.AttestBillID = ID;
                                            Detailmodel.Abstract = AbstractID;//摘要ID
                                            Detailmodel.CurrencyTypeID = CurrencyID;
                                            Detailmodel.SubjectsCD = SUBJECT_CD_DNLY_CODE;//本年利润科目
                                            Detailmodel.CreditAmount = EndAmount;//贷方金额
                                            Detailmodel.OriginalAmount = EndAmount; //外币金额
                                            Detailmodel.DebitAmount = 0;//借方金额为0


                                            //本年利润实体对象添加到数组中
                                            modelList.Add(Detailmodel);
                                            #endregion
                                        }
                                        #endregion
                                    }
                                }
                            }
                        }
                        //取出损益类科目方向为贷的信息
                        DataTable dtD = EndItemProcessing.GetSYSubjectsEndAmount(CompanyCD, DIRECTION_D,StartDate,EndDate);
                        if (dtD != null && dtD.Rows.Count > 0)
                        {
                            //读取AccountIDd
                            foreach (DataRow rowd in dtD.Rows)
                            {
                                AccountIDd += rowd["ID"].ToString() + ",";
                            }
                            AccountIDd = AccountIDd.Remove(AccountIDd.Length - 1);
                            //取出损益类方向为贷的期末余额
                            DataTable dtDEndAmount = EndItemProcessing.GetSYEndAmountByID(AccountIDd);
                            if (dtDEndAmount != null && dtDEndAmount.Rows.Count > 0)
                            {
                                //读取方向为贷的期末余额
                                foreach (DataRow Dendrow in dtDEndAmount.Rows)
                                {
                                    #region 明细实体赋值
                                    if (Convert.ToDecimal(Dendrow["EndAmount"]) != 0)
                                    {
                                        Detailmodel = new AttestBillDetailsModel();//实例凭证明细实体对象
                                        Detailmodel.AttestBillID = ID;
                                        Detailmodel.Abstract = AbstractID;//摘要ID
                                        Detailmodel.SubjectsCD = Dendrow["SubjectsCD"].ToString();
                                        Detailmodel.CurrencyTypeID = CurrencyID;

                                        //判断损益科目方向为贷的金额统计是否大于0
                                        //大于则为借否则为贷方
                                        if (Convert.ToDecimal(Dendrow["EndAmount"]) > 0)
                                        {
                                            Detailmodel.CreditAmount = 0; //贷方金额
                                            Detailmodel.OriginalAmount = Convert.ToDecimal(Dendrow["EndAmount"]);//外币金额
                                            Detailmodel.DebitAmount = Convert.ToDecimal(Dendrow["EndAmount"]);//借方金额

                                            //将损益类科目方向为贷的逆向生成的实体添加到数组当中
                                            modelList.Add(Detailmodel);//实体对象添加到数组中

                                            #region 本年利润凭证明细赋值
                                            Detailmodel = new AttestBillDetailsModel();//实例本年利润凭证明细实体对象
                                            Detailmodel.AttestBillID = ID;
                                            Detailmodel.Abstract = AbstractID;//摘要ID
                                            Detailmodel.SubjectsCD = SUBJECT_CD_DNLY_CODE;//本年利润科目
                                            Detailmodel.DebitAmount = 0;//借方金额为0
                                            Detailmodel.CurrencyTypeID = CurrencyID;
                                            Detailmodel.CreditAmount = Convert.ToDecimal(Dendrow["EndAmount"]); ;//贷方金额
                                            Detailmodel.OriginalAmount = Convert.ToDecimal(Dendrow["EndAmount"]);//外币金额
                                            //本年利润实体对象添加到数组中
                                            modelList.Add(Detailmodel);
                                            #endregion

                                        }
                                        else
                                        {

                                            decimal EndAmount = Convert.ToDecimal(Dendrow["EndAmount"]);
                                            EndAmount = Convert.ToDecimal(EndAmount.ToString().Substring(EndAmount.ToString().IndexOf("-") + 1, EndAmount.ToString().Length - EndAmount.ToString().IndexOf("-") - 1));


                                            //Detailmodel.DebitAmount = 0;//借方金额为0
                                            //Detailmodel.OriginalAmount = Convert.ToDecimal(Dendrow["EndAmount"]);//外币金额
                                            //Detailmodel.CreditAmount = Convert.ToDecimal(Dendrow["EndAmount"]); ;//贷方金额
                                            //modelList.Add(Detailmodel);//实体对象添加到数组中

                                            //#region 本年利润凭证明细赋值
                                            //Detailmodel = new AttestBillDetailsModel();//实例本年利润凭证明细实体对象
                                            //Detailmodel.AttestBillID = ID;
                                            //Detailmodel.Abstract = AbstractID;//摘要ID
                                            //Detailmodel.CurrencyTypeID = CurrencyID;
                                            //Detailmodel.OriginalAmount = Convert.ToDecimal(Dendrow["EndAmount"]);//外币金额
                                            //Detailmodel.SubjectsCD = SUBJECT_CD_DNLY_CODE;//本年利润科目
                                            //Detailmodel.CreditAmount = 0;//贷方金额为0
                                            //Detailmodel.DebitAmount = Convert.ToDecimal(Dendrow["EndAmount"]); ;//借方金额


                                            Detailmodel.DebitAmount = 0;//借方金额为0
                                            Detailmodel.OriginalAmount = EndAmount;//外币金额
                                            Detailmodel.CreditAmount = EndAmount;//贷方金额
                                            modelList.Add(Detailmodel);//实体对象添加到数组中

                                            #region 本年利润凭证明细赋值
                                            Detailmodel = new AttestBillDetailsModel();//实例本年利润凭证明细实体对象
                                            Detailmodel.AttestBillID = ID;
                                            Detailmodel.Abstract = AbstractID;//摘要ID
                                            Detailmodel.CurrencyTypeID = CurrencyID;
                                            Detailmodel.OriginalAmount = EndAmount;//外币金额
                                            Detailmodel.SubjectsCD = SUBJECT_CD_DNLY_CODE;//本年利润科目
                                            Detailmodel.CreditAmount = 0;//贷方金额为0
                                            Detailmodel.DebitAmount = EndAmount;//借方金额

                                            //本年利润实体对象添加到数组中
                                            modelList.Add(Detailmodel);
                                            #endregion
                                        }
                                    #endregion
                                    }
                                }
                            }
                        }
                    }
                    //组合更新ID
                    string UpdateID = string.Empty;
                    if (AccountIDd.Length > 0 && AccountIDj.Length > 0)
                    {
                        UpdateID = AccountIDd + "," + AccountIDj;
                    }
                    result = EndItemProcessing.BuildJZDetailInfo(modelList, UpdateID);
                    if (result)
                    {
                         //凭证自动登帐及自动审核
                         VoucherBus.SetStatus(ID.ToString(), "1", "status", 0);
                         VoucherBus.InsertAccount(AttestID);
                    }
                }
                return result;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static bool CountFixAssetDepreciation(string ItemID, string PeriodNum,
            ref string getAttestNo, ref int AttestID)
        {
            //获取当前操作用户企业编码
            bool result = false;//执行返回结果
            try
            {
                int PeriodID=0;
                string CompanyCD = ((UserInfoUtil)SessionUtil.Session["UserInfo"]).CompanyCD;
                DataTable dt = FixAssetInfoDBHelper.GetAssetInfoByCompanyCD(CompanyCD,PeriodNum);
                if (dt != null && dt.Rows.Count > 0)
                {
                    #region 固定资产计提折旧计算
                    //计算方法
                    string CountMethod = string.Empty;
                    //预计使用年限
                    int EstimateUseYear;
                    //预计净残值率
                    decimal EstiResiValue;
                    //原值
                    decimal OriginalValue;
                    //月折旧率
                    decimal MonthDeprRate;
                    //期末净值
                    decimal EndNetValue;
                    //本期净值
                    decimal CurrentNetValue;
                    //本期减值准备
                    decimal CurrValueRe;
                    //月折旧额
                    decimal MonthDeprPrice = 0;
                    //累计月折旧额
                    decimal CountTotalDeprPrice = 0;

                    ArrayList DeprDetailList=new ArrayList();

                    ArrayList DeprPeriodList=new ArrayList();

                    //计提前固定资产实体数组
                    ArrayList FixDeprAfterList = new ArrayList();

                    //定义固定资产计提明细实体
                    FixAssetDeprDetailModel DeprDetailmodel = null;
                    //资产计提
                    FixAssetPeriodDeprModel DeprPeriodmodel = null;
                    //资产计提前实体
                    FixAssetDeprAfterModel FixDeprAftermodel = null;

                    foreach (DataRow rows in dt.Rows)
                    {
                        //读取期末净值
                        EndNetValue = Convert.ToDecimal(rows["EndNetValue"]);
                        //读取计算方法
                        CountMethod = rows["CountMethod"].ToString();
                        //读取预计净残值率
                        EstiResiValue = Convert.ToDecimal(rows["EstiResiValue"]);
                        //读取原价
                        OriginalValue = Convert.ToDecimal(rows["OriginalValue"]);
                        //读取本期减值准备
                        CurrValueRe = Convert.ToDecimal(rows["CurrValueRe"]);
                        //读取月折旧率
                        MonthDeprRate = Convert.ToDecimal(rows["AmorDeprRate"]);



                        //实例固定资产计提明细实体
                        DeprDetailmodel = new FixAssetDeprDetailModel();
                        #region 固定资产计提明细赋值
                        //给固定资产计提明细赋值
                        DeprDetailmodel.CompanyCD = CompanyCD;
                        DeprDetailmodel.Creator = ((UserInfoUtil)SessionUtil.Session["UserInfo"]).EmployeeID;
                        //固定资产名称
                        DeprDetailmodel.FixName = rows["FixName"].ToString();
                        //固定资产编号
                        DeprDetailmodel.FixNo = rows["FixNo"].ToString();
                        //资产类别
                        DeprDetailmodel.FixType = Convert.ToInt32(rows["FixType"]);
                        //资产数量
                        DeprDetailmodel.Number = Convert.ToInt32(rows["FixNumber"]);
                        //资产原值
                        DeprDetailmodel.OriginalValue = Convert.ToDecimal(rows["OriginalValue"]);
                        //使用日期
                        DeprDetailmodel.UsedDate = Convert.ToDateTime(rows["UseDate"]);
                        //使用年限
                        DeprDetailmodel.UsedYears = Convert.ToDecimal(rows["UsedYear"]);
                        //预计使用年限
                        DeprDetailmodel.EstimateUse = Convert.ToDecimal(rows["EstimateUse"]);


                        //计算预计净残值
                        decimal Yjcz = OriginalValue * (EstiResiValue / 100);
                        #endregion
                        //判断期末净值大于计净残值则进行折旧处理
                        if (EndNetValue > Yjcz)
                        {
                            //年限平均法
                            if (CountMethod == ConstUtil.ASSETCOUNT_METHOD_NXPJF_CODE)
                            {
                                //读取期初减值准备
                                decimal ReduValueRe = Convert.ToDecimal(rows["ReduValueRe"]);
                                //读取预计使用年限
                                EstimateUseYear = Convert.ToInt32(rows["EstimateUse"]);
                                //MonthDeprPrice = Math.Round(MonthDeprRate * OriginalValue, 2);//计算月折旧额
                                //读取月折旧额
                                MonthDeprPrice = Convert.ToDecimal(rows["AmorDeprM"]);
                                //计算本期期末净值
                                CurrentNetValue = EndNetValue - MonthDeprPrice - CurrValueRe;
                                //本期期末净值
                                DeprDetailmodel.EndNetValue = CurrentNetValue;
                                //月折旧额
                                DeprDetailmodel.MDeprPrice = MonthDeprPrice;
                                //计算累计折旧额
                                CountTotalDeprPrice = Convert.ToDecimal(rows["TotalDeprPrice"]) + MonthDeprPrice;
                                DeprDetailmodel.TotalDeprPrice = CountTotalDeprPrice;
                                //累计减值
                                DeprDetailmodel.TotalImpairment = (ReduValueRe + CurrValueRe);
                                //计算月折旧额
                                //如果本期净值大于净残值则更新
                                if (CurrentNetValue > Yjcz)
                                {
                                    #region 添加固定资产折旧前信息实体
                                    FixDeprAftermodel = new FixAssetDeprAfterModel();
                                    FixDeprAftermodel.AmorDeprM = rows["AmorDeprM"] != DBNull.Value ? Convert.ToDecimal(rows["AmorDeprM"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAftermodel.AmorDeprRate = Convert.ToDecimal(rows["AmorDeprRate"]); ;
                                    FixDeprAftermodel.CompanyCD = CompanyCD;
                                    FixDeprAftermodel.EndNetValue = rows["EndNetValue"] != DBNull.Value ? Convert.ToDecimal(rows["EndNetValue"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAftermodel.FixNo = rows["FixNo"].ToString();
                                    FixDeprAftermodel.PeriodNum = Convert.ToInt32(PeriodNum);
                                    FixDeprAftermodel.TotalDeprPrice = rows["TotalDeprPrice"] != DBNull.Value ? Convert.ToDecimal(rows["TotalDeprPrice"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAfterList.Add(FixDeprAftermodel);
                                    #endregion


                                    DeprPeriodmodel = new FixAssetPeriodDeprModel();
                                    DeprPeriodmodel.CompanyCD = CompanyCD;
                                    DeprPeriodmodel.EndNetValue = Math.Round(CurrentNetValue, 2);
                                    DeprPeriodmodel.FixNo = rows["FixNo"].ToString();
                                    DeprPeriodmodel.AmorDeprRate = 0;
                                    DeprPeriodmodel.AmorDeprM = MonthDeprPrice;
                                    DeprPeriodmodel.TotalDeprPrice = CountTotalDeprPrice;

                                    DeprDetailList.Add(DeprDetailmodel);
                                    DeprPeriodList.Add(DeprPeriodmodel);
                                }
                                else
                                {

                                    #region 添加固定资产折旧前信息实体
                                    FixDeprAftermodel = new FixAssetDeprAfterModel();
                                    FixDeprAftermodel.AmorDeprM = rows["AmorDeprM"] != DBNull.Value ? Convert.ToDecimal(rows["AmorDeprM"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAftermodel.AmorDeprRate = Convert.ToDecimal(rows["AmorDeprRate"]); 
                                    FixDeprAftermodel.CompanyCD = CompanyCD;
                                    FixDeprAftermodel.EndNetValue = rows["EndNetValue"] != DBNull.Value ? Convert.ToDecimal(rows["EndNetValue"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAftermodel.FixNo = rows["FixNo"].ToString();
                                    FixDeprAftermodel.PeriodNum = Convert.ToInt32(PeriodNum);
                                    FixDeprAftermodel.TotalDeprPrice = rows["TotalDeprPrice"] != DBNull.Value ? Convert.ToDecimal(rows["TotalDeprPrice"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAfterList.Add(FixDeprAftermodel);
                                    #endregion


                                    DeprPeriodmodel = new FixAssetPeriodDeprModel();
                                    DeprPeriodmodel.CompanyCD = CompanyCD;
                                    DeprPeriodmodel.EndNetValue = Yjcz;
                                    DeprPeriodmodel.FixNo = rows["FixNo"].ToString();
                                    DeprPeriodmodel.AmorDeprRate = 0;
                                    DeprPeriodmodel.AmorDeprM = MonthDeprPrice;
                                    DeprPeriodmodel.TotalDeprPrice = Convert.ToDecimal(rows["EndNetValue"]) - Yjcz; 

                                    DeprDetailList.Add(DeprDetailmodel);
                                    DeprPeriodList.Add(DeprPeriodmodel);
                                }
                            }
                            //工作量法
                            else if (CountMethod == ConstUtil.ASSETCOUNT_METHOD_GZLF_CODE)
                            {
                                //读取月折旧额
                                MonthDeprPrice = Convert.ToDecimal(rows["AmorDeprM"]);
                                //计算本期期末净值
                                CurrentNetValue = EndNetValue - MonthDeprPrice - CurrValueRe;
                                //计算累计折旧额
                                CountTotalDeprPrice = Convert.ToDecimal(rows["TotalDeprPrice"]) + MonthDeprPrice;
                                //如果本期净值大于原净值则不更新
                                if (CurrentNetValue > Yjcz)
                                {
                                    #region 添加固定资产折旧前信息实体
                                    FixDeprAftermodel = new FixAssetDeprAfterModel();
                                    FixDeprAftermodel.AmorDeprM = rows["AmorDeprM"] != DBNull.Value ? Convert.ToDecimal(rows["AmorDeprM"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAftermodel.AmorDeprRate = Convert.ToDecimal(rows["AmorDeprRate"]); ;
                                    FixDeprAftermodel.CompanyCD = CompanyCD;
                                    FixDeprAftermodel.EndNetValue = rows["EndNetValue"] != DBNull.Value ? Convert.ToDecimal(rows["EndNetValue"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAftermodel.FixNo = rows["FixNo"].ToString();
                                    FixDeprAftermodel.PeriodNum = Convert.ToInt32(PeriodNum);
                                    FixDeprAftermodel.TotalDeprPrice = rows["TotalDeprPrice"] != DBNull.Value ? Convert.ToDecimal(rows["TotalDeprPrice"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAfterList.Add(FixDeprAftermodel);
                                    #endregion


                                    DeprPeriodmodel = new FixAssetPeriodDeprModel();
                                    DeprPeriodmodel.CompanyCD = CompanyCD;
                                    DeprPeriodmodel.EndNetValue = Math.Round(CurrentNetValue, 2);
                                    DeprPeriodmodel.FixNo = rows["FixNo"].ToString();
                                    DeprPeriodmodel.AmorDeprRate = 0;
                                    DeprPeriodmodel.AmorDeprM = MonthDeprPrice;
                                    DeprPeriodmodel.TotalDeprPrice = CountTotalDeprPrice;

                                    DeprDetailList.Add(DeprDetailmodel);
                                    DeprPeriodList.Add(DeprPeriodmodel);

                                }
                                else
                                {
                                    #region 添加固定资产折旧前信息实体
                                    FixDeprAftermodel = new FixAssetDeprAfterModel();
                                    FixDeprAftermodel.AmorDeprM = rows["AmorDeprM"] != DBNull.Value ? Convert.ToDecimal(rows["AmorDeprM"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAftermodel.AmorDeprRate = Convert.ToDecimal(rows["AmorDeprRate"]); ;
                                    FixDeprAftermodel.CompanyCD = CompanyCD;
                                    FixDeprAftermodel.EndNetValue = rows["EndNetValue"] != DBNull.Value ? Convert.ToDecimal(rows["EndNetValue"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAftermodel.FixNo = rows["FixNo"].ToString();
                                    FixDeprAftermodel.PeriodNum = Convert.ToInt32(PeriodNum);
                                    FixDeprAftermodel.TotalDeprPrice = rows["TotalDeprPrice"] != DBNull.Value ? Convert.ToDecimal(rows["TotalDeprPrice"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAfterList.Add(FixDeprAftermodel);
                                    #endregion


                                    DeprPeriodmodel = new FixAssetPeriodDeprModel();
                                    DeprPeriodmodel.CompanyCD = CompanyCD;
                                    DeprPeriodmodel.EndNetValue = Yjcz;
                                    DeprPeriodmodel.FixNo = rows["FixNo"].ToString();
                                    DeprPeriodmodel.AmorDeprRate = 0;
                                    DeprPeriodmodel.AmorDeprM = MonthDeprPrice;
                                    DeprPeriodmodel.TotalDeprPrice = Convert.ToDecimal(rows["EndNetValue"]) - Yjcz;

                                    DeprDetailList.Add(DeprDetailmodel);
                                    DeprPeriodList.Add(DeprPeriodmodel);

                                }

                            }//年限总和法
                            else if (CountMethod == ConstUtil.ASSETCOUNT_METHOD_NXZHF_CODE)
                            {
                                //年折旧率
                                decimal YearDeprRate = 0;
                                //读取预计使用年限
                                EstimateUseYear = Convert.ToInt32(rows["EstimateUse"]);
                                //读取已使用年限
                                int UsedYears = Convert.ToInt32(rows["UsedYear"]);
                                //计算年折旧率
                                YearDeprRate = Convert.ToDecimal((EstimateUseYear - UsedYears)) / (Convert.ToDecimal(EstimateUseYear) * (Convert.ToDecimal(EstimateUseYear + 1)) / 2) * (100 / 100);
                                //计算月折旧率
                                MonthDeprRate = YearDeprRate / 12;
                                //计算月折旧额
                                MonthDeprPrice = (OriginalValue - (OriginalValue * (EstiResiValue/100))) * MonthDeprRate;
                                //计算本期期末净值
                                CurrentNetValue = EndNetValue - MonthDeprPrice - CurrValueRe;
                                //计算累计折旧额
                                CountTotalDeprPrice = Convert.ToDecimal(rows["TotalDeprPrice"]) + MonthDeprPrice;
                                if (CurrentNetValue > Yjcz)
                                {
                                    #region 添加固定资产折旧前信息实体
                                    FixDeprAftermodel = new FixAssetDeprAfterModel();
                                    FixDeprAftermodel.AmorDeprM = rows["AmorDeprM"] != DBNull.Value ? Convert.ToDecimal(rows["AmorDeprM"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAftermodel.AmorDeprRate = Convert.ToDecimal(rows["AmorDeprRate"]); ;
                                    FixDeprAftermodel.CompanyCD = CompanyCD;
                                    FixDeprAftermodel.EndNetValue = rows["EndNetValue"] != DBNull.Value ? Convert.ToDecimal(rows["EndNetValue"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAftermodel.FixNo = rows["FixNo"].ToString();
                                    FixDeprAftermodel.PeriodNum = Convert.ToInt32(PeriodNum);
                                    FixDeprAftermodel.TotalDeprPrice = rows["TotalDeprPrice"] != DBNull.Value ? Convert.ToDecimal(rows["TotalDeprPrice"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAfterList.Add(FixDeprAftermodel);
                                    #endregion


                                    DeprPeriodmodel = new FixAssetPeriodDeprModel();
                                    DeprPeriodmodel.CompanyCD = CompanyCD;
                                    DeprPeriodmodel.EndNetValue = Math.Round(CurrentNetValue, 2);
                                    DeprPeriodmodel.FixNo = rows["FixNo"].ToString();
                                    DeprPeriodmodel.AmorDeprRate = Math.Round(MonthDeprRate, 8);
                                    DeprPeriodmodel.AmorDeprM = Math.Round(MonthDeprPrice, 2);
                                    DeprPeriodmodel.TotalDeprPrice = CountTotalDeprPrice;

                                    DeprDetailList.Add(DeprDetailmodel);
                                    DeprPeriodList.Add(DeprPeriodmodel);
                                }
                                else
                                {

                                    #region 添加固定资产折旧前信息实体
                                    FixDeprAftermodel = new FixAssetDeprAfterModel();
                                    FixDeprAftermodel.AmorDeprM = rows["AmorDeprM"] != DBNull.Value ? Convert.ToDecimal(rows["AmorDeprM"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAftermodel.AmorDeprRate = Convert.ToDecimal(rows["AmorDeprRate"]); ;
                                    FixDeprAftermodel.CompanyCD = CompanyCD;
                                    FixDeprAftermodel.EndNetValue = rows["EndNetValue"] != DBNull.Value ? Convert.ToDecimal(rows["EndNetValue"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAftermodel.FixNo = rows["FixNo"].ToString();
                                    FixDeprAftermodel.PeriodNum = Convert.ToInt32(PeriodNum);
                                    FixDeprAftermodel.TotalDeprPrice = rows["TotalDeprPrice"] != DBNull.Value ? Convert.ToDecimal(rows["TotalDeprPrice"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAfterList.Add(FixDeprAftermodel);
                                    #endregion



                                    DeprPeriodmodel = new FixAssetPeriodDeprModel();
                                    DeprPeriodmodel.CompanyCD = CompanyCD;
                                    DeprPeriodmodel.EndNetValue = Yjcz;
                                    DeprPeriodmodel.FixNo = rows["FixNo"].ToString();
                                    DeprPeriodmodel.AmorDeprRate = Math.Round(MonthDeprRate, 8);
                                    DeprPeriodmodel.AmorDeprM = MonthDeprPrice;
                                    DeprPeriodmodel.TotalDeprPrice = Convert.ToDecimal(rows["EndNetValue"]) - Yjcz;

                                    DeprDetailList.Add(DeprDetailmodel);
                                    DeprPeriodList.Add(DeprPeriodmodel);


                                }

                            }//双倍余额递减法
                            else if (CountMethod == ConstUtil.ASSETCOUNT_METHOD_SBYETJS_CODE)
                            {
                                //读取预计使用年限
                                EstimateUseYear = Convert.ToInt32(rows["EstimateUse"]);
                                //年折旧率
                                decimal YearDeprRate = 0;
                                //计算年折旧率
                                YearDeprRate = 2 / Convert.ToDecimal(EstimateUseYear) * (100 / 100);
                                //计算月折旧率
                                MonthDeprRate = YearDeprRate / 12;
                                //计算月折旧额
                                MonthDeprPrice = EndNetValue * MonthDeprRate;
                                //计算本期期末净值
                                CurrentNetValue = EndNetValue - MonthDeprPrice - CurrValueRe;
                                //计算累计折旧额
                                CountTotalDeprPrice = Convert.ToDecimal(rows["TotalDeprPrice"]) + MonthDeprPrice;
                                if (CurrentNetValue > Yjcz)
                                {
                                    #region 添加固定资产折旧前信息实体
                                    FixDeprAftermodel = new FixAssetDeprAfterModel();
                                    FixDeprAftermodel.AmorDeprM = rows["AmorDeprM"] != DBNull.Value ? Convert.ToDecimal(rows["AmorDeprM"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAftermodel.AmorDeprRate = Convert.ToDecimal(rows["AmorDeprRate"]); ;
                                    FixDeprAftermodel.CompanyCD = CompanyCD;
                                    FixDeprAftermodel.EndNetValue = rows["EndNetValue"] != DBNull.Value ? Convert.ToDecimal(rows["EndNetValue"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAftermodel.FixNo = rows["FixNo"].ToString();
                                    FixDeprAftermodel.PeriodNum = Convert.ToInt32(PeriodNum);
                                    FixDeprAftermodel.TotalDeprPrice = rows["TotalDeprPrice"] != DBNull.Value ? Convert.ToDecimal(rows["TotalDeprPrice"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAfterList.Add(FixDeprAftermodel);
                                    #endregion


                                    DeprPeriodmodel = new FixAssetPeriodDeprModel();
                                    DeprPeriodmodel.CompanyCD = CompanyCD;
                                    DeprPeriodmodel.EndNetValue = Math.Round(CurrentNetValue, 2);
                                    DeprPeriodmodel.FixNo = rows["FixNo"].ToString();
                                    DeprPeriodmodel.AmorDeprRate = Math.Round(MonthDeprRate, 8);
                                    DeprPeriodmodel.AmorDeprM = Math.Round(MonthDeprPrice, 2);
                                    DeprPeriodmodel.TotalDeprPrice = CountTotalDeprPrice;
                                    DeprDetailList.Add(DeprDetailmodel);
                                    DeprPeriodList.Add(DeprPeriodmodel);
                                }
                                else
                                {

                                    #region 添加固定资产折旧前信息实体
                                    FixDeprAftermodel = new FixAssetDeprAfterModel();
                                    FixDeprAftermodel.AmorDeprM = rows["AmorDeprM"] != DBNull.Value ? Convert.ToDecimal(rows["AmorDeprM"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAftermodel.AmorDeprRate = Convert.ToDecimal(rows["AmorDeprRate"]); ;
                                    FixDeprAftermodel.CompanyCD = CompanyCD;
                                    FixDeprAftermodel.EndNetValue = rows["EndNetValue"] != DBNull.Value ? Convert.ToDecimal(rows["EndNetValue"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAftermodel.FixNo = rows["FixNo"].ToString();
                                    FixDeprAftermodel.PeriodNum = Convert.ToInt32(PeriodNum);
                                    FixDeprAftermodel.TotalDeprPrice = rows["TotalDeprPrice"] != DBNull.Value ? Convert.ToDecimal(rows["TotalDeprPrice"]) : Convert.ToDecimal(DBNull.Value);
                                    FixDeprAfterList.Add(FixDeprAftermodel);
                                    #endregion



                                    DeprPeriodmodel = new FixAssetPeriodDeprModel();
                                    DeprPeriodmodel.CompanyCD = CompanyCD;
                                    DeprPeriodmodel.EndNetValue = Yjcz;
                                    DeprPeriodmodel.FixNo = rows["FixNo"].ToString();
                                    DeprPeriodmodel.AmorDeprRate = Math.Round(MonthDeprRate, 8);
                                    DeprPeriodmodel.AmorDeprM = MonthDeprPrice;
                                    DeprPeriodmodel.TotalDeprPrice = Convert.ToDecimal(rows["EndNetValue"]) - Yjcz;

                                    DeprDetailList.Add(DeprDetailmodel);
                                    DeprPeriodList.Add(DeprPeriodmodel);
                                }
                            }
                        }
                    }
                    #endregion
                    //折旧固定资产明细
                    result = FixAssetInfoDBHelper.UpdateEndFixAssetInfo(DeprDetailList, DeprPeriodList, CompanyCD, PeriodNum, 
                        ItemID, ref PeriodID, FixDeprAfterList);
                }
                if (result)
                {
                    #region 凭证单据明细实体
                    //凭证单据实体
                    AttestBillModel Attestmodel = new AttestBillModel();
                    //凭证明细实体定义
                    AttestBillDetailsModel Detailmodel = null;
                    #endregion

                    #region 凭证单据实体赋值
                    Attestmodel.CompanyCD = CompanyCD;
                    Attestmodel.AttestNo = "记-" + VoucherDBHelper.GetMaxAttestNo(CompanyCD, DateTime.Now.ToString());
                    getAttestNo = Attestmodel.AttestNo;
                    Attestmodel.AttestName = "记账凭证";
                    Attestmodel.Creator = ((UserInfoUtil)SessionUtil.Session["UserInfo"]).EmployeeID;
                    Attestmodel.status = 0;
                    Attestmodel.FromTbale = "EndItemProcessedRecord,FixWithInfo,FixPeriodDeprDetails";
                    Attestmodel.FromValue=PeriodID.ToString()+","+PeriodNum.ToString();
                    Attestmodel.VoucherDate =Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
                    #endregion
                    int ID;
                    ArrayList modelList = new ArrayList();//定义数组存储实体对象
                    //添加凭证单据信息
                    result = FixAssetInfoDBHelper.BuildDepreAttestBill(Attestmodel, out ID, ItemID, PeriodNum);
                    AttestID = ID;
                    if (result && ID > 0)
                    {
                        //获取固定资产科目汇总金额信息
                        DataTable AttestDetail = FixAssetInfoDBHelper.GetBuildAttestInfo(CompanyCD);
                        //获取折旧凭证摘要ID
                        string AbstractID;
                        AbstractID = ConstUtil.SUMMARY_ZCJZ_NAME;
                        #endregion
                        //获取本币币种ID
                        int MasterCurrencyID = Convert.ToInt32(CurrTypeSettingDBHelper.GetMasterCurrency(CompanyCD).Rows[0]["ID"]);
                        if (AttestDetail != null && AttestDetail.Rows.Count > 0)
                        {
                            foreach (DataRow drows in AttestDetail.Rows)
                            {
                                #region 凭证明细实体赋值
                                Detailmodel = new AttestBillDetailsModel();
                                Detailmodel.AttestBillID = ID;
                                Detailmodel.Abstract = AbstractID;// 摘要
                                Detailmodel.SubjectsCD = drows["AccuDeprSubjeCD"].ToString();//累计折旧科目 贷
                                Detailmodel.CreditAmount = Convert.ToDecimal(drows["CountSum"]);//贷方金额
                                Detailmodel.DebitAmount = 0;
                                Detailmodel.OriginalAmount = Convert.ToDecimal(drows["CountSum"]);//外币金额
                                Detailmodel.CurrencyTypeID = MasterCurrencyID;//本币ID
                                Detailmodel.ExchangeRate = 1;//本币汇率
                                modelList.Add(Detailmodel);


                                Detailmodel = new AttestBillDetailsModel();
                                Detailmodel.AttestBillID = ID;
                                Detailmodel.Abstract = AbstractID;// 摘要
                                Detailmodel.CreditAmount = 0;
                                Detailmodel.SubjectsCD = drows["DeprCostSubjeCD"].ToString();//折旧费用科目 借
                                Detailmodel.DebitAmount = Convert.ToDecimal(drows["CountSum"]);//借方金额
                                Detailmodel.OriginalAmount = Convert.ToDecimal(drows["CountSum"]);//外币金额
                                Detailmodel.CurrencyTypeID = MasterCurrencyID;//本币ID
                                Detailmodel.ExchangeRate = 1;//本币汇率
                                modelList.Add(Detailmodel);
                                #endregion
                            }
                            //凭证自动登帐及自动审核
                            result = FixAssetInfoDBHelper.BuildDepreDetailInfo(modelList);
                            if (result)
                            {
                                 VoucherBus.SetStatus(ID.ToString(), "1", "status", 0);
                                 VoucherBus.InsertAccount(AttestID);
                            }
                        }
                    }
                }
                return result;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }