Exemple #1
0
        protected static FR_L5AI_GSIbC_1341_Array Execute(DbConnection Connection, DbTransaction Transaction, P_L5AI_GSIbC_1341 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L5AI_GSIbC_1341_Array();

            var productIds = new List <Guid>();
            productIds.Add(Parameter.ProductID);
            //var param = new P_L3WH_GSPfT_1107
            //{
            //    ProductIDs = productIds.ToArray()
            //};
            //var p = cls_Get_StoragePlaces_for_TenantID.Invoke(Connection, Transaction, param, securityTicket).Result;
            var filterCriteria = new P_L3WH_GSPfFC_1504()
            {
                WarehouseGroupID    = null,
                WarehouseID         = null,
                AreaID              = null,
                RackID              = null,
                UseShelfIDList      = false,
                ShelfIDs            = new Guid[] { Guid.Empty },
                UseProductIDList    = productIds.Count > 0,
                ProductIDs          = productIds.ToArray(),
                BottomShelfQuantity = null,
                TopShelfQuantity    = null,
                UseProductTrackingInstanceIDList = false,
                ProductTrackingInstanceIDs       = new Guid[] { Guid.Empty },
                StartExpirationDate = null,
                EndExpirationDate   = null
            };
            var p = cls_Get_StoragePlaces_for_FilterCriteria.Invoke(
                Connection,
                Transaction,
                filterCriteria,
                securityTicket).Result;

            var list = new List <L5AI_GSIbC_1341>();

            var item = new L5AI_GSIbC_1341();

            item.CompanyID              = Guid.NewGuid();
            item.CompanyName            = "-";
            item.CurrentQuantityOnStock = 0;
            item.AMO = "-";

            list.Add(item);

            returnValue.Result = list.ToArray();
            return(returnValue);

            #endregion UserCode
        }
Exemple #2
0
        protected static FR_L5IN_GSPfIJ_1641 Execute(DbConnection Connection, DbTransaction Transaction, P_L5IN_GSPfIJ_1641 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L5IN_GSPfIJ_1641();
            returnValue.Result = new L5IN_GSPfIJ_1641();

            var filterCriteria = new P_L3WH_GSPfFC_1504()
            {
                WarehouseGroupID    = Parameter.Warehouse_GroupID,
                WarehouseID         = Parameter.WarehouseID,
                AreaID              = Parameter.AreaID,
                RackID              = Parameter.RackID,
                UseShelfIDList      = Parameter.UseShelfList,
                ShelfIDs            = Parameter.UseShelfList ? Parameter.ShelfID_List : new Guid[] { Guid.Empty },
                UseProductIDList    = false,
                ProductIDs          = new Guid[] { Guid.Empty },
                BottomShelfQuantity = (int?)Parameter.QuantityBottom,
                TopShelfQuantity    = (int?)Parameter.QuantityTop,
                UseProductTrackingInstanceIDList = false,
                ProductTrackingInstanceIDs       = new Guid[] { Guid.Empty },
                StartExpirationDate = null,
                EndExpirationDate   = null
            };
            if (Parameter.ShelfID != null && Parameter.UseShelfList)
            {
                filterCriteria.ShelfIDs.Concat(new Guid[] { new Guid(Parameter.ShelfID.ToString()) });
            }
            var storagePlaces = cls_Get_StoragePlaces_for_FilterCriteria.Invoke(
                Connection,
                Transaction,
                filterCriteria,
                securityTicket).Result;

            if (Parameter.InventoryJobID != null)
            {
                var paramShelfsInvetoryJob = new P_L5IN_GSfIJ_1053();
                paramShelfsInvetoryJob.InventoryJobID = Parameter.InventoryJobID == null ? Guid.Empty : (Guid)Parameter.InventoryJobID;
                var usedSelfs = cls_Get_Shelfs_for_InvetoryJob.Invoke(Connection, Transaction, paramShelfsInvetoryJob, securityTicket).Result;
                returnValue.Result.StoragePlace = storagePlaces.Where(x => !usedSelfs.Select(y => y.LOG_WRH_Shelf_RefID).Contains(x.LOG_WRH_ShelfID)).ToArray();
            }
            else
            {
                returnValue.Result.StoragePlace = storagePlaces;
            }

            return(returnValue);

            #endregion UserCode
        }
