public SavingState SaveItemsOrder(DataGridView dataGridViewOrder, string companyId, string srDsrId, string marketId, DateTime orderDate, SRDSRDue srDsrDue, bool isFromTemplate = false, bool isItemReturnedFromOrder = false, bool isDamagedItemReturnedFromOrder = false) { SavingState svState = SavingState.Failed; DbCommand thisCommand = null; try { thisCommand = GenericDataAccess.CreateCommand(); thisCommand.CommandType = CommandType.Text; GenericDataAccess.OpenDBConnection(thisCommand); if ((isFromTemplate && !IsSrDsrOrderExist(companyId, srDsrId, marketId, orderDate)) || (!isFromTemplate && IsSrDsrOrderExist(companyId, srDsrId, marketId, orderDate))) { foreach (DataGridViewRow row in dataGridViewOrder.Rows) { int stockAvailableInStore = 0; int damagedItemAvailableInStock = 0; if (string.IsNullOrEmpty(NullHandler.GetString(row.Cells["OrderId"].Value))) { /// insert the item order thisCommand.CommandText = "INSERT INTO IM_Orders (OrderId, CompanyId, SrId, MarketId, ItemId, Date, OrderCount, ReturnCount, SoldCount, DamagedCount) VALUES(@OrderId, @CompanyId, @SrId, @MarketId, @ItemId, @Date, @OrderCount, @ReturnCount, @SoldCount, @DamagedCount)"; CreateParameter.AddParam(thisCommand, "@OrderId", Guid.NewGuid().ToString(), DbType.String); CreateParameter.AddParam(thisCommand, "@CompanyId", companyId, DbType.String); CreateParameter.AddParam(thisCommand, "@SrId", srDsrId, DbType.String); CreateParameter.AddParam(thisCommand, "@MarketId", marketId, DbType.String); CreateParameter.AddParam(thisCommand, "@ItemId", NullHandler.GetString(row.Cells["ItemId"].Value), DbType.String); CreateParameter.AddParam(thisCommand, "@Date", orderDate.Date, DbType.Date); stockAvailableInStore = NullHandler.GetInt32(row.Cells["CurrentStockTotal"].Value) - NullHandler.GetInt32(row.Cells["SellsCount"].Value); damagedItemAvailableInStock = NullHandler.GetInt32(row.Cells["CurrentDamagedStockTotal"].Value); } else { /// update the item order based on OrderId thisCommand.CommandText = "UPDATE IM_Orders SET OrderCount = @OrderCount, ReturnCount = @ReturnCount, SoldCount = @SoldCount, DamagedCount = @DamagedCount WHERE OrderId = @OrderId"; CreateParameter.AddParam(thisCommand, "@OrderId", row.Cells["OrderId"].Value.ToString(), DbType.String); stockAvailableInStore = isItemReturnedFromOrder ? (NullHandler.GetInt32(row.Cells["CurrentStockTotal"].Value) + NullHandler.GetInt32(row.Cells["ReturnCount"].Value)) : NullHandler.GetInt32(row.Cells["CurrentStockTotal"].Value); damagedItemAvailableInStock = isDamagedItemReturnedFromOrder? (NullHandler.GetInt32(row.Cells["CurrentDamagedStockTotal"].Value) + NullHandler.GetInt32(row.Cells["DamageCount"].Value)): NullHandler.GetInt32(row.Cells["CurrentDamagedStockTotal"].Value); } CreateParameter.AddParam(thisCommand, "@OrderCount", row.Cells["OrderCount"].Value, DbType.Int32); CreateParameter.AddParam(thisCommand, "@ReturnCount", row.Cells["ReturnCount"].Value, DbType.Int32); CreateParameter.AddParam(thisCommand, "@DamagedCount", row.Cells["DamageCount"].Value, DbType.Int32); CreateParameter.AddParam(thisCommand, "@SoldCount", row.Cells["SellsCount"].Value, DbType.Int32); GenericDataAccess.ExecuteNonQueryTransaction(thisCommand); thisCommand.Parameters.Clear(); if (!string.IsNullOrEmpty(NullHandler.GetString(row.Cells["StockId"].Value))) { ItemStock stock = new ItemStock(); stock.StockId = NullHandler.GetString(row.Cells["StockId"].Value); stock.ItemId = NullHandler.GetString(row.Cells["ItemId"].Value); stock.ChalanNo = NullHandler.GetString(row.Cells["ChalanNo"].Value); stock.StockEntryDate = NullHandler.GetDateTime(row.Cells["StockEntryDate"].Value); stock.CurrentStockTotal = stockAvailableInStore;//NullHandler.GetInt32(row.Cells["CurrentStockTotal"].Value); stock.CurrentDamagedStockTotal = damagedItemAvailableInStock; svState = SaveStockItem(stock, thisCommand, true); } } } else { svState = SavingState.DuplicateExists; } } catch (Exception ex) { if (ex.Message.ToLower().Contains("duplicate key")) { svState = SavingState.DuplicateExists; } } finally { GenericDataAccess.CloseDBConnection(thisCommand); } if (svState.Equals(SavingState.Success) && !string.IsNullOrEmpty(srDsrDue.Id)) { svState = SRDSRManager.Instance.SaveSrDsrDue(srDsrDue); } return(svState); }
public SavingState SaveStockItem(ItemStock itemStock, DbCommand command = null, bool isTransection = false) { SavingState svState = SavingState.Failed; if (!string.IsNullOrEmpty(itemStock.ItemId)) { DbCommand thisCommand = null; try { if (!isTransection) { thisCommand = GenericDataAccess.CreateCommand(); thisCommand.CommandType = CommandType.Text; } else { thisCommand = command; } /// if new Item if (string.IsNullOrEmpty(itemStock.StockId)) { if (!isTransection) { if (!IsItemExistInStock(itemStock.ItemId)) { thisCommand.CommandText = "INSERT INTO IM_Items_Stock (StockId, ItemId, TotalStock, DamagedStock, ChalanNo, StockEntryDate) VALUES(@StockId, @ItemId, @TotalStock, @DamagedStock, @ChalanNo, @StockEntryDate)"; CreateParameter.AddParam(thisCommand, "@StockId", Guid.NewGuid().ToString(), DbType.String); } else { return(SavingState.DuplicateExists); } } else { if (!IsItemExistInStock(itemStock.ItemId, thisCommand, isTransection)) { thisCommand.CommandText = "INSERT INTO IM_Items_Stock (StockId, ItemId, TotalStock, DamagedStock, ChalanNo, StockEntryDate) VALUES(@StockId, @ItemId, @TotalStock, @DamagedStock, @ChalanNo, @StockEntryDate)"; CreateParameter.AddParam(thisCommand, "@StockId", Guid.NewGuid().ToString(), DbType.String); } else { return(SavingState.DuplicateExists); } } } else { thisCommand.CommandText = "UPDATE IM_Items_Stock SET TotalStock = @TotalStock, DamagedStock = @DamagedStock, ChalanNo = @ChalanNo, StockEntryDate = @StockEntryDate WHERE StockId = @StockId AND ItemId = @ItemId"; CreateParameter.AddParam(thisCommand, "@StockId", itemStock.StockId, DbType.String); } CreateParameter.AddParam(thisCommand, "@ItemId", itemStock.ItemId, DbType.String); CreateParameter.AddParam(thisCommand, "@TotalStock", itemStock.CurrentStockTotal, DbType.Int32); CreateParameter.AddParam(thisCommand, "@DamagedStock", itemStock.CurrentDamagedStockTotal, DbType.Int32); CreateParameter.AddParam(thisCommand, "@ChalanNo", itemStock.ChalanNo, DbType.String); CreateParameter.AddParam(thisCommand, "@StockEntryDate", itemStock.StockEntryDate.Date, DbType.Date); if (!itemStock.StockEntryDate.Date.Equals(DateTime.MinValue)) { if (isTransection) { GenericDataAccess.ExecuteNonQueryTransaction(thisCommand); } else { GenericDataAccess.ExecuteNonQuery(thisCommand); } } thisCommand.Parameters.Clear(); svState = SavingState.Success; } catch (Exception ex) { if (ex.Message.ToLower().Contains("duplicate key")) { svState = SavingState.DuplicateExists; } } finally { if (!isTransection) { GenericDataAccess.CloseDBConnection(thisCommand); } } } return(svState); }