public static int Add(XBase.Model.Office.SellReport.UserProductInfo model)
 {
     int num = 0;
     string sqlstr = "insert into officedba.UserProductInfo(CompanyCD,productNum,productName,price,bref,memo) values(@CompanyCD,@productNum,@productName,@price,@bref,@memo)";
     TransactionManager tran = new TransactionManager();
     tran.BeginTransaction();
     SqlParameter[] param = {
                                new SqlParameter("@CompanyCD",SqlDbType.VarChar,50),
                                new SqlParameter("@productNum",SqlDbType.VarChar,50),
                                new SqlParameter("@productName",SqlDbType.VarChar,200),
                                new SqlParameter("@price",SqlDbType.Decimal),
                                new SqlParameter("@bref",SqlDbType.VarChar,500),
                                new SqlParameter("@memo",SqlDbType.VarChar,1000)
                            };
     param[0].Value = model.CompanyCD;
     param[1].Value = model.productNum;
     param[2].Value = model.productName;
     param[3].Value = model.price;
     param[4].Value = model.bref;
     param[5].Value = model.memo;
     try
     {
         num = SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, sqlstr, param);
         tran.Commit();
     }
     catch
     {
         tran.Rollback();
     }
     return num;
 }
        /// <summary>
        /// 更新销售委托代销单
        /// </summary>
        /// <returns></returns>
        public static bool UpdateOrder(Hashtable ht, SellChannelSttlModel sellChannelSttlModel, List<SellChannelSttlDetailModel> sellChannelSttlDetailModellist, out string strMsg)
        {
            bool isSucc = false;//是否添加成功
            strMsg = "";
            if (IsUpdate(sellChannelSttlModel.SttlNo))
            {
                string strSql = "delete from officedba.SellChannelSttlDetail where  SttlNo=@SttlNo  and CompanyCD=@CompanyCD";
                SqlParameter[] paras = { new SqlParameter("@SttlNo", sellChannelSttlModel.SttlNo), new SqlParameter("@CompanyCD", sellChannelSttlModel.CompanyCD) };
                TransactionManager tran = new TransactionManager();
                tran.BeginTransaction();
                try
                {

                    UpdateOrderInfo(ht,sellChannelSttlModel, tran);
                    SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, strSql.ToString(), paras);
                    InsertOrderDetail(sellChannelSttlDetailModellist, tran);
                    tran.Commit();
                    isSucc = true;
                    strMsg = "保存成功!";
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    strMsg = "保存失败,请联系系统管理员!";
                    throw ex;
                }
            }
            else
            {
                isSucc = false;
                strMsg = "非制单状态的未提交审批、审批未通过或撤销审批单据不可修改!";
            }
            return isSucc;
        }
 /// <summary>
 /// 添加费用申请单
 /// </summary>
 /// <param name="expApplyModel"></param>
 /// <param name="expDetailModelList"></param>
 /// <param name="strMsg"></param>
 /// <returns></returns>
 public static bool SaveExpensesApply(ExpensesApplyModel expApplyModel, List<ExpDetailsModel> expDetailModelList,out string strMsg)
 {
     bool isSucc = false;//是否添加成功
     strMsg = "";
     //判断单据编号是否存在
     if (NoIsExist(expApplyModel.ExpCode,expApplyModel.CompanyCD))
     {
         TransactionManager tran = new TransactionManager();
         tran.BeginTransaction();
         try
         {
             int expID;
             expID = InsertExpensesApply(expApplyModel, tran);
             InsertExpensesDetails(expDetailModelList, expID,tran);
             tran.Commit();
             isSucc = true;
             strMsg = "保存成功!";
         }
         catch (Exception ex)
         {
             tran.Rollback();
             strMsg = "保存失败,请联系系统管理员!";
             throw ex;
         }
     }
     else
     {
         isSucc = false;
         strMsg = "该编号已被使用,请输入未使用的编号!";
     }
     return isSucc;
 }
 /// <summary>
 /// 保存费用报销单
 /// </summary>
 /// <param name="reimbModel"></param>
 /// <param name="reimbDetailList"></param>
 /// <param name="strMsg"></param>
 public static bool SaveReimbursement(ReimbursementModel reimbModel, List<ReimbDetailsModel> reimbDetailList, out string strMsg)
 {
     bool isSucc = false;//是否添加成功
     strMsg = "";
     //判断单据编号是否存在
     if (NoIsExist(reimbModel.ReimbNo, reimbModel.CompanyCD))
     {
         TransactionManager tran = new TransactionManager();
         tran.BeginTransaction();
         try
         {
             int reimbID;
             reimbID = InsertReimbursement(reimbModel, tran);
             InsertReimbDetails(reimbDetailList, reimbID, tran);
             tran.Commit();
             isSucc = true;
             strMsg = "保存成功!";
         }
         catch (Exception ex)
         {
             tran.Rollback();
             strMsg = "保存失败,请联系系统管理员!";
             throw ex;
         }
     }
     else
     {
         isSucc = false;
         strMsg = "该编号已被使用,请输入未使用的编号!";
     }
     return isSucc;
 }
 /// <summary>
 /// 保存销售委托代销单
 /// </summary>
 /// <returns></returns>
 public static bool SaveOrder(Hashtable ht, SellChannelSttlModel sellChannelSttlModel, List<SellChannelSttlDetailModel> sellChannelSttlDetailModellist, out string strMsg)
 {
     bool isSucc = false;//是否添加成功
     strMsg = "";
     //判断单据编号是否存在
     if (NoIsExist(sellChannelSttlModel.SttlNo))
     {
         TransactionManager tran = new TransactionManager();
         tran.BeginTransaction();
         try
         {
             InsertOrderInfo(ht,sellChannelSttlModel, tran);
             InsertOrderDetail(sellChannelSttlDetailModellist, tran);
             tran.Commit();
             isSucc = true;
             strMsg = "保存成功!";
         }
         catch (Exception ex)
         {
             tran.Rollback();
             strMsg = "保存失败,请联系系统管理员!";
             throw ex;
         }
     }
     else
     {
         isSucc = false;
         strMsg = "该编号已被使用,请输入未使用的编号!";
     }
     return isSucc;
 }
        public static int AddSubBudgetInfo(SubBudgetModel subBudgetModel, XBase.Common.UserInfoUtil userinfo)
        {
            StringBuilder sqlstr = new StringBuilder();
            sqlstr.Append("insert into officedba.SubBudget(CompanyCD,projectid,BudgetName) values(@CompanyCD,@projectid,@BudgetName)");
            SqlParameter[] param = {
                                       new SqlParameter("@CompanyCD",SqlDbType.VarChar,50),
                                       new SqlParameter("@projectid",SqlDbType.Int),
                                       new SqlParameter("@BudgetName",SqlDbType.VarChar,200)
                                   };
            param[0].Value = userinfo.CompanyCD;
            param[1].Value = subBudgetModel.Projectid;
            param[2].Value = subBudgetModel.BudgetName;

            TransactionManager tran = new TransactionManager();
            int num = 0;
            tran.BeginTransaction();
            try
            {
                num = SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, sqlstr.ToString(), param);
                tran.Commit();
            }
            catch
            {
                tran.Rollback();
            }
            return num;
        }
        /// <summary>
        /// 修改自定义表单
        /// </summary>
        /// <param name="model"></param>
        /// <param name="sonModel"></param>
        /// <param name="strMsg"></param>
        /// <returns></returns>
        public static bool EditTable(CustomTableModel model, List<StructTable> sonModel, out string strMsg)
        {
            bool isSucc = false;//是否添加成功
            strMsg = "";
            string strSql = "delete from defdba.StructTable where  TableID=@TableID ";
            SqlParameter[] paras = { new SqlParameter("@TableID", model.ID) };
            TransactionManager tran = new TransactionManager();
            tran.BeginTransaction();
            try
            {

                EidtCustomTable(model, tran);
                SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, strSql.ToString(), paras);
                AddStructTable(sonModel, Convert.ToInt32(model.ID), tran);
                tran.Commit();
                isSucc = true;
                strMsg = "保存成功!";
            }
            catch (Exception ex)
            {
                tran.Rollback();
                strMsg = "保存失败,请联系系统管理员!";
                throw ex;
            }
            return isSucc;
        }
 public static int EditSubBudget(SubBudgetModel subBudgetModel, XBase.Common.UserInfoUtil userinfo)
 {
     StringBuilder sqlstr = new StringBuilder();
     sqlstr.Append("update officedba.SubBudget set BudgetName=@BudgetName,projectid=@projectid where ID=@ID");
     SqlParameter[] param = {
                                new SqlParameter("@BudgetName",SqlDbType.VarChar,200),
                                new SqlParameter("@projectid",SqlDbType.Int,4),
                                new SqlParameter("@ID",SqlDbType.Int)
                            };
     param[0].Value = subBudgetModel.BudgetName;
     param[1].Value = subBudgetModel.Projectid;
     param[2].Value = subBudgetModel.ID;
     TransactionManager tran = new TransactionManager();
     int num = 0;
     tran.BeginTransaction();
     try
     {
         num = SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, sqlstr.ToString(), param);
         tran.Commit();
     }
     catch
     {
         tran.Rollback();
     }
     return num;
 }
 public static int Update(XBase.Model.Office.SellReport.UserProductInfo model)
 {
     int num = 0;
     string sqlstr = "update officedba.UserProductInfo set productNum=@productNum,productName=@productName,price=@price,bref=@bref,memo=@memo where id=@id";
     TransactionManager tran = new TransactionManager();
     tran.BeginTransaction();
     SqlParameter[] param = {
                                new SqlParameter("@CompanyCD",SqlDbType.VarChar,50),
                                new SqlParameter("@productNum",SqlDbType.VarChar,50),
                                new SqlParameter("@productName",SqlDbType.VarChar,200),
                                new SqlParameter("@price",SqlDbType.Decimal),
                                new SqlParameter("@bref",SqlDbType.VarChar,500),
                                new SqlParameter("@memo",SqlDbType.VarChar,1000),
                                new SqlParameter("@id",SqlDbType.Int,4)
                            };
     param[0].Value = model.CompanyCD;
     param[1].Value = model.productNum;
     param[2].Value = model.productName;
     param[3].Value = model.price;
     param[4].Value = model.bref;
     param[5].Value = model.memo;
     param[6].Value = model.id;
     try
     {
         num = SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, sqlstr, param);
         tran.Commit();
     }
     catch
     {
         tran.Rollback();
     }
     return num;
 }
 /// <summary>
 /// 添加自定义表单
 /// </summary>
 /// <returns></returns>
 public static int AddTable(CustomTableModel model, List<StructTable> sonModel, out string strMsg)
 {
     int TableID = 0;
     strMsg = "";
     //判断单据编号是否存在
     if (!Exists(model.CompanyCD, model.CustomTableName))
     {
         TransactionManager tran = new TransactionManager();
         tran.BeginTransaction();
         try
         {
             TableID = AddCustomTable(model, tran);
             AddStructTable(sonModel, TableID, tran);
             tran.Commit();
             strMsg = "保存成功!";
         }
         catch (Exception ex)
         {
             tran.Rollback();
             strMsg = "保存失败,请联系系统管理员!";
             throw ex;
         }
     }
     else
     {
         strMsg = "该表名已被使用,请输入未使用的表名!";
     }
     return TableID;
 }
        /// <summary>
        /// 保存批次规则设置
        /// </summary>
        /// <param name="model">BachNoRuleSet实体</param>
        /// <param name="strMsg">返回信息</param>
        /// <returns>规则ID</returns>
        public static int SaveBatchRule(BatchNoRuleSet model, out string strMsg)
        {
            int ruleID = 0;
            strMsg = "";
            StringBuilder strSql = new StringBuilder();
            if (!IsExisted(model.CompanyCD))
            {
                TransactionManager tran = new TransactionManager();
                tran.BeginTransaction();
                try
                {
                    strSql.AppendLine(" insert into officedba.BatchRule ");
                    strSql.AppendLine(" (CompanyCD,RuleName,RulePrefix,RuleDateType,RuleNoLen,LastNo,RuleExample,");
                    strSql.AppendLine(" Remark,IsDefault,UsedStatus,ModifiedDate,ModifiedUserID) values");
                    strSql.AppendLine(" (@CompanyCD,@RuleName,@RulePrefix,@RuleDateType,@RuleNoLen,@LastNo,@RuleExample,");
                    strSql.AppendLine(" @Remark,@IsDefault,@UsedStatus,getdate(),@ModifiedUserID)");
                    strSql.AppendLine(" ;select @@IDENTITY ");
                    SqlParameter[] param = { 
                                                new SqlParameter("@CompanyCD",model.CompanyCD),
                                                new SqlParameter("@RuleName",model.RuleName),
                                                new SqlParameter("@RulePrefix",model.RulePrefix),
                                                new SqlParameter("@RuleDateType",model.RuleDateType),
                                                new SqlParameter("@RuleNoLen",model.RuleNoLen),
                                                new SqlParameter("@LastNo",model.LastNo),
                                                new SqlParameter("@RuleExample",model.RuleExample),
                                                new SqlParameter("@Remark",model.Remark),
                                                new SqlParameter("@IsDefault",model.IsDefault),
                                                new SqlParameter("@UsedStatus",model.UsedStatus),
                                                new SqlParameter("@ModifiedUserID",model.ModifiedUserID)
                                               };

                    foreach (SqlParameter para in param)
                    {
                        if (para.Value == null)
                        {
                            para.Value = DBNull.Value;
                        }
                    }
                    ruleID = Convert.ToInt32(SqlHelper.ExecuteScalar(strSql.ToString(), param));
                    tran.Commit();
                    strMsg = "保存成功!";
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    strMsg = "保存失败,请联系系统管理员!";
                    throw ex;
                }
            }
            else
            {
                strMsg = "保存失败,已存在批次规则!";   
            }

            return ruleID;
        }
        /// <summary>
        /// 更新销售计划
        /// </summary>
        /// <returns></returns>
        public static bool Update(Hashtable ht,SellPlanModel sellPlanModel, SellPlanDetailModel sellPlanDetailModel, string strDetailAction, out string strMsg)
        {
            bool isSucc = false;//是否添加成功
            strMsg = "";
            if (IsUpdate(sellPlanModel.PlanNo))
            {

                TransactionManager tran = new TransactionManager();
                tran.BeginTransaction();
                try
                {

                    UpdateOrder(sellPlanModel, tran);

                    #region 拓展属性
                    GetExtAttrCmd(sellPlanModel, ht, tran);
                    #endregion

                    //明细操作的类型
                    switch (strDetailAction)
                    {
                        case "1"://无操作
                            break;
                        case "2"://添加新明细
                            InsertOrderDetail(sellPlanDetailModel, tran);
                            break;
                        case "3"://更新明细
                            UpdateOrderDetail(sellPlanDetailModel, tran);
                            break;
                        case "4"://删除明细
                            DelOrderDetail(sellPlanDetailModel, tran);
                            break;
                        default:
                            break;
                    }

                    tran.Commit();
                    strMsg = "保存成功!";
                    isSucc = true;
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    strMsg = "保存失败,请联系系统管理员!";
                    throw ex;
                }
            }
            else
            {
                isSucc = false;
                strMsg = "非制单状态的未提交审批、审批未通过或撤销审批计划不可修改!";
            }
            return isSucc;
        }
 /// <summary>
 /// 保存模板
 /// </summary>
 /// <param name="tbModel">ModuleTableModel模板实体</param>
 /// <param name="strMsg"></param>
 public static int SaveTableModel(ModuleTableModel tbModel, out string strMsg)
 {
     StringBuilder strSql = new StringBuilder();
     strMsg = "";
     int tbID = 0;
     if (!IsRepeatedModule(tbModel.TableID, "0"))
     {
         TransactionManager tran = new TransactionManager();
         tran.BeginTransaction();
         try
         {
             strSql.AppendLine(" insert into defdba.ModuleTable (CompanyCD,ModuleContent,TableID,ModuleType,UseStatus)");
             strSql.AppendLine(" values(@CompanyCD,@ModuleContent,@TableID,@ModuleType,@UseStatus)");
             strSql.AppendLine(" ;select @@IDENTITY ");
             SqlParameter[] param = { 
                             new SqlParameter("@CompanyCD",tbModel.CompanyCD ),
                             new SqlParameter("@ModuleContent",tbModel.ModuleContent ),
                             new SqlParameter("@TableID",tbModel.TableID ),
                             new SqlParameter("@ModuleType",tbModel.ModuleType ),
                             new SqlParameter("@UseStatus",tbModel.UseStatus )
                            };
             foreach (SqlParameter para in param)
             {
                 if (para.Value == null)
                 {
                     para.Value = DBNull.Value;
                 }
             }
             tbID = Convert.ToInt32(SqlHelper.ExecuteScalar(strSql.ToString(), param));
             tran.Commit();
             strMsg = "保存成功!";
         }
         catch (Exception ex)
         {
             tran.Rollback();
             strMsg = "保存失败,请联系系统管理员!";
             throw ex;
         }
     }
     else
     {
         strMsg = "保存失败,该表的模板已定义!";
     }
     
     return tbID;
 }
        /// <summary>
        /// 添加销售机会及阶段
        /// </summary>
        /// <param name="sellChanceModel">销售机会表实体</param>
        /// <param name="sellChancePushModel">销售阶段表实体</param>
        /// <returns>是否添加成功</returns>
        public static bool InsertSellChance(Hashtable ht,SellChanceModel sellChanceModel, SellChancePushModel sellChancePushModel)
        {
            bool isSucc = false;//是否添加成功

            TransactionManager tran = new TransactionManager();
            tran.BeginTransaction();
            try
            {
                int sellChID = InsertChanece(tran, sellChanceModel);
                //若是设置了手机提醒 则插入以下信息
                if (sellChanceModel.IsMobileNotice == "1")
                {

                    StringBuilder strSql = new StringBuilder();
                    strSql.Append("insert into officedba.NoticeHistory(");
                    strSql.Append("   CompanyCD,SourceFlag,SourceID,PlanNoticeDate  )  ");
                    strSql.Append("      values(@CompanyCD, @SourceFlag,@SourceID,@PlanNoticeDate  ) ");
                    SqlParameter[] param = { 
                                            new SqlParameter("@CompanyCD",sellChanceModel.CompanyCD),
                                            new SqlParameter("@SourceFlag","4"),
                                            new SqlParameter("@SourceID",sellChID),
                                            new SqlParameter("@PlanNoticeDate",sellChanceModel.RemindTime)
                                           };
                    SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, strSql.ToString(), param);//.ExecuteTransWithCommand(commN);
                }

                //拓展属性
                GetExtAttrCmd(sellChanceModel,ht, tran);
                
                InsertPush(tran, sellChancePushModel);
                tran.Commit();
                isSucc = true;
            }
            catch (Exception ex)
            {
                tran.Rollback();
                isSucc = false;
                throw ex;
            }


            return isSucc;
        }
 /// <summary>
 /// 添加新单据
 /// </summary>
 /// <returns></returns>
 public static bool Insert(VoucherTemplateModel voucherTemplateModel, List<VoucherTemplateDetailModel> voucherTemplateDetailModelList, out string strMsg, out int Id)
 {
     bool isSucc = false;//是否添加成功
     strMsg = "";
     Id = 0;
     //判断单据编号是否存在
     if (NoIsExist(voucherTemplateModel.TemNo))
     {
         if (IsTypeUsed(voucherTemplateModel.TemType.ToString(), voucherTemplateModel.CompanyCD))
         {
             TransactionManager tran = new TransactionManager();
             tran.BeginTransaction();
             try
             {
                 InsertVoucherTemplate(voucherTemplateModel, tran, out Id);
                 InsertVoucherTemplateDetail(voucherTemplateDetailModelList, tran);
                 tran.Commit();
                 isSucc = true;
                 strMsg = "保存成功!";
             }
             catch (Exception ex)
             {
                 tran.Rollback();
                 strMsg = "保存失败,请联系系统管理员!";
                 throw ex;
             }
         }
         else
         {
             isSucc = false;
             strMsg = "该模板类型已存在,请选择其他未使用的模板类型!";
         }
     }
     else
     {
         isSucc = false;
         strMsg = "该编号已被使用,请输入未使用的编号!";
     }
     return isSucc;
 }
        /// <summary>
        /// 保存销售计划
        /// </summary>
        /// <returns></returns>
        public static bool Save(Hashtable ht,SellPlanModel sellPlanModel, SellPlanDetailModel sellPlanDetailModel, out string strMsg)
        {
            bool isSucc = false;//是否添加成功
            strMsg = "";
            //判断计划编号是否存在
            if (NoIsExist(sellPlanModel.PlanNo))
            {
                TransactionManager tran = new TransactionManager();
                tran.BeginTransaction();
                try
                {
                    InsertOrder(sellPlanModel, tran);

                    #region 拓展属性                  
                    GetExtAttrCmd(sellPlanModel, ht, tran);
                    #endregion

                    if (sellPlanDetailModel.PlanNo != null)
                    {
                        InsertOrderDetail(sellPlanDetailModel, tran);
                    }
                    tran.Commit();
                    isSucc = true;
                    strMsg = "保存成功!";
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    strMsg = "保存失败,请联系系统管理员!";
                    throw ex;
                }
            }
            else
            {
                isSucc = false;
                strMsg = "该编号已被使用,请输入未被使用的编号!";
            }
            return isSucc;
        }
        /// <summary>
        /// 添加销售报价单
        /// </summary>
        /// <param name="sellChanceModel">销售机会表实体</param>
        /// <param name="sellChancePushModel">销售阶段表实体</param>
        /// <returns>是否添加成功</returns>
        public static bool InsertOrder(Hashtable ht, SellOfferModel sellOfferModel, List<SellOfferDetailModel> SellOrderDetailModelList,
            List<SellOfferHistoryModel> sellOfferHistoryModelList, out string strMsg)
        {
            bool isSucc = false;//是否添加成功
            strMsg = "";
            //判断单据编号是否存在
            if (NoIsExist(sellOfferModel.OfferNo))
            {
                TransactionManager tran = new TransactionManager();
                tran.BeginTransaction();
                try
                {
                    InsertSellOffer(sellOfferModel, tran);

                    //拓展属性
                    GetExtAttrCmd(sellOfferModel, ht, tran);

                    InsertSellOfferDetail(sellOfferModel, SellOrderDetailModelList, tran);
                    InsertSellOfferHistory(sellOfferModel, sellOfferHistoryModelList, tran);
                    tran.Commit();
                    isSucc = true;
                    strMsg = "保存成功!";
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    isSucc = false;
                    strMsg = "保存失败,请联系系统管理员!";
                    throw ex;
                }
            }
            else
            {
                isSucc = false;
                strMsg = "该编号已被使用,请输入未使用的编号!";
            }
            return isSucc;

        }
        /// <summary>
        /// 添加单据
        /// </summary>
        /// <param name="sellChanceModel">销售机会表实体</param>
        /// <param name="sellChancePushModel">销售阶段表实体</param>
        /// <returns>是否添加成功</returns>
        public static bool InsertOrder(AdversaryInfoModel adversaryInfoModel, List<AdversaryDynamicModel> adversaryDynamicModelList)
        {
            bool isSucc = false;//是否添加成功

            TransactionManager tran = new TransactionManager();
            tran.BeginTransaction();
            try
            {
                InsertAdversaryInfo( adversaryInfoModel, tran);
                InsertAdversaryDynamic(adversaryDynamicModelList, tran);
                tran.Commit();
                isSucc = true;
            }
            catch(Exception ex)
            {
                tran.Rollback();
                isSucc = false;
                throw ex;
            }


            return isSucc;
        }
 public static bool Insert(SellReportModel sellrptModel, List<SellReportDetailModel> sellRptDetailModellList, out string strMsg)
 {
     bool isSucc = false;//是否添加成功
     int billID = 0;
     strMsg = "";
     TransactionManager tran = new TransactionManager();
     tran.BeginTransaction();
     try
     {
         billID = InsertSellReport(sellrptModel, tran);
         InsertSellReportDetail(sellRptDetailModellList,billID, tran);
         tran.Commit();
         isSucc = true;
         strMsg = "保存成功!|"+billID;
     }
     catch (Exception ex)
     {
         tran.Rollback();
         strMsg = "保存失败,请联系系统管理员!";
         throw ex;
     }
    
     return isSucc;
 }
        /// <summary>
        /// 修改销售合同
        /// </summary>
        /// <param name="sellChanceModel">销售合同表实体</param>
        /// <param name="sellChancePushModel">销售阶段表实体</param>
        /// <returns>是否添加成功</returns>
        public static bool UpdateOrder(Hashtable ht,SellContractModel sellContractModel,
            List<SellContractDetailModel> SellContractDetailModelList, out string strMsg)
        {
            bool isSucc = false;//是否添加成功
            strMsg = "";
            if (IsUpdate(sellContractModel.ContractNo))
            {
                TransactionManager tran = new TransactionManager();
                tran.BeginTransaction();
                try
                {
                    UpdateSellContract(sellContractModel, tran);

                    //拓展属性
                    GetExtAttrCmd(sellContractModel, ht, tran);

                    InsertSellContractDetail(SellContractDetailModelList, sellContractModel, tran);
                    tran.Commit();
                    isSucc = true;
                    strMsg = "保存成功!";
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    strMsg = "保存失败,请联系系统管理员!";
                    throw ex;
                }
            }
            else
            {
                isSucc = false;
                strMsg = "非制单状态的未提交审批、审批未通过或撤销审批单据不可修改!";
            }
            return isSucc;

        }
        public static bool UpdateMoveApplyCancelConfirm(string BillStatus, string ID, string userID, string CompanyID, string ReprotNo)
        {
            try
            {

                StringBuilder sql = new StringBuilder();
                sql.AppendLine("UPDATE officedba.RectApply");
                sql.AppendLine("		SET BillStatus=@Status        ");
                sql.AppendLine("		,ModifiedDate=getdate()      ");
                sql.AppendLine("		,ModifiedUserID=@ModifiedUserID        ");
                sql.AppendLine(" 	,ConfirmDate = null       ");
                sql.AppendLine(" 	,Confirmor = null ");
                sql.AppendLine("WHERE                  ");
                sql.AppendLine(" 	CompanyCD = @CompanyCD            ");
                sql.AppendLine(" 	AND RectApplyNo = @RectApplyNo          ");



                SqlParameter[] param;
                param = new SqlParameter[4];
                param[0] = SqlHelper.GetParameter("@Status", BillStatus);
                param[1] = SqlHelper.GetParameter("@ModifiedUserID", userID);
                param[2] = SqlHelper.GetParameter("@CompanyCD", CompanyID);
                param[3] = SqlHelper.GetParameter("@RectApplyNo", ReprotNo);

                //SqlHelper.ExecuteTransSql(sql.ToString(), param);
                TransactionManager tran = new TransactionManager();
                tran.BeginTransaction();
                try
                {


                    FlowDBHelper.OperateCancelConfirm(CompanyID, Convert.ToInt32(XBase.Common.ConstUtil.BILL_TYPEFLAG_HUMAN), Convert.ToInt32(XBase.Common.ConstUtil.BILL_TYPECODE_HUMAN_RECT_APPLY), Convert.ToInt32(ID), userID, tran);//取消确认
                    SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, sql.ToString(), param);
                    tran.Commit();
                    return true;
                }
                catch
                {
                    tran.Rollback();
                    return false;
                }
            }
            catch
            {
                return false;
            }
        }
        /// <summary>
        /// 取消调职确认信息
        /// </summary>
        /// <param name="CarApplyM">车辆申请信息</param>
        /// <returns>添加是否成功 false:失败,true:成功</returns>
        public static bool UpdateMoveApplyCancelConfirm(string BillStatus,string ID, string userID, string CompanyID)
        {
            try
            {
                #region 车辆申请信息SQL拼写
                StringBuilder sql = new StringBuilder();
                sql.AppendLine("UPDATE officedba.EmplApply");
                sql.AppendLine("		SET Status=@Status        ");
                sql.AppendLine("		,ModifiedDate=getdate()      ");
                sql.AppendLine("		,ModifiedUserID=@ModifiedUserID        ");
                sql.AppendLine("WHERE                  ");
                sql.AppendLine("		ID=@ID   ");

                #endregion
                #region 车辆申请信息参数设置
                SqlParameter[] param;
                param = new SqlParameter[3];
                param[0] = SqlHelper.GetParameter("@Status", BillStatus);
                param[1] = SqlHelper.GetParameter("@ModifiedUserID", userID);
                param[2] = SqlHelper.GetParameter("@ID", ID);
                #endregion
                //SqlHelper.ExecuteTransSql(sql.ToString(), param);
                TransactionManager tran = new TransactionManager();
                tran.BeginTransaction();
                try
                {
                    FlowDBHelper.OperateCancelConfirm(CompanyID, 2, 12, Convert.ToInt32(ID), userID, tran);//取消确认
                    SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, sql.ToString(), param);
                    tran.Commit();
                    return true;
                }
                catch 
                {
                    tran.Rollback();
                    return false;
                }
            }
            catch 
            {
                return false;
            }
        }
        /// <summary>
        /// 删除分项预算概要 及其项目摘要,项目预算表中与该“分项预算概要”相关的单据
        /// </summary>
        /// <param name="billID">删除的ID串</param>
        /// <returns></returns>
        public static int DeLSubBudgetInfo(string billID)
        {
            StringBuilder sqlstr = new StringBuilder();
            TransactionManager tran = new TransactionManager();
            int num = 0;
            string[] billIDArr = billID.Split(',');
            string str = "";
            string budgetIDstr = "-1";
            //获取要删除的项目摘要ID串
            for (int i = 0; i < billIDArr.Length; i++)
            { 
                str = "select budgetID from officedba.budgetsummary where subBudgetID=@ID ";
                SqlParameter[] paramstr = { 
                                            new SqlParameter("@ID",billIDArr[i].ToString().Trim())
                                          };
                int budgetID = Convert.ToInt32(SqlHelper.ExecuteScalar(str.ToString(), paramstr));
                budgetIDstr += ","+budgetID;
            }
            //删除与此分项预算概要相关的“项目摘要”及其“项目预算表信息”
            sqlstr.AppendLine("delete from officedba.budgetSummary where subBudgetID in (" + billID + ")");
            sqlstr.AppendLine("delete from officedba.ProjectBaseNum where SummaryID in (" + budgetIDstr + ")");
            sqlstr.AppendLine("delete from officedba.ProjectBudgetDetails where SummaryID in (" + budgetIDstr + ")");
            sqlstr.AppendLine("delete from officedba.SubBudget where ID in (" + billID + ")");

            tran.BeginTransaction();
            try
            {
                num = SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, sqlstr.ToString());
                tran.Commit();
            }
            catch
            {
                tran.Rollback();
            }
            return num;
        }
 /// <summary>
 /// 添加新单据
 /// </summary>
 /// <returns></returns>
 public static bool Insert(FeesModel sellOrderModel, List<FeesDetailModel> sellOrderDetailModellList, out string strMsg,out int Id)
 {
     bool isSucc = false;//是否添加成功
     strMsg = "";
     Id = 0;
     //判断单据编号是否存在
     if (NoIsExist(sellOrderModel.FeesNo))
     {
         TransactionManager tran = new TransactionManager();
         tran.BeginTransaction();
         try
         {
             InsertSellOrder(sellOrderModel, tran,out Id);
             InsertSellOrderDetail(sellOrderDetailModellList, tran);
             if (sellOrderModel.FeesType != "0")
             {
                 //非无源单时,更改源单开票状态
                 updateSourceByFeesType(sellOrderModel.FeesType, sellOrderModel.SourceNo, tran);
             }
             tran.Commit();
             isSucc = true;
             strMsg = "保存成功!";
         }
         catch (Exception ex)
         {
             tran.Rollback();
             strMsg = "保存失败,请联系系统管理员!";
             throw ex;
         }
     }
     else
     {
         isSucc = false;
         strMsg = "该编号已被使用,请输入未使用的编号!";
     }
     return isSucc;
 }
        public static bool Del(string orderNos, out string strMsg, out string strFieldText)
        {
            string strCompanyCD = string.Empty;//单位编号
            bool isSucc = false;
            string allOrderNo = "";
            strMsg = "";
            strFieldText = "";
            bool bTemp = false;//单据是否可以被删除
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            TransactionManager tran = new TransactionManager();

            strCompanyCD = ((UserInfoUtil)SessionUtil.Session["UserInfo"]).CompanyCD;

            string[] orderNoS = null;
            orderNoS = orderNos.Split(',');

            for (int i = 0; i < orderNoS.Length; i++)
            {
                if (!IsFlow(orderNoS[i]))
                {
                    strFieldText += "单据:" + orderNoS[i] + "|";
                    strMsg += "已确认后的单据不允许删除!|";
                    bTemp = true;
                }

                orderNoS[i] = "'" + orderNoS[i] + "'";
                sb.Append(orderNoS[i]);
            }

            allOrderNo = sb.ToString().Replace("''", "','");
            if (!bTemp)
            {
                tran.BeginTransaction();
                try
                {
                    //源单改为“未开票”
                    UpdateSourceIsFeesAccount(tran.Trans, strCompanyCD, allOrderNo);

                    SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, "DELETE FROM officedba.Fees WHERE FeesNo  IN ( " + allOrderNo + " ) and CompanyCD='" + strCompanyCD + "'", null);
                    SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, "DELETE FROM officedba.FeesDetail WHERE FeesNo  IN ( " + allOrderNo + " ) and CompanyCD='" + strCompanyCD + "'", null);
                                        
                    tran.Commit();
                    isSucc = true;
                    strMsg = "删除成功!";

                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    strMsg = "删除失败,请联系系统管理员!";
                    isSucc = false;
                    throw ex;
                }
            }
            else
            {
                isSucc = false;
            }
            return isSucc;
        }
        /// <summary>
        /// 删除回款计划
        /// </summary>
        /// <param name="strIDS"></param>
        /// <returns></returns>
        public static bool DelSellGathering(string strIDS, out string strMsg)
        {
            bool isSucc = false;//是否添加成功
            string strSql = "delete from officedba.SellGathering where ID = @ID";
            string[] strId = strIDS.Split(',');
            strMsg = "";
            TransactionManager tran = new TransactionManager();
            tran.BeginTransaction();
            try
            {
                for (int i = 0; i < strId.Length; i++)
                {
                    SqlParameter[] para = { new SqlParameter("@ID", Convert.ToInt32(strId[i])) };
                    SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, strSql, para);
                }

                tran.Commit();
                isSucc = true;
                strMsg = "删除成功!";
            }
            catch (Exception ex)
            {
                tran.Rollback();
                strMsg = "删除失败,请联系系统管理员!";
                isSucc = false;
                throw ex;
            }
            return isSucc;
        }
        public static int DelReportList(string idlist)
        {
            //删除报表设置
            string sqlstr = "delete from defdba.ReportTable where ID in ( "+idlist+" )";
            //删除菜单
            
            string[] arr = idlist.Split(',');
            for (int i = 0; i < arr.Length; i++)
            {
                sqlstr += ";" + "delete from defdba.CustomModule where PropertyValue='Pages/Office/DefManager/ReportTableList.aspx?reportid=" + arr[i] + "'";
            }

            TransactionManager tran = new TransactionManager();
            tran.BeginTransaction();
            try
            {
                int num = SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, sqlstr);
                tran.Commit();
                return num;
            }
            catch
            {
                tran.Rollback();
                return 0;
            }
        }
        /// <summary>
        /// 删除单据
        /// </summary>
        /// <param name="orderNos"></param>
        /// <returns></returns>
        public static bool DelOrder(string orderNos)
        {
            string strCompanyCD = string.Empty;//单位编号
            bool isSucc = false;
            string allOrderNo = "";
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            TransactionManager tran = new TransactionManager();
           
                strCompanyCD = ((UserInfoUtil)SessionUtil.Session["UserInfo"]).CompanyCD;
            
            string[] orderNoS = null;
            orderNoS = orderNos.Split(',');

            for (int i = 0; i < orderNoS.Length; i++)
            {
                orderNoS[i] = "'" + orderNoS[i] + "'";
                sb.Append(orderNoS[i]);
            }

            allOrderNo = sb.ToString().Replace("''", "','");
            tran.BeginTransaction();
            try
            {
                SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, "DELETE FROM officedba.AdversaryInfo WHERE CustNo IN ( " + allOrderNo + " ) and CompanyCD='" + strCompanyCD + "'", null);
                SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, "DELETE FROM officedba.AdversaryDynamic WHERE CustNo IN ( " + allOrderNo + " ) and CompanyCD='" + strCompanyCD + "'", null);

                tran.Commit();
                isSucc = true;

            }
            catch (Exception ex)
            {
                tran.Rollback();
                isSucc = false;
                throw ex;
            }
            return isSucc;
        }
        /// <summary>
        /// 跟新单据单据
        /// </summary>
        /// <param name="sellChanceModel">销售机会表实体</param>
        /// <param name="sellChancePushModel">销售阶段表实体</param>
        /// <returns>是否添加成功</returns>
        public static bool UpdateOrder(AdversaryInfoModel adversaryInfoModel, List<AdversaryDynamicModel> adversaryDynamicModelList)
        {
            bool isSucc = false;//是否添加成功
            string strSql = "delete from officedba.AdversaryDynamic where  CustNo=@CustNo  and CompanyCD=@CompanyCD";
            SqlParameter[] paras = { new SqlParameter("@CustNo", adversaryInfoModel.CustNo), new SqlParameter("@CompanyCD", adversaryInfoModel.CompanyCD) };
            TransactionManager tran = new TransactionManager();
            tran.BeginTransaction();
            try
            {
                UpdateAdversaryInfo( adversaryInfoModel,  tran);
                SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, strSql.ToString(), paras);
                InsertAdversaryDynamic(adversaryDynamicModelList, tran);
                tran.Commit();
                isSucc = true;
            }
            catch(Exception ex)
            {
                tran.Rollback();
                isSucc = false;
                throw ex;
            }


            return isSucc;
        }
        /// <summary>
        /// 删除自定义表单
        /// </summary>
        /// <param name="id">数据ID</param>
        /// <param name="tableName">物理表名</param>
        /// <param name="CompanyCD">机构代码</param>
        public static void DelTable(string id, string tableName, string CompanyCD)
        {
            TransactionManager tran = new TransactionManager();
            tran.BeginTransaction();
            try
            {
                if (!string.IsNullOrEmpty(tableName))
                {// 删除物理表
                    SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, "DROP TABLE " + tableName, null);
                }
                // 删除表
                SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, "delete from defdba.CustomTable where ID =" + id, null);
                // 删除表结构
                SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, "delete from defdba.StructTable where TableID =" + id, null);
                // 删除模板表
                SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text, "delete from defdba.ModuleTable where TableID =" + id, null);

                // 删除菜单
                SqlHelper.ExecuteNonQuery(tran.Trans, CommandType.Text
                    , string.Format("DELETE FROM defdba.CustomModule WHERE PropertyValue ='Pages/Office/DefManager/DefTableList.aspx?tableid={0}' AND CompanyCD='{1}' ", id, CompanyCD), null);

                tran.Commit();
            }
            catch
            {
                tran.Rollback();
            }
        }