protected void cmdProduct_Click(object sender, EventArgs e) { if (this.txtSkuId.Value.Trim().Length <= 0) { return; } bool added = false; using (_session = new Session()) { string[] idArray = this.txtSkuId.Value.Trim().Trim(';').Split(';'); try { POHead head = POHead.Retrieve(_session, this.OrderNumber); if (head == null || head.Status != POStatus.New) { return; } _session.BeginTransaction(); foreach (string s in idArray) { POLine poLine = new POLine(); poLine.OrderNumber = this.OrderNumber; poLine.SKUID = Cast.Int(s, 0); if (poLine.SKUID <= 0) { continue; } poLine.LineNumber = head.NextLineNumber(); poLine.LineStatus = POLineStatus.Open; poLine.PurchaseQty = 0M; poLine.Price = 0M; //Vendor vendor = null; //if (head.VendorID > 0) vendor = Vendor.Retrieve(_session, head.VendorID); //if (vendor != null) //{ // poLine.TaxID = vendor.TaxID; // poLine.TaxValue = vendor.Tax; //} //else //{ // poLine.TaxID = 0; // poLine.TaxValue = 0M; //} poLine.TaxID = 0; poLine.TaxValue = 0M; poLine.TaxInclusiveAmt = 0M; poLine.TaxAmt = 0M; poLine.TaxExlusiveAmt = 0M; poLine.PlanDate = head.DefaultPlanDate; poLine.ActualDate = new DateTime(1900, 1, 1); poLine.ReceiveQty = 0M; poLine.IQCQty = 0M; poLine.UnfinishedReceiveQty = 0M; poLine.ModifyUser = SecuritySession.CurrentUser.UserId; poLine.ModifyTime = DateTime.Now; poLine.UnitID = 0; poLine.Create(_session); added = true; } head.Update(_session, "CurrentLineNumber"); _session.Commit(); if (added) { BindPOLine(_session, head); WebUtil.ShowMsg(this, "订单明细保存成功", "操作成功"); } } catch (Exception ex) { _session.Rollback(); logger.Info("保存POLine", ex); WebUtil.ShowError(this, "发生未处理的异常,请刷新页面重新操作,或者联系系统管理员"); } } }
protected void MagicItemCommand(object sender, MagicItemEventArgs e) { if (e.CommandName == "Save") { #region 保存 //txtPurchaseQty txtPlanDate txtPrice bool updated = false; using (_session = new Session()) { POHead head = POHead.Retrieve(_session, this.OrderNumber); if (head == null || head.Status != POStatus.New) { return; } _session.BeginTransaction(); try { foreach (RepeaterItem item in this.rptPL.Items) { HtmlInputCheckBox chk = item.FindControl("checkbox") as HtmlInputCheckBox; if (!string.IsNullOrEmpty(chk.Value)) { HtmlInputText txtPurchaseQty = item.FindControl("txtPurchaseQty") as HtmlInputText; HtmlInputText txtPlanDate = item.FindControl("txtPlanDate") as HtmlInputText; HtmlInputText txtPrice = item.FindControl("txtPrice") as HtmlInputText; POLine poLine = POLine.Retrieve(_session, this.OrderNumber, chk.Value); if (poLine == null || poLine.LineStatus != POLineStatus.Open) { continue; } poLine.PurchaseQty = Cast.Decimal(txtPurchaseQty.Value, poLine.PurchaseQty); poLine.PlanDate = Cast.DateTime(txtPlanDate.Value, poLine.PlanDate); poLine.Price = Cast.Decimal(txtPrice.Value, poLine.Price); poLine.TaxID = 0; poLine.TaxValue = 0M; //含税额(含税采购成本) TaxInclusiveAmt 含税额 = 数量*单价 poLine.TaxInclusiveAmt = poLine.PurchaseQty * poLine.Price; //不含税额(采购成本) TaxExlusiveAmt 含税额-税额 poLine.TaxExlusiveAmt = 0M; // poLine.TaxInclusiveAmt / (1 + poLine.TaxValue); //税额 TaxAmt 税额 = 不含税额*税率 poLine.TaxAmt = 0M; //poLine.TaxExlusiveAmt * poLine.TaxValue; poLine.Update(_session, "PurchaseQty", "TaxID", "TaxValue", "PlanDate", "Price", "TaxInclusiveAmt"); updated = true; } } //更新统计信息 if (updated) { UpdatePOLineAndPoHead(_session, head); } _session.Commit(); if (updated) { BindPOLine(_session, head); WebUtil.ShowMsg(this, "采购订单明细保存成功", "操作成功"); } } catch (Exception ex) { _session.Rollback(); WebUtil.ShowError(this, ex); } } #endregion } else if (e.CommandName == "Cancel") { #region 取消明细 bool updated = false; using (_session = new Session()) { POHead head = POHead.Retrieve(_session, this.OrderNumber); if (head.Status != POStatus.Release) { return; } _session.BeginTransaction(); try { foreach (RepeaterItem item in this.rptPL.Items) { HtmlInputCheckBox chk = item.FindControl("checkbox") as HtmlInputCheckBox; if (chk != null && chk.Checked && !string.IsNullOrEmpty(chk.Value)) { POLine poLine = POLine.Retrieve(_session, this.OrderNumber, chk.Value); if (poLine == null || poLine.LineStatus != POLineStatus.Open) { continue; } poLine.LineStatus = POLineStatus.Cancel; poLine.ModifyUser = Magic.Security.SecuritySession.CurrentUser.UserId; poLine.ModifyTime = DateTime.Now; poLine.Update(_session, "LineStatus", "ModifyUser", "ModifyTime"); updated = true; } } //再次统计 POLine if (updated) { UpdatePOLineAndPoHead(_session, head); } _session.Commit(); if (updated) { BindPOLine(_session, head); WebUtil.ShowMsg(this, "选择的明细已经取消", "操作成功"); } } catch (Exception ex) { _session.Rollback(); WebUtil.ShowError(this, ex); } } #endregion } else if (e.CommandName == "Delete") { #region 除明细 bool deleted = false; using (_session = new Session()) { POHead head = POHead.Retrieve(_session, this.OrderNumber); if (head == null || head.Status != POStatus.New) { return; } _session.BeginTransaction(); try { foreach (RepeaterItem item in this.rptPL.Items) { HtmlInputCheckBox chk = item.FindControl("checkbox") as HtmlInputCheckBox; if (chk != null && chk.Checked && !string.IsNullOrEmpty(chk.Value)) { POLine line = POLine.Retrieve(_session, this.OrderNumber, chk.Value); if (line.LineStatus != POLineStatus.Open) { continue; } line.Delete(_session); deleted = true; } } //再次统计 POLine if (deleted) { UpdatePOLineAndPoHead(_session, head); } _session.Commit(); if (deleted) { BindPOLine(_session, head); WebUtil.ShowMsg(this, "选择的明细已经删除", "操作成功"); } } catch (Exception ex) { _session.Rollback(); WebUtil.ShowError(this, ex); } } #endregion } else if (e.CommandName == "Release" || e.CommandName == "Close") { #region 发布,关闭 using (_session = new Session()) { try { POHead head = POHead.Retrieve(_session, this.OrderNumber); _session.BeginTransaction(); if (e.CommandName == "Release") { head.Release(_session); } else { head.Close(_session); } _session.Commit(); BindPOLine(_session, head); this.SetView(_session, head); WebUtil.ShowMsg(this, "订单已经" + (e.CommandName == "Release" ? "发布" : "关闭"), "操作成功"); } catch (Exception er) { _session.Rollback(); WebUtil.ShowError(this, er); } } #endregion } else if (e.CommandName == "QuickAdd") { #region 快速添加 using (_session = new Session()) { //检查 string itemCode = this.txtItemCode.Value.Trim(); string color = this.txtColorCode.Value.Trim().ToUpper(); string size = this.txtSizeCode.Value.Trim().ToUpper(); decimal qty = Cast.Decimal(this.txtPurchaseQty.Value.Trim(), 0M); decimal price = Cast.Decimal(this.txtPrice.Value.Trim(), 0M); DateTime date = Cast.DateTime(this.txtDemandDate.Value.Trim(), new DateTime(1900, 1, 1)); if (qty <= 0M) { this.txtAlertMsg.InnerText = string.Format("采购数量{0}不是有效的数字", this.txtPurchaseQty.Value.Trim()); return; } if (price <= 0M) { this.txtAlertMsg.InnerText = string.Format("单价{0}不是有效的数字", this.txtPrice.Value.Trim()); return; } if (date <= new DateTime(1900, 1, 1)) { this.txtAlertMsg.InnerText = string.Format("无效的需求日期{0}", this.txtDemandDate.Value.Trim()); return; } IList <ItemMaster> masters = _session.CreateEntityQuery <ItemMaster>() .Where(Exp.Eq("ItemCode", itemCode)).List <ItemMaster>(); if (masters == null || masters.Count <= 0) { this.txtAlertMsg.InnerText = string.Format("货号{0}不存在", itemCode); return; } ItemColor objColor = ItemColor.Retrieve(_session, color); if (objColor == null) { this.txtAlertMsg.InnerText = string.Format("颜色代码{0}不存在", color); return; } IList <ItemSpec> skus = _session.CreateEntityQuery <ItemSpec>() .Where(Exp.Eq("ItemID", masters[0].ItemID) & Exp.Eq("ColorCode", objColor.ColorCode) & Exp.Eq("SizeCode", size)) .List <ItemSpec>(); if (skus == null || skus.Count <= 0) { this.txtAlertMsg.InnerText = string.Format("不存在货号:{0} 颜色:{1} 尺码:{2}的SKU", itemCode, color, size); return; } ItemSize objSize = ItemSize.Retrieve(_session, size, masters[0].CategoryID); if (objSize == null) { this.txtAlertMsg.InnerText = string.Format("尺码{0}不存在", size); return; } //添加操作 POHead head = POHead.Retrieve(_session, this.OrderNumber); POLine line = new POLine(); line.OrderNumber = this.OrderNumber; line.LineNumber = head.NextLineNumber(); line.LineStatus = POLineStatus.Open; line.SKUID = skus[0].SKUID; line.PurchaseQty = qty; line.Price = price; line.TaxID = 0; line.TaxValue = 0M; line.TaxInclusiveAmt = line.PurchaseQty * line.Price; line.TaxExlusiveAmt = 0M; // line.TaxInclusiveAmt / (1 + line.TaxValue); line.TaxAmt = 0M; //line.TaxExlusiveAmt * line.TaxValue; line.PlanDate = date; line.ActualDate = new DateTime(1900, 1, 1); line.ReceiveQty = 0M; line.IQCQty = 0M; line.UnfinishedReceiveQty = 0M; line.ModifyUser = SecuritySession.CurrentUser.UserId; line.ModifyTime = DateTime.Now; line.UnitID = 0; try { _session.BeginTransaction(); line.Create(_session); head.Update(_session, "CurrentLineNumber"); this.UpdatePOLineAndPoHead(_session, head); _session.Commit(); BindPOLine(_session, head); this.txtAlertMsg.InnerText = "添加成功,订单行号为" + line.LineNumber; this.txtPurchaseQty.Value = ""; } catch (Exception er) { _session.Rollback(); WebUtil.ShowError(this, er); } } #endregion } }