public string CreateStock(StockCreation model)
        {
            using (IDbConnection connection = OpenConnection(dataConnection))
            {
                IDbTransaction txn = connection.BeginTransaction();
                try
                {
                    model.StockCreationRefNo = DatabaseCommonRepository.GetNewDocNo(connection, model.OrganizationId, 25, true, txn);

                    string query = @"INSERT INTO StockCreation
                                (
                                StockCreationRefNo,
                                StockCreationDate,
                                    CreatedBy,
                                    CreatedDate,
                                    OrganizationId,
                                    ConsumedStockpointId,
                                    FinishedStockpointId)
                                
                                VALUES
                                (
                                    @StockCreationRefNo,
                                @StockCreationDate,
                                    @CreatedBy,
                                    @CreatedDate,
                                    @OrganizationId,
                                    @ConsumedStockpointId,
                                    @FinishedStockpointId)
                                ;
                                SELECT CAST(SCOPE_IDENTITY() AS INT)";

                    int id = connection.Query <int>(query, model, txn).First();

                    #region Inserting Finished Goods + Stock Updation
                    foreach (var item in model.FinishedGoods)
                    {
                        item.StockCreationId = id;
                        if (item.Quantity > 0)
                        {
                            var i = new StockCreationFinishedGoodsRepository().InsertFinishedGoods(item, connection, txn);
                        }
                        new StockUpdateRepository().InsertStockUpdate(new StockUpdate
                        {
                            OrganizationId = model.OrganizationId,
                            CreatedBy      = model.CreatedBy,
                            CreatedDate    = model.CreatedDate,
                            StockPointId   = model.FinishedStockpointId,
                            StockType      = "StockCreation",
                            StockInOut     = "IN",
                            stocktrnDate   = System.DateTime.Today,
                            ItemId         = item.ItemId,
                            Quantity       = item.Quantity,
                            StocktrnId     = id,
                            StockUserId    = model.StockCreationRefNo
                        }, connection, txn);
                    }
                    #endregion

                    #region Inserting Consumed Items + Stock Updation
                    foreach (var item in model.ConsumedItems)
                    {
                        item.StockCreationId = id;
                        if (item.Quantity > 0)
                        {
                            var i = new StockCreationConsumedItemsRepository().InsertConsumedItems(item, connection, txn);
                        }
                        new StockUpdateRepository().InsertStockUpdate(new StockUpdate
                        {
                            OrganizationId = model.OrganizationId,
                            CreatedBy      = model.CreatedBy,
                            CreatedDate    = model.CreatedDate,
                            StockPointId   = model.ConsumedStockpointId,
                            StockType      = "StockCreation",
                            StockInOut     = "OUT",
                            stocktrnDate   = System.DateTime.Today,
                            ItemId         = item.ItemId,
                            Quantity       = item.Quantity * (-1),
                            StocktrnId     = id,
                            StockUserId    = model.StockCreationRefNo
                        }, connection, txn);
                    }
                    #endregion

                    InsertLoginHistory(dataConnection, model.CreatedBy, "Create", "Stock Creation", id.ToString(), "0");
                    txn.Commit();
                }
                catch (Exception ex)
                {
                    txn.Rollback();
                    throw ex;
                }

                return(model.StockCreationRefNo);
            }
        }
        private int Create(SubAssembly model, IDbConnection connection, IDbTransaction txn)
        {
            try
            {
                #region Inserting into [StockCreation] head
                string query = @"INSERT INTO StockCreation
                                    (
	                                    StockCreationRefNo,
	                                    StockCreationDate,
                                        isSubAssembly,
                                        EmployeeId,
                                        WorkingHours,
                                        CreatedBy,
                                        CreatedDate,
                                        OrganizationId,
                                        ConsumedStockpointId,
                                        FinishedStockpointId
                                    )
                                    VALUES
                                    (
                                        @StockCreationRefNo,
	                                    @StockCreationDate,
	                                    1,
                                        @EmployeeId,
                                        @WorkingHours,
                                        @CreatedBy,
                                        @CreatedDate,
                                        @OrganizationId,
                                        @ConsumedStockpointId,
                                        @FinishedStockpointId
                                    );
                                    SELECT CAST(SCOPE_IDENTITY() AS INT)";

                int id = connection.Query <int>(query, model, txn).First();
                #endregion

                #region Inserting Finished Goods + Stock Updation
                foreach (var item in model.FinishedGoods)
                {
                    item.StockCreationId = id;
                    var i = new StockCreationFinishedGoodsRepository().InsertFinishedGoods(item, connection, txn);
                    new StockUpdateRepository().InsertStockUpdate(new StockUpdate
                    {
                        OrganizationId = model.OrganizationId,
                        CreatedBy      = model.CreatedBy,
                        CreatedDate    = model.CreatedDate,
                        StockPointId   = model.FinishedStockpointId,
                        StockType      = typeof(SubAssembly).Name,
                        StockInOut     = "IN",
                        stocktrnDate   = System.DateTime.Today,
                        ItemId         = item.ItemId,
                        Quantity       = item.Quantity,
                        StocktrnId     = id,
                        StockUserId    = model.StockCreationRefNo
                    }, connection, txn);
                }
                #endregion

                #region Inserting Consumed Items + Stock Updation
                foreach (var item in model.ConsumedItems)
                {
                    item.StockCreationId = id;
                    var i = new StockCreationConsumedItemsRepository().InsertConsumedItems(item, connection, txn);
                    new StockUpdateRepository().InsertStockUpdate(new StockUpdate
                    {
                        OrganizationId = model.OrganizationId,
                        CreatedBy      = model.CreatedBy,
                        CreatedDate    = model.CreatedDate,
                        StockPointId   = model.ConsumedStockpointId,
                        StockType      = typeof(SubAssembly).Name,
                        StockInOut     = "OUT",
                        stocktrnDate   = System.DateTime.Today,
                        ItemId         = item.ItemId,
                        Quantity       = item.Quantity * (-1),
                        StocktrnId     = id,
                        StockUserId    = model.StockCreationRefNo
                    }, connection, txn);
                }
                #endregion

                return(id);
            }
            catch (Exception)
            {
                throw;
            }
        }