Ejemplo n.º 1
0
 protected void grid_BatchEditCommand(object sender, GridBatchEditingEventArgs e)
 {
     var value = "ObjectId".Query();
     if (value.None())
     {
         Response.Redirect("~/Depot/Home");
         return;
     }
     var objId = value.GlobalId();
     var obj = DataContext.DepotObject.Single(o => o.Id == objId);
     foreach (var command in e.Commands)
     {
         var values = command.NewValues;
         var place = values["Place"].ToString();
         var number = values["Number"];
         var numberx = values["NumberX"];
         if (number.None())
             continue;
         switch (command.Type)
         {
             case GridBatchEditingCommandType.Update:
                 {
                     var id = values["Id"].ToString().GlobalId();
                     var @fixed = bool.Parse(values["Fixed"].ToString());
                     var @in = DataContext.DepotInX.SingleOrDefault(o => o.Id == id);
                     @in.Place = place;
                     var ___px = new DepotPlace
                     {
                         Code = @in.Code,
                         Place = place,
                         Time = DateTime.Now
                     };
                     DataContext.DepotPlace.Add(___px);
                     if (!obj.Single)
                     {
                         @in.DepotIn.Place = @in.Place;
                         @in.DepotIn.Note = number.ToString();
                     }
                     if (!number.None())
                     {
                         var @inx = DataContext.DepotIn.SingleOrDefault(o => o.Id == id);
                         @inx.Note = numberx.ToString();
                     }
                     DataContext.SaveChanges();
                 }
                 break;
         }
     }
     DataContext.SaveChanges();
     grid.Rebind();
 }
Ejemplo n.º 2
0
 public static void DepotActReturn(this DepotEntities db, Guid depotId, DateTime returnTime, Guid operatorId, List<InMemoryReturn> list)
 {
     if (list == null || list.Count == 0)
     {
         return;
     }
     var @out = new List<InMemoryOut>();
     foreach (var item in list)
     {
         if (!item.Amount.HasValue || item.Amount.Value == 0)
             continue;
         var usexId = item.UseX;
         var usex = db.DepotUseX.SingleOrDefault(o => o.Id == usexId && o.ReturnedAmount < o.Amount);
         if (usex == null)
             continue;
         var inx = usex.DepotInX;
         var obj = inx.DepotObject;
         var @in = inx.DepotIn;
         var @return = new DepotReturn
         {
             Id = db.GlobalId(),
             UserId = usex.DepotUse.UserId,
             UseXId = item.UseX,
             Amount = item.Amount.Value,
             Price = inx.Price,
             Total = item.Amount.Value * inx.Price,
             Time = returnTime,
             Note = item.Note
         };
         var catalog = db.DepotObjectCatalog.Where(o => o.ObjectId == obj.Id && o.IsLeaf == true).ToList().Join(db.DepotCatalog.Where(o => o.DepotId == depotId), o => o.CatalogId, o => o.Id, (a, b) => a.CatalogId).FirstOrDefault();
         usex.ReturnedAmount += @return.Amount;
         db.DepotReturn.Add(@return);
         obj.Amount += @return.Amount;
         obj.Money += @return.Total;
         @in.AvailableAmount += @return.Amount;
         @in.Total += @in.Price * @return.Amount;
         inx.AvailableAmount += @return.Amount;
         @in.Total += @in.Price * @return.Amount;
         if (obj.Single)
         {
             if (db.DepotPlace.Count(o => o.Code == inx.Code) > 1)
             {
                 var dpx = db.DepotPlace.Where(o => o.Code == inx.Code).OrderByDescending(o => o.AutoId).Skip(1).Take(1).Single();
                 var ___px = new DepotPlace
                 {
                     Code = dpx.Code,
                     Place = dpx.Place,
                     Time = DateTime.Now
                 };
                 db.DepotPlace.Add(___px);
             }
             var flowx = new DepotFlowX
             {
                 Id = db.GlobalId(),
                 ObjectId = @in.ObjectId,
                 ObjectOrdinal = inx.Ordinal,
                 UserId = usex.DepotUse.UserId,
                 Type = FlowType.归还,
                 TypeName = FlowType.归还.ToString(),
                 Time = returnTime,
                 Amount = @return.Amount,
                 Money = @in.Price,
                 Note = item.Note
             };
             db.DepotFlowX.Add(flowx);
             if (item.OutAmount.HasValue && item.OutAmount.Value > 0)
             {
                 var nl = new List<int>();
                 nl.Add(inx.Ordinal);
                 @out.Add(new InMemoryOut { Amount = item.OutAmount.Value, ObjectId = @in.ObjectId, Ordinals = nl, Reason = "报废", CatalogId = catalog });
             }
         }
         else
         {
             var flow = new DepotFlow
             {
                 Id = db.GlobalId(),
                 ObjectId = @in.ObjectId,
                 UserId = usex.DepotUse.UserId,
                 Type = FlowType.归还,
                 TypeName = FlowType.归还.ToString(),
                 Time = returnTime,
                 Amount = @return.Amount,
                 Money = @in.Price * @return.Amount,
                 Note = item.Note
             };
             db.DepotFlow.Add(flow);
             if (item.OutAmount > 0)
             {
                 var nl = new List<int>();
                 @out.Add(new InMemoryOut { Amount = item.OutAmount, ObjectId = @in.ObjectId, Ordinals = nl, Reason = "报废", CatalogId = catalog });
             }
         }
         db.DepotActStatistics(@in.ObjectId, returnTime, 0, 0, [email protected], [email protected], 0, 0, 0, 0, 0, 0);
     }
     db.SaveChanges();
     try
     {
         db.DepotActOut(depotId, returnTime, operatorId, operatorId, @out);
     }
     catch
     {
     }
 }
