private PurchasingOrderDetail GetPurchasingOrderDetail(DataRow dr) { if (dr == null) { return(null); } PurchasingOrderDetail pod = new PurchasingOrderDetail(); pod.SourceListOID = Convert.ToInt32(dr["PurchasingOrderDetailListOID"]); pod.PurchasingOrderID = Convert.ToString(dr["PurchasingOrderID"]); pod.SourceListOID = Convert.ToInt32(dr["SourceListOID"]); pod.Qty = Convert.ToInt32(dr["Qty"]); return(pod); }
public static PurchasingResult Save(PurchasingOrderHeaderViewModel models) { PurchasingResult result = new PurchasingResult(); try { using (var db = new BuahSayurContext()) { string newRef = GetNewReference(); result.Reference = newRef; PurchasingOrder purchasingOrder = new PurchasingOrder { Id = 1, Supplier_Code = models.Supplier_Code, Reference = newRef, PurchasingDate = models.PurchasingDate }; db.PurchasingOrders.Add(purchasingOrder); foreach (var item in models.PurchasingDetails) { PurchasingOrderDetail purchasingDetail = new PurchasingOrderDetail { PurchasingOrder_Id = purchasingOrder.Id, Item_Code = item.Item_Code, Quantity = item.Quantity, Price = item.Price, Total = item.Quantity * item.Price }; result.Total += (item.Quantity * item.Price); db.PurchasingOrderDetails.Add(purchasingDetail); // Update Stock Item Stock = db.Items.Where(x => x.Code == item.Item_Code).FirstOrDefault(); if (Stock != null) { Stock.Stock = Stock.Stock + item.Quantity; } } db.SaveChanges(); } } catch (Exception ex) { result.Success = false; Message = ex.Message; } return(result); }
private void btnAddToPO_Click(object sender, EventArgs e) { int qty = 0; if (!int.TryParse(txtQty.Text.Trim(), out qty)) { MessageBox.Show("請輸入正確數字"); return; } switch (this.CmdMode) { case CommandMode.Add: PurchasingOrderDetail pod = new PurchasingOrderDetail() { SourceListOID = Convert.ToInt32(this.cbSourceList.SelectedValue), Qty = qty }; PurchasingOrderUtil.SetPurchasingOrderDetail(pod); this.lblPODCount.Text = PurchasingOrderUtil.GetPurchasingOrderDetailStatus(); break; case CommandMode.Edit: PurchasingOrderDetail updatePod = PurchasingOrderUtil.GetPurchasingOrderDetail()[this.ListIndex]; updatePod.SourceListOID = Convert.ToInt32(this.cbSourceList.SelectedValue); updatePod.Qty = qty; Common.ContainerForm.NextForm(new POAddMainForm()); break; case CommandMode.OrderEdit: Model.SourceList sl = this.sourceLists.Find(s => s.SourceListOID.Equals(Convert.ToInt32(this.cbSourceList.SelectedValue))); this.SourceOrderListData.Batch = sl.Batch; this.SourceOrderListData.Discount = sl.Discount; this.SourceOrderListData.Qty = Convert.ToInt32(this.txtQty.Text); SourceOrderListDao dao = new SourceOrderListDao(); dao.Update(this.SourceOrderListData); CheckOrderForm cof = new CheckOrderForm(this.SourceOrderListData.GetOrderPart().OrderID, "edit"); Common.ContainerForm.NextForm(cof); break; default: break; } }
public static void SetPurchasingOrderDetail(PurchasingOrderDetail pod) { //存入Session List <PurchasingOrderDetail> podList = null; if (Util.GetSessionValue(sessionKey) == null) { podList = new List <PurchasingOrderDetail>(); podList.Add(pod); Util.SetSessionValue(sessionKey, podList); } else { podList = (List <PurchasingOrderDetail>)Util.GetSessionValue(sessionKey); podList.Add(pod); } }
/// ///////////////////////////////////////////////////////////////呈穎 public PurchasingOrderDetail FindPurchasingOrderDetailBySourceListOID(int PurchasingOrderDetailListOID) { string strCmd = @"SELECT PurchasingOrderDetailListOID, PurchasingOrderID, SourceListOID, Qty FROM PurchasingOrderDetail where PurchasingOrderDetailListOID = @PurchasingOrderDetailListOID"; List <SqlParameter> parameters = new List <SqlParameter>(); parameters.Add(SqlHelper.CreateParameter("@PurchasingOrderDetailListOID", SqlDbType.Int, PurchasingOrderDetailListOID)); DataTable dt = SqlHelper.AdapterFill(strCmd, parameters); if (dt.Rows.Count == 0) { return(null); } PurchasingOrderDetail pod = this.GetPurchasingOrderDetail(dt.Rows[0]); return(pod); }
//提交三审 生成与供应商的订单及订单明细 public void ComfirmPlanAndSubmitOrder(int planId, int userID, bool isPass, string Desc) { var dbcontext = ServiceProvider.GetDbcontext <IPurocumentDbcontext>(); var plan = dbcontext.PurchasingPlan.SingleOrDefault(s => s.ID == planId); if (plan == null) { throw new Exception("采购计划不存在"); } DateTime dateTimeNow = DateTime.Now; int planStatus = isPass ? (int)EnumPurchasingPlanState.PlanAudit3Pass : (int)EnumPurchasingPlanState.PlanAudit3Rejected; int planAuditType = isPass ? (int)EnumPurchasingAuditType.PlanAudit3Pass : (int)EnumPurchasingAuditType.PlanAudit3Rejected; int orderStatus = isPass ? (int)EnumPurchasingOrderState.AwaitVendorConfirm : (int)EnumPurchasingOrderState.AwaitVendorConfirm; //保存审核结果和修改计划状态 plan.Status = planStatus; plan.UpdateTime = dateTimeNow; plan.UpdateUserID = userID; dbcontext.Update(plan);/// PurchasingAudit insertPA = new PurchasingAudit { PlanID = plan.ID, UserID = userID, CreateTime = dateTimeNow, Result = planAuditType,//审核状态 若复审通过及订单生成 故仅生成一条 Desc = Desc }; dbcontext.Add(insertPA);/// ///下面这段代码写得乱 性能应该也不高 Linq to EF语法不熟悉 后面要改 if (isPass) //审核通过 { List <PurchasingOrder> insertListPOs = new List <PurchasingOrder>(); List <PurchasingOrderDetail> insertListPODs = new List <PurchasingOrderDetail>(); //采购计划的部门 var entityD = dbcontext.Department.SingleOrDefault(s => s.ID == plan.DepartmentID); //采购计划明细 var entityPP = dbcontext.PurchasingPlan.Include(i => i.Details).SingleOrDefault(s => s.ID == plan.ID); //按供应商分组,循环操作 var vendorIDs = entityPP.Details.Where(s => s.VendorID.HasValue).Select(s => s.VendorID).Distinct().ToList();//之前未去重,导致严重逻辑错误 //特殊情况下供应商尚未报价 if (vendorIDs == null || vendorIDs.Count == 0) { throw new Exception("不存在或未选定供应商"); } //按供应商的循环操作 foreach (var vendorID in vendorIDs) { //按供应商的订单明细集合 var verdorPPDs = entityPP.Details.Where(w => vendorIDs.Contains(w.VendorID)); int itemCount = 0; decimal?total = 0; //一个供应商生成一个订单(因采购计划能为一种业务类型 要么食材 要么办公用品 故这里不按照业务类型再做拆分 数据库设计其实是支持的) PurchasingOrder po = new PurchasingOrder { Code = StrPOPrefix + DateTime.Now.ToString(StrPOSuffixFormat), //[2][17] PurchasingPlanID = plan.ID, PurchasingOrderStatusID = orderStatus, //订单状态 VendorID = vendorID.Value, DepartmentID = plan.DepartmentID, Tel = entityD?.Tel, Addr = entityD?.Address, BizTypeID = plan.BizTypeID, CreateUsrID = userID, CreateTime = dateTimeNow, UpdateUserID = userID, UpdateTime = dateTimeNow, Total = total, ItemCount = itemCount }; foreach (var vendorPPD in verdorPPDs) { //生成每个供应商分配的采购明细 PurchasingOrderDetail pod = new PurchasingOrderDetail { PurchasingOrder = po, PurchasingOrderStateID = orderStatus,//订单状态 GoodsClassID = vendorPPD.GoodsClassID, GoodsID = vendorPPD.GoodsID, Count = vendorPPD.PurchasingCount, Price = vendorPPD.Price, Subtotal = vendorPPD.PurchasingCount * vendorPPD.Price,//这里之前没有结果 ActualCount = 0, ActualSubtotal = 0, CreateUsrID = userID, CreateTime = dateTimeNow, UpdateUsrID = userID, UpdateTime = dateTimeNow, PurchasingPlanDetailID = vendorPPD.ID }; insertListPODs.Add(pod); //订单明细 po.Total += pod.Subtotal; //累计每种商品的小计金额 po.ItemCount++; //明细数量 //更新采购计划、采购计划明细状态 vendorPPD.Status = planStatus; //采购状态 dbcontext.Update(vendorPPD); /// 更新PPD } insertListPOs.Add(po);/// // 订单 } dbcontext.AddRange(insertListPOs); dbcontext.AddRange(insertListPODs); } dbcontext.SaveChanges(); }