Пример #1
0
        /// <summary>
        /// 根据订单详细唯一编码号获取该订单详细信息以及产品信息
        /// </summary>
        /// <param name="sn"></param>
        /// <returns></returns>
        public OrderDetailEntity GetOrderDetailBySnNum(string snNum)
        {
            OrderDetailEntity entity = new OrderDetailEntity();

            entity.IncludeAll();
            ProductEntity ProEntity = new ProductEntity();

            ProEntity.Include(a => new { Size = a.Size });
            entity.Left <ProductEntity>(ProEntity, new Params <string, string>()
            {
                Item1 = "ProductNum", Item2 = "SnNum"
            });
            entity.Where("SnNum", ECondition.Eth, snNum);
            entity = this.OrderDetail.GetSingle(entity);
            return(entity);
        }
Пример #2
0
 /// <summary>
 /// 查询订单详细
 /// </summary>
 /// <param name="entity"></param>
 /// <returns></returns>
 public OrderDetailEntity GetOrderDetail(OrderDetailEntity entity)
 {
     entity.IncludeAll();
     entity = this.OrderDetail.GetSingle(entity);
     return(entity);
 }
Пример #3
0
        /// <summary>
        /// 审核单据
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public override string Audite(OutStorageEntity entity)
        {
            if (entity.Status == (int)EAudite.NotPass)
            {
                entity.IncludeStatus(true).IncludeReason(true).Where(a => a.OrderNum == entity.OrderNum);
                int line = this.OutStorage.Update(entity);
                return(line > 0 ? "1000" : string.Empty);
            }
            else if (entity.Status == (int)EAudite.Pass)
            {
                Proc_AuditeOutStorageEntity auditeEntity = new Proc_AuditeOutStorageEntity();
                auditeEntity.OrderNum      = entity.OrderNum;
                auditeEntity.Status        = entity.Status;
                auditeEntity.AuditUser     = entity.AuditUser;
                auditeEntity.Reason        = entity.Reason;
                auditeEntity.OperateType   = entity.OperateType;
                auditeEntity.EquipmentNum  = entity.EquipmentNum;
                auditeEntity.EquipmentCode = entity.EquipmentCode;
                auditeEntity.Remark        = entity.Remark;
                int line = this.Proc_AuditeOutStorage.ExecuteNonQuery(auditeEntity);

                /***
                 * 如果是销售订单则需要更改订单中的发货数量以及相应的状态
                 * 1. 查询出库单,判断出库单的类型
                 * 2. 查询出库单所有的内容详细,判断存在哪些订单
                 * 3. 统计相应的订单的出库总数量
                 * 4. 修改订单状态
                 * */
                OutStorageEntity outEntity = new OutStorageEntity();
                outEntity.IncludeAll();
                outEntity.Where(a => a.OrderNum == entity.OrderNum);
                outEntity = this.OutStorage.GetSingle(outEntity);
                OutStoDetailEntity detail = new OutStoDetailEntity();
                detail.Where(a => a.OrderNum == entity.OrderNum);
                detail.IncludeAll();
                List <OutStoDetailEntity> listDetail = this.OutStoDetail.GetList(detail);
                if (outEntity != null && !listDetail.IsNullOrEmpty())
                {
                    if (outEntity.OutType == (int)EOutType.Sell)
                    {
                        OutStorageProvider outProvider = new OutStorageProvider();
                        foreach (var item in listDetail.Where(a => !a.ContractOrder.IsEmpty() && !a.ContractSn.IsEmpty()).GroupBy(a => new { a.ContractOrder, a.ContractSn }))
                        {
                            OutStoDetailEntity tempOutDetail = new OutStoDetailEntity();
                            tempOutDetail.Where(a => a.ContractOrder == item.Key.ContractOrder).And(a => a.ContractSn == item.Key.ContractSn);
                            List <OutStoDetailEntity> list = outProvider.GetOrderDetail(tempOutDetail);
                            double value = list.Sum(a => a.Num);

                            OrderDetailEntity orderDetail = new OrderDetailEntity();
                            orderDetail.RealNum = value;
                            orderDetail.IncludeRealNum(true);
                            orderDetail.Where(a => a.SnNum == item.Key.ContractSn).And(a => a.OrderNum == item.Key.ContractOrder);
                            this.OrderDetail.Update(orderDetail);

                            orderDetail = new OrderDetailEntity();
                            orderDetail.IncludeAll();
                            orderDetail.And(a => a.OrderNum == item.Key.ContractOrder);
                            List <OrderDetailEntity> listOrderDetail = this.OrderDetail.GetList(orderDetail);
                            bool flag = true;
                            foreach (OrderDetailEntity detailItem in listOrderDetail)
                            {
                                if (detailItem.RealNum < detailItem.Num)
                                {
                                    flag = false;
                                }
                            }

                            OrdersEntity order = new OrdersEntity();
                            if (flag)
                            {
                                order.Status = (int)EOrderStatus.AllDelivery;
                            }
                            else
                            {
                                order.Status = (int)EOrderStatus.PartialDelivery;
                            }
                            order.IncludeStatus(true);
                            order.Where(a => a.OrderNum == item.Key.ContractOrder);
                            this.Orders.Update(order);
                        }
                    }
                }
                return(auditeEntity.ReturnValue);
            }
            return(string.Empty);
        }