public void DateLessOrEqualThanLastData_NotEmpty()
        {
            var stockOpname = new GarmentStockOpname {
                Date = new DateTimeOffset(new DateTime(2020, 11, 22))
            };

            var facadeMock = new Mock <IGarmentStockOpnameFacade>();

            facadeMock.Setup(s => s.GetLastDataByUnitStorage(It.IsAny <string>(), It.IsAny <string>()))
            .Returns(stockOpname);

            var serviceProviderMock = new Mock <IServiceProvider>();

            serviceProviderMock
            .Setup(x => x.GetService(typeof(IGarmentStockOpnameFacade)))
            .Returns(facadeMock.Object);
            serviceProviderMock
            .Setup(x => x.GetService(typeof(IdentityService)))
            .Returns(new IdentityService()
            {
                Token = "Token", Username = "******"
            });

            GarmentStockOpnameDownload downloadFile = new GarmentStockOpnameDownload(stockOpname.Date, "not null", "not null", "not null");

            var validationContext = new ValidationContext(downloadFile, serviceProviderMock.Object, null);
            var validationResults = downloadFile.Validate(validationContext);

            Assert.NotEmpty(validationResults.ToList());
        }
コード例 #2
0
        void ValidateUpload(GarmentStockOpname data)
        {
            List <ValidationResult> validationResults = new List <ValidationResult>();

            if (data.Date == DateTimeOffset.MinValue)
            {
                validationResults.Add(new ValidationResult("Tanggal harus diisi", new List <string> {
                    "date"
                }));
            }
            //else if (!string.IsNullOrWhiteSpace(data.UnitCode) && !string.IsNullOrWhiteSpace(data.StorageCode))
            //{
            //    var lastData = GetLastDataByUnitStorage(data.UnitCode, data.StorageCode);
            //    if (lastData != null)
            //    {
            //        if (data.Date <= lastData.Date)
            //        {
            //            validationResults.Add(new ValidationResult("Tanggal harus lebih dari " + lastData.Date.ToOffset(new TimeSpan(identityService.TimezoneOffset, 0, 0)).ToString("dd MMMM yyyy", CultureInfo.CreateSpecificCulture("id-ID")), new List<string> { "date" }));
            //        }
            //    }
            //}

            if (string.IsNullOrWhiteSpace(data.UnitCode))
            {
                validationResults.Add(new ValidationResult("Unit harus diisi", new List <string> {
                    "unit"
                }));
            }

            if (string.IsNullOrWhiteSpace(data.StorageCode))
            {
                validationResults.Add(new ValidationResult("Storage harus diisi", new List <string> {
                    "storage"
                }));
            }

            if (data.Items.Count < 1)
            {
                validationResults.Add(new ValidationResult("Items harus diisi", new List <string> {
                    "itemsCount"
                }));
            }
            else
            {
                foreach (var item in data.Items)
                {
                    if (item.Quantity < 0)
                    {
                        validationResults.Add(new ValidationResult("Quantity tidak boleh kurang dari 0", new List <string> {
                            "item"
                        }));
                    }
                }
            }

            if (validationResults.Count > 0)
            {
                throw new ServiceValidationExeption(null, validationResults);
            }
        }
コード例 #3
0
        public async Task <GarmentStockOpname> Upload(Stream stream)
        {
            ExcelPackage excelPackage = new ExcelPackage();

            excelPackage.Load(stream);

            var ws = excelPackage.Workbook.Worksheets[0];

            var storage = ((string)ws.Cells["B3"].Value).Split("-");

            var data = new GarmentStockOpname
            {
                Date        = DateTimeOffset.Parse((string)ws.Cells["B1"].Value),
                UnitCode    = (string)ws.Cells["B2"].Value,
                StorageCode = storage[0].Trim(),
                StorageName = storage[1].Trim(),
                Items       = new List <GarmentStockOpnameItem>()
            };

            EntityExtension.FlagForCreate(data, identityService.Username, USER_AGENT);

            for (int row = 6; row <= ws.Dimension.End.Row; row++)
            {
                if (!string.IsNullOrWhiteSpace(ws.Cells[row, 1].Text))
                {
                    GarmentStockOpnameItem item = new GarmentStockOpnameItem
                    {
                        DOItemId       = (int)(double)ws.Cells[row, 1].Value,
                        BeforeQuantity = (decimal)(double)ws.Cells[row, 7].Value,
                        Quantity       = (decimal)(double)ws.Cells[row, 8].Value
                    };

                    EntityExtension.FlagForCreate(item, identityService.Username, USER_AGENT);
                    data.Items.Add(item);

                    if (item.BeforeQuantity != item.Quantity)
                    {
                        item.DOItem = dbSetDOItem.Where(doi => doi.Id == item.DOItemId).Single();
                        item.DOItem.RemainingQuantity = item.Quantity;
                        EntityExtension.FlagForUpdate(item.DOItem, identityService.Username, USER_AGENT);
                    }
                }
            }

            dbSet.Add(data);

            await dbContext.SaveChangesAsync();

            return(data);
        }
