Ejemplo n.º 1
0
 /// <summary>
 /// 出库
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnSave_Press(object sender, EventArgs e)
 {
     try
     {
         if (snList.Count == 0)
         {
             throw new Exception("请添加要出库的序列号!");
         }
         ReturnInfo       rInfo    = new ReturnInfo();
         AssSalesInputDto inputDto = new AssSalesInputDto
         {
             SOID   = txtSOID.Text,
             UserId = UserId,
             sns    = snList
         };
         rInfo = _autofacConfig.AssSalesOrderService.SaleAss(inputDto);
         if (rInfo.IsSuccess)
         {
             ShowResult = ShowResult.Yes;
             //                    Toast("出库成功!");
             snList.Clear();
             SNTable.Rows.Clear();
             var so = _autofacConfig.AssSalesOrderService.GetById(txtSOID.Text);
             if (so != null)
             {
                 if (IsFromSO)
                 {
                     if (so.STATUS == (int)SalesOrderStatus.已完成)
                     {
                         Toast("出库完成!");
                         Close();
                     }
                     else
                     {
                         Toast("出库成功!");
                     }
                 }
                 else
                 {
                     if (so.STATUS == (int)SalesOrderStatus.已完成)
                     {
                         Toast("出库完成!");
                         txtSOID.Text = "";
                         txtSOID.Tag  = null;
                     }
                     else
                     {
                         Toast("出库成功!");
                     }
                 }
             }
         }
         else
         {
             Toast(rInfo.ErrorInfo);
         }
     }
     catch (Exception ex)
     {
         Toast(ex.Message);
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 销售资产
        /// </summary>
        /// <param name="inputDto">相关信息</param>
        /// <returns></returns>
        public ReturnInfo SaleAss(AssSalesInputDto inputDto)
        {
            ReturnInfo    RInfo = new ReturnInfo();
            StringBuilder sb    = new StringBuilder();

            try
            {
                //先判断所有sn是否在库
                //先得到所有在库的sn集合
                var allInSn = _AssetsRepository.GetAll().Where(a => a.ISINWAREHOUSE == 1).Select(a => a.SN).ToList();
                foreach (var sn in inputDto.sns)
                {
                    if (!allInSn.Contains(sn))
                    {
                        RInfo.IsSuccess = false;
                        RInfo.ErrorInfo = "序列号" + sn + "不在库!";
                        return(RInfo);
                    }
                }

                //根据sns,得到<templateId,sn数>的Dictionary
                var assDictionary = _AssetsRepository.GetCountBySnList(inputDto.sns);
                //记录现在追加的行项完成数
                int nowComplete = 0;
                //更改Row中的数值
                foreach (var templateId in assDictionary.Keys)
                {
                    var row = _assSoRowRepository.GetBySOIDandTemplateID(inputDto.SOID, templateId).FirstOrDefault();
                    if (row != null)
                    {
                        row.QUANTOUT = row.QUANTOUT + assDictionary[templateId];
                        if (row.QUANTSALED < row.QUANTOUT)
                        {
                            RInfo.IsSuccess = false;
                            RInfo.ErrorInfo = "模板" + templateId + "的出库量出过销售量!";
                            return(RInfo);
                        }
                        else
                        {
                            if (row.QUANTSALED == row.QUANTOUT)
                            {
                                row.STATUS = (int)SalesOrderStatus.已完成;
                                nowComplete++;
                            }
                            else
                            {
                                row.STATUS = (int)SalesOrderStatus.出库中;
                            }
                        }
                        _unitOfWork.RegisterDirty(row);
                    }
                }
                var assSo = _assSalesOrderRepository.GetById(inputDto.SOID).FirstOrDefault();
                if (assSo != null)
                {
                    assSo.STATUS = (int)SalesOrderStatus.出库中;
                    //得到采购单未完成行项数
                    var uncompleteCount = _assSoRowRepository.GetBySOID(inputDto.SOID).Count(a => a.STATUS != (int)SalesOrderStatus.已完成);
                    if (uncompleteCount == nowComplete)
                    {
                        //如果全部完成了,修改销售单状态为"已完成"
                        assSo.STATUS = (int)SalesOrderStatus.已完成;
                        _unitOfWork.RegisterDirty(assSo);
                    }
                }
                //更改Assets表中的状态为不在库
                var           allList  = _AssetsRepository.GetAll().Select(a => a.SN).ToList();
                List <string> bothList = allList.Intersect(inputDto.sns).ToList();
                var           assets   = _AssetsRepository.GetAll().Where(a => bothList.Contains(a.SN));

                //遍历,修改状态为已不在库

                foreach (var asset in assets)
                {
                    //修改状态为已不在库
                    asset.ISINWAREHOUSE = 0;
                    _unitOfWork.RegisterDirty(asset);
                    //添加出货关联表
                    AssSalesOrderOutbound soOutbound = new AssSalesOrderOutbound()
                    {
                        SOID       = inputDto.SOID,
                        SN         = asset.SN,
                        TEMPLATEID = asset.TEMPLATEID,
//                        Time = DateTime.Now
                    };
                    _unitOfWork.RegisterNew(soOutbound);

                    var pr = new AssProcessRecord
                    {
                        ASSID          = asset.ASSID,
                        CREATEDATE     = DateTime.Now,
                        CREATEUSER     = inputDto.UserId,
                        HANDLEDATE     = DateTime.Now,
                        HANDLEMAN      = inputDto.UserId,
                        MODIFYDATE     = DateTime.Now,
                        MODIFYUSER     = inputDto.UserId,
                        PROCESSCONTENT = inputDto.UserId + "出库了" + asset.ASSID + ",数量为1",
                        PROCESSMODE    = (int)PROCESSMODE.出库,
                        QUANTITY       = 1
                    };
                    _unitOfWork.RegisterNew(pr);
                }
                bool result = _unitOfWork.Commit();
                RInfo.IsSuccess = result;
                RInfo.ErrorInfo = "";
                return(RInfo);
            }
            catch (Exception ex)
            {
                _unitOfWork.Rollback();
                sb.Append(ex.Message);
                RInfo.IsSuccess = false;
                RInfo.ErrorInfo = sb.ToString();
                return(RInfo);
            }
        }