Example #1
0
        public List <InventoryMovementLevelDto> GetLack1DetailLevel(GetLack1DetailLevelInput input)
        {
            var list = GetLack1DetailLevelList(input);

            var groupedList = list.GroupBy(x => new { x.Level, x.FlavorCode, x.FlavorDesc, x.CfProdCode, x.CfProdDesc, x.CfProdQty, x.CfProdUom, x.ProdPostingDate, x.ProdDate })
                              .Select(x => new InventoryMovementLevelDto()
            {
                Level           = x.FirstOrDefault().Level,
                FlavorCode      = x.FirstOrDefault().FlavorCode,
                FlavorDesc      = x.FirstOrDefault().FlavorDesc,
                CfProdCode      = x.FirstOrDefault().CfProdCode,
                CfProdDesc      = x.FirstOrDefault().CfProdDesc,
                CfProdQty       = x.FirstOrDefault().CfProdQty,
                CfProdUom       = x.FirstOrDefault().CfProdUom,
                ProdPostingDate = x.FirstOrDefault().ProdPostingDate,
                ProdDate        = x.FirstOrDefault().ProdDate
            }).ToList();

            return(groupedList);
        }
Example #2
0
        private List <InventoryMovementLevelDto> GetLack1DetailLevelList(GetLack1DetailLevelInput input)
        {
            var list = new List <InventoryMovementLevelDto>();

            var mvtList101 = new List <string>();

            mvtList101.Add(EnumHelper.GetDescription(Core.Enums.MovementTypeCode.Receiving101));

            var data = _repository.Get(x => input.ListOrdr.Contains(x.ORDR) &&
                                       x.POSTING_DATE >= input.DateFrom && x.POSTING_DATE <= input.DateTo &&
                                       mvtList101.Contains(x.MVT)).ToList();

            var batchList = data.Select(x => x.BATCH).Distinct().ToList();

            var mvtList261 = new List <string>();

            mvtList261.Add(EnumHelper.GetDescription(Core.Enums.MovementTypeCode.Usage261));

            var dataList = _repository.Get(x => batchList.Contains(x.BATCH) &&
                                           x.POSTING_DATE >= input.DateFrom && x.POSTING_DATE <= input.DateTo &&
                                           mvtList261.Contains(x.MVT)).ToList();

            var ordrList = new List <string>();

            foreach (var item in dataList)
            {
                var levelNew = new InventoryMovementLevelDto();
                levelNew.Level           = input.Level.ToString();
                levelNew.FlavorCode      = item.MATERIAL_ID;
                levelNew.FlavorDesc      = string.Empty;
                levelNew.CfProdCode      = string.Empty;
                levelNew.CfProdDesc      = string.Empty;
                levelNew.CfProdQty       = string.Empty;
                levelNew.CfProdUom       = string.Empty;
                levelNew.ProdPostingDate = string.Empty;
                levelNew.ProdDate        = string.Empty;

                var checkMaterial = _materialService.GetByMaterialAndPlantId(item.MATERIAL_ID, item.PLANT_ID);

                if (checkMaterial == null)
                {
                    ordrList.Add(item.ORDR);
                }
                else
                {
                    var materialItem = new List <string>();
                    materialItem.Add(item.MATERIAL_ID);

                    var umren       = Convert.ToDecimal(1);
                    var materialUom = _materialUomService.GetByMaterialListAndPlantId(materialItem, item.PLANT_ID);
                    if (materialUom.Count > 0)
                    {
                        var umrenGram = materialUom.Where(x => x.MEINH == "G").FirstOrDefault();
                        if (umrenGram != null)
                        {
                            umren = umrenGram.UMREN.Value;
                        }
                    }

                    levelNew.FlavorCode      = string.Empty;
                    levelNew.FlavorDesc      = string.Empty;
                    levelNew.CfProdCode      = item.MATERIAL_ID;
                    levelNew.CfProdDesc      = checkMaterial.MATERIAL_DESC;
                    levelNew.CfProdQty       = (item.QTY.Value / umren).ToString("N2");
                    levelNew.CfProdUom       = "Gram";
                    levelNew.ProdPostingDate = item.POSTING_DATE.Value.ToString("dd-MMM-yy");
                    levelNew.ProdDate        = item.POSTING_DATE.Value.ToString("dd-MMM-yy");
                }

                list.Add(levelNew);
            }

            if (ordrList.Count > 0)
            {
                var inputLevelMvt = new GetLack1DetailLevelInput();
                inputLevelMvt.DateFrom = input.DateFrom;
                inputLevelMvt.DateTo   = input.DateTo;
                inputLevelMvt.ListOrdr = ordrList;
                inputLevelMvt.Level    = input.Level + 1;

                var nextLevel = GetLack1DetailLevel(inputLevelMvt);
                list.AddRange(nextLevel);
            }

            return(list);
        }