Exemple #3
0
        protected static FR_L5SG_GSPwP_1825 Execute(DbConnection Connection, DbTransaction Transaction, P_L5SG_GSPwP_1825 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L5SG_GSPwP_1825();
            returnValue.Result = new L5SG_GSPwP_1825();

            var filterCriteria = new P_L3WH_GSPfFC_1504()
            {
                WarehouseGroupID    = Parameter.Warehouse_GroupID,
                WarehouseID         = Parameter.WarehouseID,
                AreaID              = Parameter.AreaID,
                RackID              = Parameter.RackID,
                UseShelfIDList      = Parameter.UseShelfList,
                ShelfIDs            = Parameter.ShelfID_List,
                UseProductIDList    = false,
                ProductIDs          = new Guid[] { Guid.Empty },
                BottomShelfQuantity = (int?)Parameter.QuantityBottom,
                TopShelfQuantity    = (int?)Parameter.QuantityTop,
                UseProductTrackingInstanceIDList = false,
                ProductTrackingInstanceIDs       = new Guid[] { Guid.Empty },
                StartExpirationDate = null,
                EndExpirationDate   = null
            };
            returnValue.Result.WareHouseStructure = cls_Get_StoragePlaces_for_FilterCriteria.Invoke(
                Connection,
                Transaction,
                filterCriteria,
                securityTicket).Result;

            if (Parameter.PredefinedProduct != null && Parameter.PredefinedProduct != Guid.Empty && Parameter.IsMultiSelect == false)
            {
                foreach (L3WH_GSPfFC_1504 whStructure in returnValue.Result.WareHouseStructure.Where(whStructure => whStructure.Predefined_Product_RefID == Parameter.PredefinedProduct))
                {
                    returnValue.Result.HasDefaultShelf = true;
                    returnValue.Result.ShelfID         = whStructure.LOG_WRH_ShelfID;
                    return(returnValue);
                }
            }

            // second case. Area has flag IsDefaultIntakeArea set to true
            foreach (L3WH_GSPfFC_1504 whStructure in returnValue.Result.WareHouseStructure)
            {
                if (whStructure.IsDefaultIntakeArea)
                {
                    var rack = ORM_LOG_WRH_Rack.Query.Search(Connection, Transaction, new ORM_LOG_WRH_Rack.Query
                    {
                        Area_RefID = whStructure.LOG_WRH_AreaID,
                        IsDeleted  = false
                    }).FirstOrDefault();

                    if (rack != null)
                    {
                        var shelf =
                            ORM_LOG_WRH_Shelf.Query.Search(Connection, Transaction, new ORM_LOG_WRH_Shelf.Query
                        {
                            Rack_RefID = rack.LOG_WRH_RackID,
                            IsDeleted  = false
                        }).FirstOrDefault();


                        if (shelf != null)
                        {
                            returnValue.Result.ShelfID = whStructure.LOG_WRH_ShelfID;


                            returnValue.Result.HasDefaultShelf = false;
                            return(returnValue);
                        }
                    }
                }
            }

            // third case - no default settings at all
            returnValue.Result.HasDefaultShelf = false;
            returnValue.Result.ShelfID         = null;

            return(returnValue);

            #endregion UserCode
        }
