Exemple #1
0
        /// <summary>
        /// 审核
        /// </summary>
        /// <param name="p_FormID">单据ID</param>
        /// <param name="p_Type">0/1/2/3:弃审/审核</param>
        public void RSubmit(int p_FormID, int p_Type, IDBTransAccess sqlTrans)
        {
            try
            {
                int    p_TempType = p_Type;//处理状态
                string sql        = string.Empty;
                IOForm entity     = new IOForm(sqlTrans);
                entity.ID = p_FormID;
                entity.SelectByID();

                //if (!RSubmitCheckJS(entity.FormDate, sqlTrans))
                //{
                //    throw new Exception("不允许操作,此单据日期之后已经有结算数据");
                //}

                if (entity.SubmitFlag == p_Type)//如果相同异常
                {
                    throw new Exception("单据状态重复设置,请关闭程序重新打开操作");
                }

                int p_AuditFlag = -1;
                sql = "SELECT FillDataTypeID,AuditFlag,WHQtyPosID,CheckQtyPer1,CheckQtyFrom,CheckQtyPer2,DZFlag FROM Enum_FormList WHERE ID=" + SysString.ToDBString(entity.SubType);
                DataTable dtFormList = sqlTrans.Fill(sql);
                if (dtFormList.Rows.Count != 0)
                {
                    p_AuditFlag = SysConvert.ToInt32(dtFormList.Rows[0]["AuditFlag"]);
                    if (p_AuditFlag == 0)//不需要审核
                    {
                        switch (p_Type)
                        {
                        case (int)ConfirmFlag.未提交:
                            //p_Type=(int)ConfirmFlag.未提交;
                            break;

                        case (int)ConfirmFlag.已提交:
                            p_Type = (int)ConfirmFlag.审核通过;
                            break;

                        case (int)ConfirmFlag.审核通过:
                            //								p_Type=(int)ConfirmFlag.审核通过;
                            break;

                        case (int)ConfirmFlag.审核拒绝:
                            p_Type = (int)ConfirmFlag.未提交;
                            break;
                        }
                    }

                    #region 提交
                    sql = "UPDATE WH_IOForm SET SubmitFlag=" + SysString.ToDBString(p_Type);
                    if (p_Type == (int)ConfirmFlag.审核通过 || p_Type == (int)ConfirmFlag.审核拒绝)
                    {
                        sql += ",SubmitOPID=" + SysString.ToDBString(ParamConfig.LoginName) + ",SubmitTime=" + SysString.ToDBString(DateTime.Now);
                    }
                    sql += " WHERE ID=" + p_FormID.ToString();//更新单据主表审核状态
                    sqlTrans.ExecuteNonQuery(sql);

                    //更新转换后单据的状态
                    sql = "UPDATE WH_IOForm SET SubmitFlag=" + SysString.ToDBString(p_Type);
                    if (p_Type == (int)ConfirmFlag.审核通过 || p_Type == (int)ConfirmFlag.审核拒绝)
                    {
                        sql += ",SubmitOPID=" + SysString.ToDBString(ParamConfig.LoginName) + ",SubmitTime=" + SysString.ToDBString(DateTime.Now);
                    }
                    sql += " WHERE FromIOFormID=" + p_FormID.ToString();
                    sqlTrans.ExecuteNonQuery(sql);


                    //开始检验和判断是否需要提交
                    int  TempSubmitType = 0;     //提交和撤销提交状态
                    bool SubmitFlag     = false; //是否需要提交
                    if (p_AuditFlag == 0)        //不需要审核
                    {
                        switch (p_TempType)
                        {
                        case (int)ConfirmFlag.审核通过:
                            SubmitFlag     = true;
                            TempSubmitType = 1;
                            break;

                        case (int)ConfirmFlag.审核拒绝:
                            TempSubmitType = 0;
                            break;

                        case (int)ConfirmFlag.已提交:
                            SubmitFlag     = true;
                            TempSubmitType = 1;
                            break;

                        case (int)ConfirmFlag.未提交:
                            SubmitFlag     = true;
                            TempSubmitType = 0;
                            break;
                        }
                    }
                    else//需要审核
                    {
                        switch (p_TempType)
                        {
                        case (int)ConfirmFlag.审核通过:
                            TempSubmitType = 1;
                            SubmitFlag     = true;
                            break;

                        case (int)ConfirmFlag.审核拒绝:
                            if (entity.SubmitFlag == (int)ConfirmFlag.审核通过)    //如果之前的状态是审核通过的才执行
                            {
                                TempSubmitType = 0;
                                SubmitFlag     = true;
                            }
                            break;

                        case (int)ConfirmFlag.已提交:
                            break;

                        case (int)ConfirmFlag.未提交:
                            break;
                        }
                    }

                    if (SubmitFlag)//需要执行提交操作
                    {
                        IOFormDtsRule ruledts = new IOFormDtsRule();
                        ruledts.RSubmit(p_FormID, TempSubmitType, dtFormList.Rows[0], sqlTrans);//操作子表库存
                    }
                    #endregion
                }
                if (entity.SubmitFlag == p_Type)//如果相同异常
                {
                    throw new Exception("单据状态重复设置,请关闭程序重新打开操作");
                }
            }
            catch (BaseException)
            {
                throw;
            }
            catch (Exception E)
            {
                throw new BaseException(E.Message);
            }
        }