Ejemplo n.º 3
0
 public static Guid DepotActUse(this DepotEntities db, Guid depotId, DateTime useTime, Guid operatorId, Guid userId, List<InMemoryUse> list)
 {
     if (list == null || list.Count == 0)
     {
         return Guid.Empty;
     }
     var use = new DepotUse
     {
         Id = db.GlobalId(),
         DepotId = depotId,
         UserId = userId,
         Time = useTime,
         OperatorId = operatorId,
         OperationTime = DateTime.Now,
         Age = string.Empty,
         Place = string.Empty,
         Money = 0
     };
     db.DepotUse.Add(use);
     foreach (var item in list)
     {
         if (!item.ObjectId.HasValue)
             continue;
         var objId = item.ObjectId.Value;
         var obj = db.DepotObject.Single(o => o.Id == objId);
         if (obj.Single)
         {
             if (item.Ordinals.Count == 0 || !item.Type.HasValue)
             {
                 continue;
             }
             foreach (var index in item.Ordinals)
             {
                 var @in = db.DepotInX.Single(o => o.ObjectId == objId && o.Ordinal == index);
                 if (db.DepotPlace.Count(o => o.Code == @in.Code) == 0)
                 {
                     var ___px = new DepotPlace
                     {
                         Code = @in.Code,
                         Place = @in.Place,
                         Time = @in.DepotIn.Time
                     };
                     db.DepotPlace.Add(___px);
                 }
                 var ___p = new DepotPlace
                 {
                     Code = @in.Code,
                     Place = item.Place,
                     Time = DateTime.Now
                 };
                 db.DepotPlace.Add(___p);
                 var x = new DepotUseX
                 {
                     Id = db.GlobalId(),
                     ObjectId = objId,
                     UseId = use.Id,
                     InXId = @in.Id,
                     Type = item.Type.Value,
                     Age = item.Age,
                     Place = item.Place,
                     Amount = 1,
                     Money = @in.Price,
                     ReturnedAmount = 0,
                     Note = item.Note
                 };
                 db.DepotUseX.Add(x);
                 @in.AvailableAmount = 0;
                 @in.DepotIn.AvailableAmount -= 1;
                 obj.Amount -= 1;
                 var flowx = new DepotFlowX
                 {
                     Id = db.GlobalId(),
                     ObjectId = @in.ObjectId,
                     ObjectOrdinal = index,
                     UserId = operatorId,
                     Type = FlowType.借用出库,
                     TypeName = FlowType.借用出库.ToString(),
                     Time = useTime,
                     Amount = -1,
                     Money = @in.Price,
                     Note = item.Note
                 };
                 use.Money += @in.Price;
                 db.DepotFlowX.Add(flowx);
                 db.DepotActStatistics(@in.ObjectId, useTime, 0, 0, 1, @in.Price, 0, 0, 0, 0, 0, 0);
             }
         }
         else
         {
             if (!item.Amount.HasValue || item.Amount.Value == 0)
             {
                 continue;
             }
             if (!item.Type.HasValue)
             {
                 continue;
             }
             var todo = obj.Amount < item.Amount.Value ? obj.Amount : item.Amount.Value;
             var totalAmount = 0M;
             var totalMoney = 0M;
             foreach (var @in in obj.DepotIn.Where(o => o.ObjectId == objId && o.AvailableAmount > 0).OrderBy(o => o.Time).ToList())
             {
                 var xObj = db.DepotInX.Single(o => o.ObjectId == objId && o.InId == @in.Id);
                 if (@in.AvailableAmount < todo)
                 {
                     var x = new DepotUseX
                     {
                         Id = db.GlobalId(),
                         ObjectId = objId,
                         UseId = use.Id,
                         InXId = xObj.Id,
                         Type = item.Type.Value,
                         Age = item.Age,
                         Place = item.Place,
                         Amount = @in.AvailableAmount,
                         Money = @in.Price * @in.AvailableAmount,
                         ReturnedAmount = 0,
                         Note = item.Note
                     };
                     db.DepotUseX.Add(x);
                     todo -= @in.AvailableAmount;
                     totalAmount += @in.AvailableAmount;
                     totalMoney += @in.AvailableAmount * @in.Price;
                     obj.Amount -= @in.AvailableAmount;
                     obj.Money -= @in.AvailableAmount * @in.Price;
                     @in.Total -= @in.AvailableAmount * @in.Price;
                     @in.AvailableAmount = 0;
                     var inx = @in.DepotInX.Single();
                     inx.AvailableAmount = @in.AvailableAmount;
                     inx.Total = @in.Total;
                 }
                 else
                 {
                     var x = new DepotUseX
                     {
                         Id = db.GlobalId(),
                         ObjectId = objId,
                         UseId = use.Id,
                         InXId = xObj.Id,
                         Type = item.Type.Value,
                         Age = item.Age,
                         Place = item.Place,
                         Amount = todo,
                         Money = @in.Price * todo,
                         ReturnedAmount = 0,
                         Note = item.Note
                     };
                     db.DepotUseX.Add(x);
                     totalAmount += todo;
                     totalMoney += todo * @in.Price;
                     obj.Amount -= todo;
                     obj.Money -= todo * @in.Price;
                     @in.Total -= todo * @in.Price;
                     @in.AvailableAmount -= todo;
                     var inx = @in.DepotInX.Single();
                     inx.AvailableAmount = @in.AvailableAmount;
                     inx.Total = @in.Total;
                     todo = 0;
                     break;
                 }
             }
             use.Money += totalMoney;
             var flow = new DepotFlow
             {
                 Id = db.GlobalId(),
                 ObjectId = objId,
                 UserId = userId,
                 Type = item.Type.Value == UseType.借用 ? FlowType.借用出库 : FlowType.领用出库,
                 TypeName = (item.Type.Value == UseType.借用 ? FlowType.借用出库 : FlowType.领用出库).ToString(),
                 Time = useTime,
                 Amount = -totalAmount,
                 Money = -totalMoney,
                 Note = "出库"
             };
             db.DepotFlow.Add(flow);
             if (item.Type.Value == UseType.借用)
                 db.DepotActStatistics(objId, useTime, 0, 0, totalAmount, totalMoney, 0, 0, 0, 0, 0, 0);
             else
                 db.DepotActStatistics(objId, useTime, 0, 0, 0, 0, totalAmount, totalMoney, 0, 0, 0, 0);
         }
     }
     db.SaveChanges();
     if (use.DepotUseX.Count == 0)
     {
         db.DepotUse.Remove(use);
         db.SaveChanges();
         return Guid.Empty;
     }
     return use.Id;
 }
Ejemplo n.º 4
0
 protected void save_ServerClick(object sender, EventArgs e)
 {
     var id = (sender as HtmlInputControl).Attributes["match"].GlobalId();
     var value = "ObjectId".Query();
     var @in = DataContext.DepotInX.Single(o => o.Id == id);
     var objId = value.GlobalId();
     var obj = DataContext.DepotObject.Single(o => o.Id == objId);
     var place = ((sender as HtmlInputControl).NamingContainer.FindControl("place") as RadTextBox).Text;
     @in.Place = place;
     var ___px = new DepotPlace
     {
         Code = @in.Code,
         Place = place,
         Time = DateTime.Now
     };
     DataContext.DepotPlace.Add(___px);
     if (!obj.Single)
     {
         @in.DepotIn.Place = @in.Place;
     }
     DataContext.SaveChanges();
 }