/// <summary> /// 库存调整单添加或更新明细 /// <para>以StockDetailID判断INVCheckLine明细对象是否已经存在,不存在则新增,存在则更新</para> /// <para>如果是新增,lines中对象的各个属性必须都已经设置好;如果是更新,只更新CurrentQty属性</para> /// </summary> /// <param name="session"></param> /// <param name="lines"></param> public void CreateOrUpdateLines(ISession session, IList <INVCheckLine> lines) { if (this.Status != INVCheckStatus.New && this.Status != INVCheckStatus.Confirm) { log.WarnFormat("status of sto {0} {1} is {2}, attemping to update lines is denied", this.OrderTypeCode == ORDER_TYPE_CHK ? "chk" : "adj", this.OrderNumber, this.Status.ToString()); throw new Exception("不可以更新"); } bool needUpdateHead = false; foreach (INVCheckLine line in lines) { INVCheckLine temp = this.GetLine(session, line.StockDetailID); if (temp != null) { temp.CurrentQty = line.CurrentQty; temp.Update(session, "CurrentQty"); } else { line.LineNumber = this.NextLineNumber(); needUpdateHead = true; line.Create(session); } } if (needUpdateHead) { this.Update(session, "CurrentLineNumber"); } }
/// <summary> /// 保存库存盘点明细,lines中每个对象必须设置好LineNumber、CurrentQty这2个属性 /// </summary> /// <param name="session"></param> /// <param name="orderNumber"></param> /// <param name="lines"></param> public void UpdateLines(ISession session, IList <INVCheckLine> lines) { if (lines == null || lines.Count <= 0) { return; } foreach (INVCheckLine line in lines) { INVCheckLine lineToSave = INVCheckLine.Retrieve(session, this.OrderNumber, line.LineNumber); if (lineToSave == null) { throw new Exception("库存盘点单" + this.OrderNumber + "中不存在明细项目" + line.LineNumber); } lineToSave.CurrentQty = line.CurrentQty; lineToSave.Update(session, "CurrentQty"); } }