コード例 #4
0
        public async Task <GarmentStockOpname> Upload(Stream stream)
        {
            ExcelPackage excelPackage = new ExcelPackage();

            excelPackage.Load(stream);

            var ws = excelPackage.Workbook.Worksheets[0];

            var storage = new string[2] {
                "", ""
            };

            if (!string.IsNullOrWhiteSpace((string)ws.Cells["B3"].Value))
            {
                storage = ((string)ws.Cells["B3"].Value).Split("-");
            }

            var data = new GarmentStockOpname
            {
                Date        = DateTimeOffset.Parse((string)ws.Cells["B1"].Value),
                UnitCode    = (string)ws.Cells["B2"].Value,
                StorageCode = storage[0].Trim(),
                StorageName = storage[1].Trim(),
                Items       = new List <GarmentStockOpnameItem>()
            };

            EntityExtension.FlagForCreate(data, identityService.Username, USER_AGENT);

            var doItem = dbSetDOItem.Where(i => i.UnitCode == data.UnitCode && i.StorageCode == data.StorageCode)
                         .Select(i => new { i.UnitId, i.UnitName, i.StorageId })
                         .FirstOrDefault();

            if (doItem != null)
            {
                data.UnitId    = (int)doItem.UnitId;
                data.UnitName  = doItem.UnitName;
                data.StorageId = (int)doItem.StorageId;
            }

            for (int row = 6; row <= ws.Dimension.End.Row; row++)
            {
                if (!string.IsNullOrWhiteSpace(ws.Cells[row, 1].Text))
                {
                    GarmentStockOpnameItem item = new GarmentStockOpnameItem
                    {
                        DOItemId       = (int)(double)ws.Cells[row, 1].Value,
                        BeforeQuantity = (decimal)(double)ws.Cells[row, 7].Value,
                        Quantity       = (decimal)(double)ws.Cells[row, 8].Value
                    };

                    EntityExtension.FlagForCreate(item, identityService.Username, USER_AGENT);
                    data.Items.Add(item);
                }
            }

            ValidateUpload(data);

            foreach (var item in data.Items)
            {
                var DOItem = dbSetDOItem.Where(doi => doi.Id == item.DOItemId).FirstOrDefault();
                if (DOItem != null)
                {
                    item.DOItemNo          = DOItem.DOItemNo;
                    item.UId               = DOItem.UId;
                    item.UnitId            = DOItem.UnitId;
                    item.UnitCode          = DOItem.UnitCode;
                    item.UnitName          = DOItem.UnitName;
                    item.StorageId         = DOItem.StorageId;
                    item.StorageCode       = DOItem.StorageCode;
                    item.StorageName       = DOItem.StorageName;
                    item.POId              = DOItem.POId;
                    item.POItemId          = DOItem.POItemId;
                    item.PRItemId          = DOItem.PRItemId;
                    item.EPOItemId         = DOItem.EPOItemId;
                    item.POSerialNumber    = DOItem.POSerialNumber;
                    item.ProductId         = DOItem.ProductId;
                    item.ProductCode       = DOItem.ProductCode;
                    item.ProductName       = DOItem.ProductName;
                    item.DesignColor       = DOItem.DesignColor;
                    item.SmallQuantity     = DOItem.SmallQuantity;
                    item.SmallUomId        = DOItem.SmallUomId;
                    item.SmallUomUnit      = DOItem.SmallUomUnit;
                    item.DOCurrencyRate    = DOItem.DOCurrencyRate;
                    item.DetailReferenceId = DOItem.DetailReferenceId;
                    item.URNItemId         = DOItem.URNItemId;
                    item.RO = DOItem.RO;

                    DOItem.RemainingQuantity = item.Quantity;
                    EntityExtension.FlagForUpdate(DOItem, identityService.Username, USER_AGENT);
                    //if (item.BeforeQuantity != item.Quantity)
                    //{
                    //    DOItem.RemainingQuantity = item.Quantity;
                    //    EntityExtension.FlagForUpdate(DOItem, identityService.Username, USER_AGENT);
                    //}
                }

                var urnItem = dbSetUnitReceiptNoteItems.FirstOrDefault(urni => urni.Id == item.URNItemId);
                if (urnItem != null)
                {
                    item.Price = item.Quantity * (decimal)item.DOCurrencyRate * (decimal)urnItem.PricePerDealUnit;
                }
            }

            dbSet.Add(data);

            await dbContext.SaveChangesAsync();

            return(data);
        }