//弹出选择框,手工选择采购订单明细进行收货的方式 //这种方式暂时废弃不用 protected void cmdAddLines_Click(object sender, EventArgs e) { string[] linesArray = this.txtPOLines.Value.Trim().Trim(';').Split(';'); if (linesArray == null || linesArray.Length <= 0) { return; } using (ISession session = new Session()) { RCVHead head = RCVHead.Retrieve(session, this.OrderNumber); try { session.BeginTransaction(); foreach (string s in linesArray) { POLine poLine = null; if (!string.IsNullOrEmpty(s) && s.Trim().Length > 0) { poLine = POLine.Retrieve(session, head.RefOrderNumber, s); } if (poLine != null) { head.AddLine(session, poLine); } } head.Update(session, "CurrentLineNumber"); session.Commit(); } catch (Exception er) { session.Rollback(); WebUtil.ShowError(this, er); } this.QueryAndBindData(session, head); } }
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 } }