Exemplo n.º 1
0
        /// <summary>
        /// 系统自动执行订单完成发货的最后数据操作(适合批量完成订单操作)
        /// </summary>
        /// <param name="orderInfo"></param>
        /// <param name="operatorName"></param>
        /// <param name="errorMessage"></param>
        public bool FinishConsignmentOrder(GoodsOrderInfo orderInfo, string operatorName, out string errorMessage)
        {
            if (orderInfo.OrderState != (int)OrderState.Consignmented)
            {
                errorMessage = "当前订单:" + orderInfo.OrderNo + ",状态:" + orderInfo.OrderState + ",无法完成!";
                return(false);
            }
            using (var tran = new TransactionScope(TransactionScopeOption.Required))
            {
                errorMessage = String.Empty;
                #region -- 插入出入库待执行异步表
                var asyncStorageInfo = new ASYNStorageRecordInfo
                {
                    CreateTime      = DateTime.Now,
                    ID              = Guid.NewGuid(),
                    IdentifyId      = orderInfo.OrderId,
                    IdentifyKey     = orderInfo.OrderNo,
                    IsValidateStock = false,
                    StorageState    = (int)StorageRecordState.Finished,
                    StorageType     = (int)StorageRecordType.SellStockOut,
                    WarehouseId     = orderInfo.DeliverWarehouseId
                };
                var successStorage = _asynStorageRecordDao.Insert(asyncStorageInfo);
                if (!successStorage)
                {
                    errorMessage = "添加出入库待执行异步表失败";
                    return(false);
                }
                #endregion

                #region -- 插入往来帐待执行异步表
                var asynReckoningInfo = new ASYNReckoningInfo
                {
                    CreateTime        = DateTime.Now,
                    ID                = Guid.NewGuid(),
                    IdentifyId        = orderInfo.OrderId,
                    IdentifyKey       = orderInfo.OrderNo,
                    ReckoningFromType = ASYNReckoningFromType.CompleteOrder.ToString()
                };
                var successReckoning = _reckoning.InsertAsyn(asynReckoningInfo);
                if (!successReckoning)
                {
                    errorMessage = ("添加往来帐待执行异步表失败!");
                    return(false);
                }
                #endregion

                //删除待完成订单列表数据
                var successDelete = _goodsOrderDal.DeleteWaitConsignmentOrder(orderInfo.OrderId);
                if (!successDelete)
                {
                    errorMessage = ("删除待完成订单列表数据发生错误!");
                    return(false);
                }

                tran.Complete();
                return(true);
            }
        }
Exemplo n.º 2
0
        public bool Insert(ASYNStorageRecordInfo asynStorageRecordInfo)
        {
            const string SQL = @"
IF NOT EXISTS(SELECT 1 FROM [ASYN_StorageRecord] WHERE [StorageType]=@StorageType AND [IdentifyId]=@IdentifyId)
    BEGIN
        INSERT INTO [ASYN_StorageRecord]
                   ([ID]
                   ,[StorageType]
                   ,[StockState]
                   ,[IdentifyKey]
                   ,[IdentifyId]
                   ,[WarehouseId]
                   ,[IsValidateStock]
                   ,[CreateTime])
        VALUES
                   (@ID
                   ,@StorageType
                   ,@StockState
                   ,@IdentifyKey
                   ,@IdentifyId
                   ,@WarehouseId
                   ,@IsValidateStock
                   ,@CreateTime)
    END
";

            using (SqlConnection conn = Databases.GetSqlConnection(GlobalConfig.ERP_DB_NAME, false))
            {
                return(conn.Execute(SQL, new {
                    ID = Guid.NewGuid(),
                    StorageType = asynStorageRecordInfo.StorageType,
                    StockState = asynStorageRecordInfo.StorageState,
                    IdentifyKey = asynStorageRecordInfo.IdentifyKey,
                    IdentifyId = asynStorageRecordInfo.IdentifyId,
                    WarehouseId = asynStorageRecordInfo.WarehouseId,
                    IsValidateStock = asynStorageRecordInfo.IsValidateStock,
                    CreateTime = DateTime.Now,
                }) > 0);
            }
        }