Exemplo n.º 1
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);
        }
Exemplo n.º 2
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);
        }