Exemple #4
0
        protected static FR_L3PR_GAwSPfT_1002_Array Execute(DbConnection Connection, DbTransaction Transaction, P_L3PR_GAwSPfT_1002 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L3PR_GAwSPfT_1002_Array();

            //Put your code here
            List <L3PR_GAwSPfT_1002> retVal = new List <L3PR_GAwSPfT_1002>();

            P_L3WH_GASfA_1924 par = new P_L3WH_GASfA_1924();
            par.ArticleID_List = Parameter.ArticleID_List.Select(i => i).ToArray();
            var articleStorages = cls_Get_ArticleStorages_for_ArticleIDList.Invoke(Connection, Transaction, par, securityTicket).Result.Where(i => i.ShelfID != Guid.Empty).ToList();

            #region Get All StoragePlaces for TenantID

            var shelfIDs       = articleStorages.Select(i => i.ShelfID).Distinct().ToArray();
            var productIDs     = articleStorages.Select(i => i.ArticleID).Distinct().ToArray();
            var filterCriteria = new P_L3WH_GSPfFC_1504()
            {
                WarehouseGroupID    = null,
                WarehouseID         = null,
                AreaID              = null,
                RackID              = null,
                UseShelfIDList      = shelfIDs.Length != 0,
                ShelfIDs            = shelfIDs.Length == 0 ? new Guid[] { Guid.Empty } : shelfIDs,
                UseProductIDList    = productIDs.Length != 0,
                ProductIDs          = productIDs.Length == 0 ? new Guid[] { Guid.Empty } : productIDs,
                BottomShelfQuantity = null,
                TopShelfQuantity    = null,
                UseProductTrackingInstanceIDList = false,
                ProductTrackingInstanceIDs       = new Guid[] { Guid.Empty },
                StartExpirationDate = null,
                EndExpirationDate   = null
            };
            var allStoragePlacesForTenant = cls_Get_StoragePlaces_for_FilterCriteria.Invoke(Connection, Transaction, filterCriteria, securityTicket).Result;
            #endregion

            L3PR_GAwSPfT_1002 retValItem;
            L3WH_GSPfFC_1504  storagePlace;
            foreach (var storage in articleStorages)
            {
                retValItem              = new L3PR_GAwSPfT_1002();
                retValItem.ArticleID    = storage.ArticleID;
                retValItem.ShelfID      = storage.ShelfID;
                retValItem.StoragePlace = "-";

                storagePlace = allStoragePlacesForTenant.Where(i => i.LOG_WRH_ShelfID == storage.ShelfID).FirstOrDefault();
                if (storagePlace != null && !String.IsNullOrEmpty(storagePlace.Area_Name) &&
                    !String.IsNullOrEmpty(storagePlace.Rack_Name) &&
                    !String.IsNullOrEmpty(storagePlace.Shelf_Name))
                {
                    retValItem.StoragePlace = String.Format("{0}-{1}-{2}-{3}",
                                                            storagePlace.WarehouseCoordinateCode,
                                                            storagePlace.AreaCoordinateCode,
                                                            storagePlace.RackCoordinateCode,
                                                            storagePlace.ShelfCoordinateCode);
                }

                retVal.Add(retValItem);
            }

            returnValue.Result = retVal.ToArray();

            return(returnValue);

            #endregion UserCode
        }
        protected static FR_L6ED_GPTIwAaS_0816_Array Execute(DbConnection Connection, DbTransaction Transaction, P_L6ED_GPTIwAaS_0816 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L6ED_GPTIwAaS_0816_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 = Parameter.ProductTrackingInstanceIds != null,
                ProductTrackingInstanceIDs       = Parameter.ProductTrackingInstanceIds == null
                    ? new Guid[] { Guid.Empty } : Parameter.ProductTrackingInstanceIds,
                StartExpirationDate = Parameter.StartDate,
                EndExpirationDate   = Parameter.EndDate
            };
            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_GPTIwAaS_0816[] { };
                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 Get Supplier
            var parameterProductsBatchNumbers = new P_L6ED_GSRtTIbBNaP_1353();
            parameterProductsBatchNumbers.ProductIDs   = parameterProductIds.ProductID_List;
            parameterProductsBatchNumbers.BatchNumbers = resultStoragePlaces.Result.Select(rsp => rsp.BatchNumber).Distinct().ToArray <string>();
            var resultSuppliers = cls_Get_StockReceipt_through_TrackingInstance_by_BatchNumbers_and_ProductIDs.Invoke(Connection, Transaction, parameterProductsBatchNumbers, securityTicket);
            if (resultSuppliers.Status != FR_Status.Success)
            {
                returnValue.Status = FR_Status.Error_Internal;
                returnValue.Result = new L6ED_GPTIwAaS_0816[] { };
                return(returnValue);
            }
            #endregion

            #region Get MSR
            Guid[] productIds     = articles.Select(x => x.CMN_PRO_ProductID).ToArray();
            var    msrForProducts = cls_Get_MSR_for_ProductIDList.Invoke(
                Connection,
                Transaction,
                new P_L3AS_GSMRfPL_1508 {
                ProductIDList = productIds
            },
                securityTicket
                ).Result;
            #endregion


            #region Set Result
            var result = new List <L6ED_GPTIwAaS_0816>();
            foreach (var storagePlace in resultStoragePlaces.Result)
            {
                var suppliers = resultSuppliers.Result
                                .Where(rs => rs.BatchNumber == storagePlace.BatchNumber && rs.ReceiptPosition_Product_RefID == storagePlace.Product_RefID)
                                .GroupBy(s => s.SupplierId, (key, group) => group.First());

                var msrForProduct = msrForProducts.SingleOrDefault(x => x.ProductID == storagePlace.Product_RefID);

                result.Add(new L6ED_GPTIwAaS_0816()
                {
                    StoragePlaces = storagePlace,
                    Article       = articles.FirstOrDefault(a => a.CMN_PRO_ProductID == storagePlace.Product_RefID),
                    Suppliers     = suppliers.ToArray(),
                    MSR           = (msrForProduct != null) ? msrForProduct.MSR : 0.0
                });
            }
            returnValue.Result = result.ToArray();
            returnValue.Status = FR_Status.Success;
            #endregion


            return(returnValue);

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

            #region Get StockReceiptPositions Position

            var parameterPositions = new CL5_APOLogistic_StockReceipt.Atomic.Retrieval.P_L5SR_GSROfHA_1408();
            parameterPositions.ReceiptHeaderID = Parameter.ReceiptHeaderID;

            var positions = CL5_APOLogistic_StockReceipt.Atomic.Retrieval.cls_Get_StockReceiptsPositions_for_ReceiptHeaderID_Atomic
                            .Invoke(Connection, Transaction, parameterPositions, securityTicket).Result;

            #endregion

            if (positions.Count() == 0)
            {
                returnValue.Result = new L5SR_GSRPfH_1544[0];
                return(returnValue);
            }

            #region Get Articles

            var paramArticles = new CL3_Articles.Atomic.Retrieval.P_L3AR_GAfAL_0942();
            paramArticles.ProductID_List = positions.Select(x => x.ReceiptPosition_Product_RefID).Distinct().ToArray();

            var articles = CL3_Articles.Atomic.Retrieval.cls_Get_Articles_for_ArticleList.Invoke(Connection, Transaction, paramArticles, securityTicket).Result;

            #endregion

            #region Get All StoragePlaces for TenantID
            var filterCriteria = new P_L3WH_GSPfFC_1504()
            {
                WarehouseGroupID    = null,
                WarehouseID         = null,
                AreaID              = null,
                RackID              = null,
                UseShelfIDList      = true,
                ShelfIDs            = positions.Select(i => i.Target_WRH_Shelf_RefID).Distinct().ToArray(),
                UseProductIDList    = false,
                ProductIDs          = new Guid[] { Guid.Empty },
                BottomShelfQuantity = null,
                TopShelfQuantity    = null,
                UseProductTrackingInstanceIDList = false,
                ProductTrackingInstanceIDs       = new Guid[] { Guid.Empty },
                StartExpirationDate = null,
                EndExpirationDate   = null
            };
            var allStoragePlacesForTenant = cls_Get_StoragePlaces_for_FilterCriteria.Invoke(
                Connection,
                Transaction,
                filterCriteria,
                securityTicket).Result;

            #endregion

            #region Get_StandardPrices_for_ProductIDList

            var priceParam = new P_L3PR_GSPfPIL_1645
            {
                ProductIDList = positions.Select(x => x.ReceiptPosition_Product_RefID).Distinct().ToArray()
            };

            var prices = cls_Get_StandardPrices_for_ProductIDList.Invoke(Connection, Transaction, priceParam, securityTicket).Result;

            #endregion

            var result = new List <L5SR_GSRPfH_1544>();

            foreach (var position in positions)
            {
                var retObj = new L5SR_GSRPfH_1544();
                retObj.OrderPosition  = position;
                retObj.Article        = articles.SingleOrDefault(x => x.CMN_PRO_ProductID == position.ReceiptPosition_Product_RefID);
                retObj.StandardPrices = prices.SingleOrDefault(x => x.ProductID == position.ReceiptPosition_Product_RefID);

                if (position.Target_WRH_Shelf_RefID != Guid.Empty)
                {
                    var storagePlace = allStoragePlacesForTenant.Where(i => i.LOG_WRH_ShelfID == position.Target_WRH_Shelf_RefID).FirstOrDefault();

                    if (storagePlace != null)
                    {
                        retObj.StoragePlace = String.Format("{0}-{1}-{2}-{3}",
                                                            storagePlace.WarehouseCoordinateCode,
                                                            storagePlace.AreaCoordinateCode,
                                                            storagePlace.RackCoordinateCode,
                                                            storagePlace.ShelfCoordinateCode);
                    }
                }
                result.Add(retObj);
            }

            returnValue.Result = result.ToArray();
            return(returnValue);

            #endregion UserCode
        }
        protected static FR_L6SC_GFDfSC_1424 Execute(DbConnection Connection, DbTransaction Transaction, P_L6SC_GFDfSC_1424 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L6SC_GFDfSC_1424();
            returnValue.Result = new L6SC_GFDfSC_1424();

            var priceForAllProducts = new List <L3PR_GSPfPIL_1645>();
            var articles            = new List <L3AR_GAfAL_0942>();
            var productsBySupplier  = new List <L3SP_GPfSvSR_1524>();
            var productListId       = new List <Guid>();

            #region Filter by storage and quantity
            var filterCriteria = new P_L3WH_GSPfFC_1504()
            {
                WarehouseGroupID = Parameter.WarehouseStructure.Warehouse_GroupID,
                WarehouseID      = Parameter.WarehouseStructure.WarehouseID,
                AreaID           = Parameter.WarehouseStructure.AreaID,
                RackID           = Parameter.WarehouseStructure.RackID,
                UseShelfIDList   = Parameter.WarehouseStructure.ShelfID != null,
                ShelfIDs         = new Guid[] { Parameter.WarehouseStructure.ShelfID == null
                    ? Guid.Empty : new Guid(Parameter.WarehouseStructure.ShelfID.ToString()) },
                UseProductIDList    = false,
                ProductIDs          = new Guid[] { Guid.Empty },
                BottomShelfQuantity = (int?)Parameter.QuantityBottom,
                TopShelfQuantity    = (int?)Parameter.QuantityTop,
                UseProductTrackingInstanceIDList = false,
                ProductTrackingInstanceIDs       = new Guid[] { Guid.Empty },
                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 L6SC_GFDfSC_1424()
                {
                };
                return(returnValue);
            }
            var productsByStorage = resultStoragePlaces.Result.ToList();
            var productIDsByStorageAndQuantity = productsByStorage.Select(x => x.Product_RefID).Distinct().ToList();
            #endregion

            #region Filter by Supplier
            if (productIDsByStorageAndQuantity.Count != 0)
            {
                productsBySupplier = cls_Get_ProductIDs_for_SupplierID_via_StockReceipts.Invoke(Connection, Transaction,
                                                                                                new P_L3SP_GPfSvSR_1524
                {
                    ProvidingSupplier = Parameter.ProvidingSupplier
                },
                                                                                                securityTicket).Result.ToList();

                if (Parameter.ProvidingSupplier != null)
                {
                    var productIDsBySupplier = productsBySupplier.Select(x => x.ReceiptPosition_Product_RefID).ToList();
                    productListId = productIDsBySupplier.Intersect(productIDsByStorageAndQuantity).ToList();
                }
                else
                {
                    productListId = productIDsByStorageAndQuantity;
                }
            }
            #endregion

            #region Filter by date of shipment
            if (Parameter.DateOfShipmentFrom != null || Parameter.DateOfShipmentTo != null)
            {
                var dateOfShipmentParam = new P_L6SC_GDSfAL_1418();
                dateOfShipmentParam.ProductID_List = productListId.ToArray();
                dateOfShipmentParam.shipmentStatus = null;
                dateOfShipmentParam.DateFrom       = Parameter.DateOfShipmentFrom;
                var filterByDate = Get_DateOfShipment_for_ArticleList.Invoke(Connection, Transaction, dateOfShipmentParam, securityTicket).Result;
                productListId = filterByDate
                                .Where(x => x.GlobalPropertyMatchingID != EnumUtils.GetEnumDescription(EShipmentStatus.Shipped))
                                .Select(x => x.CMN_PRO_Product_RefID).Distinct().ToList();
            }
            #endregion

            #region Filter by Price
            if (productListId.Count != 0)
            {
                var  filteredPrice     = new List <L3PR_GSPfPIL_1645>();
                var  priceParams       = new P_L3PR_GSPfPIL_1645();
                bool isFilteredByPrice = false;
                priceParams.ProductIDList = productListId.ToArray();
                priceForAllProducts       = cls_Get_StandardPrices_for_ProductIDList.Invoke(
                    Connection,
                    Transaction,
                    priceParams,
                    securityTicket).Result.ToList();

                if (Parameter.Price.DefaultSalesPriceFrom != null || Parameter.Price.DefaultSalesPriceTo != null)
                {
                    filteredPrice = priceForAllProducts.Where(x =>
                                                              (Parameter.Price.DefaultSalesPriceFrom == null || x.SalesPrice >= Parameter.Price.DefaultSalesPriceFrom) &&
                                                              (Parameter.Price.DefaultSalesPriceTo == null || x.SalesPrice <= Parameter.Price.DefaultSalesPriceTo)).ToList();
                    isFilteredByPrice = true;
                }

                if (Parameter.Price.AverageProcurementPriceFrom != null || Parameter.Price.AverageProcurementPriceTo != null)
                {
                    if (isFilteredByPrice)
                    {
                        filteredPrice = filteredPrice.Where(x =>
                                                            (Parameter.Price.AverageProcurementPriceFrom == null || x.AverageProcurementPrice >= Parameter.Price.AverageProcurementPriceFrom) &&
                                                            (Parameter.Price.AverageProcurementPriceTo == null || x.AverageProcurementPrice <= Parameter.Price.AverageProcurementPriceTo)).ToList();
                    }
                    else
                    {
                        filteredPrice = priceForAllProducts.Where(x =>
                                                                  (Parameter.Price.AverageProcurementPriceFrom == null || x.AverageProcurementPrice >= Parameter.Price.AverageProcurementPriceFrom) &&
                                                                  (Parameter.Price.AverageProcurementPriceTo == null || x.AverageProcurementPrice <= Parameter.Price.AverageProcurementPriceTo)).ToList();
                        isFilteredByPrice = true;
                    }
                }

                if (isFilteredByPrice)
                {
                    var productListByPrice = filteredPrice.Select(x => x.ProductID).ToList();
                    productListId = productListId.Intersect(productListByPrice).ToList();
                }
            }
            #endregion

            #region Get_Articles_for_ArticleList add producerID
            if (productListId.Count != 0)
            {
                var getArticlesParams = new P_L3AR_GAfAL_0942();
                getArticlesParams.ProducingBusinessParticipant = Parameter.ProducingBusinessParticipant;
                getArticlesParams.ProductID_List = productListId.ToArray();
                getArticlesParams.ProductGroupID = Parameter.ProductGroupID;

                articles = cls_Get_Articles_for_ArticleList.Invoke(Connection, Transaction, getArticlesParams, securityTicket).Result.ToList();
            }
            #endregion

            #region filter by producer
            if ((articles.Count != 0) && (String.IsNullOrEmpty(Parameter.Producer) == false))
            {
                articles = articles.Where(x => x.ProducerName.Contains(Parameter.Producer)).ToList();
            }
            #endregion

            #region Get Msr for products

            var productIDs     = articles.Select(x => x.CMN_PRO_ProductID).ToArray();
            var msrForProducts = cls_Get_MSR_for_ProductIDList.Invoke(
                Connection,
                Transaction,
                new P_L3AS_GSMRfPL_1508 {
                ProductIDList = productIDs
            },
                securityTicket
                ).Result;

            #endregion

            if (productListId.Count != 0)
            {
                var returnItemList = new List <L6SC_GFDfSC_1424a>();
                foreach (var item in productsByStorage)
                {
                    var article           = articles.SingleOrDefault(x => x.CMN_PRO_ProductID == item.Product_RefID);
                    var productMst        = msrForProducts.SingleOrDefault(x => x.ProductID == item.Product_RefID);
                    var trackingInstances = cls_GetTrackingInstances_for_ShelfContent.Invoke(
                        Connection,
                        Transaction,
                        new P_L3TI_GTIfSC_1455()
                    {
                        ShelfContentID = item.LOG_WRH_Shelf_ContentID
                    },
                        securityTicket).Result;
                    if (article != null && trackingInstances != null && trackingInstances.Count() > 0)
                    {
                        var returnItem = new L6SC_GFDfSC_1424a();
                        returnItem.Storage          = productsByStorage.Single(x => x.LOG_WRH_Shelf_ContentID == item.LOG_WRH_Shelf_ContentID);
                        returnItem.Price            = priceForAllProducts.SingleOrDefault(x => x.ProductID == item.Product_RefID);
                        returnItem.Article          = article;
                        returnItem.Supplier         = productsBySupplier.Where(x => x.ReceiptPosition_Product_RefID == item.Product_RefID).ToArray();
                        returnItem.TrackingInstance = trackingInstances[0];
                        returnItem.MSR = (productMst != null) ? productMst.MSR : 0.0;
                        returnItemList.Add(returnItem);
                    }
                }
                returnValue.Result.FullGridData = returnItemList.ToArray();
            }

            return(returnValue);

            #endregion UserCode
        }
        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
        }