public void TempSave(IList saveStockViewList) { foreach (DepartmentStockView view in saveStockViewList) { foreach (DepartmentStock stock in view.DepartmentStocks) { DepartmentStockTemp temp = new DepartmentStockTempMapper().Convert(stock); ObjectCriteria crit = new ObjectCriteria(); crit.AddEqCriteria("TempSave", 1); crit.AddEqCriteria("Fixed", 0); crit.AddEqCriteria("DelFlg", 0); crit.AddEqCriteria("DepartmentStockTempPK.DepartmentId",temp.DepartmentStockTempPK.DepartmentId); crit.AddEqCriteria("DepartmentStockTempPK.ProductId", temp.DepartmentStockTempPK.ProductId); IList list =DepartmentStockTempDAO.FindAll(crit); if(list == null || list.Count == 0) { temp.TempSave = 1; DepartmentStockTempDAO.Add(temp); } else { DepartmentStockTemp tempSave = (DepartmentStockTemp) list[0]; tempSave.Quantity = temp.Quantity; tempSave.GoodQuantity = temp.GoodQuantity; tempSave.ErrorQuantity = temp.ErrorQuantity; tempSave.LostQuantity = temp.LostQuantity; tempSave.UnconfirmQuantity = temp.UnconfirmQuantity; tempSave.DamageQuantity = temp.DamageQuantity; tempSave.TempSave = 1; DepartmentStockTempDAO.Update(tempSave); } } } }
void departmentStockCheckingView_SaveInventoryCheckingEvent(object sender, AppFrame.Presenter.GoodsIO.DepartmentGoodsIO.DepartmentStockCheckingEventArgs e) { foreach (DepartmentStockView stockView in e.SaveStockViewList) { long checkedGoodQty = stockView.GoodQuantity; long checkedErrorQty = stockView.ErrorQuantity; long checkedLostQty = stockView.LostQuantity; long checkedDamageQty = stockView.DamageQuantity; long checkedUnconfirmQty = stockView.UnconfirmQuantity; long goodQuantity, errorQuantity, lostQuantity, damageQuantity, unconfirmQuantity; GetCheckingQuantities(stockView.DepartmentStocks, out goodQuantity, out errorQuantity, out lostQuantity, out damageQuantity, out unconfirmQuantity); bool NeedFixing = false; if (checkedGoodQty != goodQuantity || checkedErrorQty != errorQuantity || checkedLostQty != lostQuantity || checkedDamageQty != damageQuantity || checkedUnconfirmQty != unconfirmQuantity) { NeedFixing = true; } // if after checking quantity is equal with checked values if(stockView.Quantity == (stockView.GoodQuantity+stockView.ErrorQuantity+ stockView.DamageQuantity+stockView.LostQuantity+stockView.UnconfirmQuantity)) { foreach (DepartmentStock stock in stockView.DepartmentStocks) { if(NeedFixing) { stock.GoodQuantity = stock.Quantity; AutoFixing(stock, ref checkedErrorQty, ref checkedDamageQty, ref checkedLostQty, ref checkedUnconfirmQty); } stock.UpdateDate = DateTime.Now; stock.UpdateId = ClientInfo.getInstance().LoggedUser.Name; DepartmentStockLogic.Update(stock); } } else // in case quantity does not equal checked values. { // we do auto fixing IList departmentStocks = stockView.DepartmentStocks; SortListByQuantity(departmentStocks); for( int i =0;i < departmentStocks.Count;i++) { DepartmentStock stock = (DepartmentStock) departmentStocks[i]; // if not last item if (i < departmentStocks.Count - 1) { if (checkedGoodQty >= stock.Quantity) { stock.GoodQuantity = stock.Quantity; checkedGoodQty -= stock.Quantity; } else { stock.GoodQuantity = checkedGoodQty; checkedGoodQty = 0; } } else { stock.GoodQuantity = checkedGoodQty; checkedGoodQty = 0; } } // do auto fixing here for( int i =departmentStocks.Count -1;i >= 0;i--) { DepartmentStock stock = (DepartmentStock)departmentStocks[i]; if(NeedFixing) { // if not last item if( i > 0) { // fixing AutoFixing(stock, ref checkedErrorQty, ref checkedDamageQty, ref checkedLostQty, ref checkedUnconfirmQty); } else // last fixing { // don't need to fix, just map the remain quantities to stock stock.ErrorQuantity = checkedErrorQty; stock.DamageQuantity = checkedDamageQty; stock.LostQuantity = checkedLostQty; stock.UnconfirmQuantity = checkedUnconfirmQty; } } DepartmentStockTempMapper mapper = new DepartmentStockTempMapper(); DepartmentStockTempLogic.Add(mapper.Convert(stock)); } } } }