Example #1
0
        public static void UpdateBOV(BillOfValidate bov, BusiLog bl)
        {
            //ConnectionPool.IsCenter = false;
            using (SqlConnection conn = ConnectionPool.BorrowConnection())
            {
                //conn.Open();
                SqlTransaction trans = conn.BeginTransaction(IsolationLevel.ReadCommitted);
                try
                {
                    string   strSysTime = SqlHelper.ExecuteScalar(trans, CommandType.Text, "select getdate()").ToString();
                    DateTime dtSysTime  = DateTime.Parse(strSysTime);

                    Dept dept = new Dept();
                    dept.cnvcDeptID = bov.cnvcDeptID;
                    dept            = EntityMapping.Get(dept, trans) as Dept;

                    OilStorage os = new OilStorage();
                    os.cnvcGoodsName = bov.cnvcGoodsName;
                    os.cnvcGoodsType = bov.cnvcGoodsType;
                    os.cnvcDeptID    = bov.cnvcDeptID;
                    os = EntityMapping.Get(os, trans) as OilStorage;
                    if (null == os)
                    {
                        throw new BusinessException(bexType.noobject, "库存获取错误");
                    }

                    Guid gd = Guid.NewGuid();

                    //判断修改操作类型 改多为入库 改少为出库
                    BillOfValidate oldbov = new BillOfValidate();
                    oldbov.cnvcDeptID = bov.cnvcDeptID;
                    oldbov.cnvcBillNo = bov.cnvcBillNo;
                    oldbov            = EntityMapping.Get(oldbov, trans) as BillOfValidate;
                    string strOperType = "";
                    if (oldbov.cnnValidateCount > bov.cnnValidateCount)
                    {
                        strOperType = InType.BOVModOut;
                    }
                    else
                    {
                        strOperType = InType.BOVModIn;
                    }


                    if (bov.cnnValidateCount != oldbov.cnnValidateCount)
                    {
                        //验收单

                        //库存日志
                        OilStorageLog ol = new OilStorageLog(bov.ToTable());
                        ol.cnvcDeptName  = dept.cnvcDeptName;
                        ol.cndOperDate   = dtSysTime;
                        ol.cnvcOperType  = strOperType;
                        ol.cnnSerial     = gd;
                        ol.cnnLastCount  = oldbov.cnnValidateCount;                   //os.cnnStorageCount;
                        ol.cnnInOutCount = bov.cnnValidateCount - oldbov.cnnValidateCount;
                        ol.cnnCurCount   = bov.cnnValidateCount;                      //os.cnnStorageCount + bov.cnnValidateCount - oldbov.cnnValidateCount;
                        EntityMapping.Create(ol, trans);


                        OilStorageLogHis olhis = new OilStorageLogHis(ol.ToTable());
                        EntityMapping.Create(olhis, trans);

                        oldbov.SynchronizeModifyValue(bov);
                        oldbov.cnnDistance      = bov.cnnDistance;
                        oldbov.cnnLose          = bov.cnnLose;
                        oldbov.cnnOriginalCount = bov.cnnOriginalCount;
                        oldbov.cnnOuterLose     = bov.cnnQuotaLose;
                        oldbov.cnnQuotaLose     = bov.cnnQuotaLose;
                        oldbov.cnnTransportLose = bov.cnnTransportLose;
                        oldbov.cnnValidateCount = bov.cnnValidateCount;
                        oldbov.cnvcInType       = strOperType;
                        EntityMapping.Update(oldbov, trans);

                        //库存
                        os.cnnStorageCount = os.cnnStorageCount + ol.cnnInOutCount;                      //ol.cnnCurCount;
                        EntityMapping.Update(os, trans);
                    }
                    //日志
                    bl.cnnSerial    = gd;
                    bl.cnvcComments = "验收单修改,出入库量:" + (bov.cnnValidateCount - oldbov.cnnValidateCount);
                    bl.cnvcOperType = OperType.OP201;
                    bl.cndOperDate  = dtSysTime;
                    bl.cnvcSource   = InSource.cs;
                    EntityMapping.Create(bl, trans);

                    trans.Commit();
                }
                catch (BusinessException bex)
                {
                    trans.Rollback();
                    LogAdapter.WriteBusinessException(bex);
                    throw bex;
                }
                catch (SqlException sex)
                {
                    trans.Rollback();
                    LogAdapter.WriteDatabaseException(sex);
                    throw sex;
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    LogAdapter.WriteFeaturesException(ex);
                    throw ex;
                }
                finally
                {
                    ConnectionPool.ReturnConnection(conn);
                }
            }
        }