protected static FR_L6ED_GEDRSPDfPTI_1649_Array Execute(DbConnection Connection, DbTransaction Transaction, P_L6ED_GEDRSPDfPTI_1649 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L6ED_GEDRSPDfPTI_1649_Array();

            #region Get Storage Places
            var filterCriteria = new P_L3WH_GSPfFC_1504()
            {
                WarehouseGroupID    = null,
                WarehouseID         = null,
                AreaID              = null,
                RackID              = null,
                UseShelfIDList      = false,
                ShelfIDs            = new Guid[] { Guid.Empty },
                UseProductIDList    = false,
                ProductIDs          = new Guid[] { Guid.Empty },
                BottomShelfQuantity = 1,
                TopShelfQuantity    = null,
                UseProductTrackingInstanceIDList = true,
                ProductTrackingInstanceIDs       = Parameter.ProductTrackingInstanceIdList,
                StartExpirationDate = null,
                EndExpirationDate   = null
            };

            var resultStoragePlaces = cls_Get_StoragePlaces_for_FilterCriteria.Invoke(Connection, Transaction, filterCriteria, securityTicket);
            if (resultStoragePlaces.Status != FR_Status.Success || resultStoragePlaces.Result == null || resultStoragePlaces.Result.Count() <= 0)
            {
                returnValue.Status = FR_Status.Error_Internal;
                returnValue.Result = new L6ED_GEDRSPDfPTI_1649[] { };
                return(returnValue);
            }
            #endregion

            #region Get Articles

            var parameterProductIds = new P_L3AR_GAfAL_0942();
            parameterProductIds.ProductID_List = resultStoragePlaces.Result.Select(rsp => rsp.Product_RefID).Distinct().ToArray <Guid>();
            var articles = new L3AR_GAfAL_0942[0];
            if (parameterProductIds.ProductID_List.Length != 0)
            {
                articles = cls_Get_Articles_for_ArticleList.Invoke(Connection, Transaction, parameterProductIds, securityTicket).Result;
            }

            #endregion

            #region Set Result

            var groupingCriterias = resultStoragePlaces.Result.Select(i => new { ProductID = i.Product_RefID, BatchNumber = i.BatchNumber, ExpirationDate = i.ExpirationDate }).Distinct();

            var result = new List <L6ED_GEDRSPDfPTI_1649>();
            foreach (var groupingCriteria in groupingCriterias)
            {
                var trackingInstances = resultStoragePlaces.Result.Where(i => i.Product_RefID == groupingCriteria.ProductID && i.BatchNumber == groupingCriteria.BatchNumber && i.ExpirationDate == groupingCriteria.ExpirationDate).ToList();

                result.Add(new L6ED_GEDRSPDfPTI_1649()
                {
                    FakeID            = Guid.NewGuid(), //this is important, because we don't have unique criteria for id on Front
                    Article           = articles.FirstOrDefault(a => a.CMN_PRO_ProductID == groupingCriteria.ProductID),
                    BachNumber        = groupingCriteria.BatchNumber,
                    ExpiryDate        = groupingCriteria.ExpirationDate,
                    TrackingInstances = trackingInstances.Select(i => new L6ED_GEDRSPDfPTI_1649a()
                    {
                        ProductTrackingInstanceID = i.LOG_ProductTrackingInstanceID,
                        ReceiptPositionID         = Guid.Empty,
                        ShelfContentID            = i.LOG_WRH_Shelf_ContentID,
                        SupplierID         = Guid.Empty,
                        SupplierName       = "",
                        ReturnableQuantity = 10,
                        PricePerUnit       = 0
                    }).ToArray()
                });
            }
            returnValue.Result = result.ToArray();
            returnValue.Status = FR_Status.Success;
            #endregion

            return(returnValue);

            #endregion UserCode
        }
 ///<summary>
 /// Invokes the method for the given Connection, and Transaction, leaving them open/not commited if no exceptions occured
 ///<summary>
 public static FR_L6ED_GEDRSPDfPTI_1649_Array Invoke(DbConnection Connection, DbTransaction Transaction, P_L6ED_GEDRSPDfPTI_1649 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
 {
     return(Invoke(Connection, Transaction, null, Parameter, securityTicket));
 }
        ///<summary>
        /// Method Invocation of wrapper classes
        ///<summary>
        protected static FR_L6ED_GEDRSPDfPTI_1649_Array Invoke(DbConnection Connection, DbTransaction Transaction, string ConnectionString, P_L6ED_GEDRSPDfPTI_1649 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            bool cleanupConnection  = Connection == null;
            bool cleanupTransaction = Transaction == null;

            FR_L6ED_GEDRSPDfPTI_1649_Array functionReturn = new FR_L6ED_GEDRSPDfPTI_1649_Array();

            try
            {
                if (cleanupConnection == true)
                {
                    Connection = CSV2Core_MySQL.Support.DBSQLSupport.CreateConnection(ConnectionString);
                    Connection.Open();
                }
                if (cleanupTransaction == true)
                {
                    Transaction = Connection.BeginTransaction();
                }

                functionReturn = Execute(Connection, Transaction, Parameter, securityTicket);

                #region Cleanup Connection/Transaction
                //Commit the transaction
                if (cleanupTransaction == true)
                {
                    Transaction.Commit();
                }
                //Close the connection
                if (cleanupConnection == true)
                {
                    Connection.Close();
                }
                #endregion
            }
            catch (Exception ex)
            {
                try
                {
                    if (cleanupTransaction == true && Transaction != null)
                    {
                        Transaction.Rollback();
                    }
                }
                catch { }

                try
                {
                    if (cleanupConnection == true && Connection != null)
                    {
                        Connection.Close();
                    }
                }
                catch { }

                throw new Exception("Exception occured in method cls_Get_ExpiryDateReturnShipment_PreloadingData_for_ProductTrackingInstances", ex);
            }
            return(functionReturn);
        }
 ///<summary>
 /// Opens the connection/transaction for the given connectionString, and closes them when complete
 ///<summary>
 public static FR_L6ED_GEDRSPDfPTI_1649_Array Invoke(string ConnectionString, P_L6ED_GEDRSPDfPTI_1649 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
 {
     return(Invoke(null, null, ConnectionString, Parameter, securityTicket));
 }