public async Task <IActionResult> Update([FromBody] IOStockViewModel value) { if (ModelState.IsValid) { var ret = await SaveIOStock(value); return(await GetIOStock(ret.IOStockId, ret.Html)); } return(BadRequest(ModelState)); }
private IOStockViewModel GenerateDefault(int ioTypeId) { var ioNumber = this._unitOfWork.ConfigNumberOfCodes.GenerateCode(ioTypeId, userId.ToString()); var itemNew = new IOStockViewModel { Code = ioNumber, CreateDate = DateTime.Now, CreateBy = userId, IOTypeId = ioTypeId, IODetails = new IOStockDetailViewModel[0] }; return(itemNew); }
public async Task <IActionResult> Update([FromBody] IOStockViewModel value) { if (ModelState.IsValid) { if (!string.IsNullOrEmpty(value.PurchaseOrderCode)) { //check purchaseOrder var results = this._unitOfWork.PurchaseOrders.GetPurchaseOrderListDetail( ObjectHelper.GetDateMin, ObjectHelper.GetDateNow, value.PurchaseOrderId.ToString(), this._unitOfWork.Branches.GetAllBranchOfUserString(userId), value.ID.HasValue ? value.ID.Value.ToString() : string.Empty, 0, 0 ); var iods = value.IODetails; foreach (var item in results) { var itemExist = iods.FirstOrDefault(p => p.PurchaseOrderDetailId == item.PurchaseOrderDetailId); if (itemExist != null) { if ((item.PurchaseQuantity - item.IOQuantity) >= itemExist.Quantity) { continue; } else { throw new Exception("Đã hết đơn đặt hàng"); } } else { throw new Exception("Not exist purchase order"); } } } var ioId = Guid.NewGuid(); var io = new IOStock { IOStockId = ioId, IONumber = value.Code, SupplierId = value.SupplierId, CreatedBy = userId, CreatedDate = value.CreateDate, UpdatedBy = userId, UpdatedDate = DateTime.Now, IOTypeId = value.IOTypeId, BranchId = ioId, StudentId = value.StudentId, Note = value.Note, PurchaseOrderCode = value.PurchaseOrderCode, PurchaseOrderId = value.PurchaseOrderId }; var ioDetails = value.IODetails.Select(p => new IOStockDetail { IOStockDetailId = p.ID == null ? Guid.NewGuid() : p.ID.Value, IOStockId = ioId, MaterialId = p.MaterialId, MaterialCode = p.MaterialCode, PriceBeforeVAT = p.SellPrice, PriceAfterVAT = p.SellPrice, VAT = 0, InputQuantity = p.Quantity, TotalPrice = p.SellPrice * p.Quantity, TotalPriceBeforeVAT = p.SellPrice * p.Quantity, CreatedBy = userId, CreatedDate = value.CreateDate, UpdatedBy = userId, UpdatedDate = DateTime.Now, PurchaseOrderDetailId = p.PurchaseOrderDetailId, PurchaseOrderId = p.PurchaseOrderId }); io.TotalPrice = ioDetails.Sum(p => p.TotalPrice); io.TotalPriceBeforeVAT = ioDetails.Sum(p => p.TotalPriceBeforeVAT); var ret = await this._unitOfWork.IOStocks.Save(io, ioDetails.ToArray(), value.ID); var bodyHtml = EmailTemplates.GetTestEmail("MINHMH", DateTime.Now); var configStmp = _serviceSmtpConfig.Value; var result = await EmailSender.SendEmailAsync( "MINHMH", "*****@*****.**", "test send", bodyHtml, configStmp ); return(await GetIOStock(ret.IOStockId)); } return(BadRequest(ModelState)); }
public static bool SendEmail_IOStock(IOptions <SmtpConfig> _serviceSmtpConfig, IOStockViewModel ios) { var emailMessage = GetTempalteEmail(_serviceSmtpConfig, ios); return(SendEmailTemplate(_serviceSmtpConfig, emailMessage)); }
public static string GetTempalteEmail(IOptions <SmtpConfig> _serviceSmtpConfig, IOStockViewModel ios) { testEmailTemplate = ReadPhysicalFile("Helpers/Templates/exampletemplate.html"); return(testEmailTemplate .Replace("{{IONumber}}", ios.Code) .Replace("{{PurchaseOrderCode}}", ios.PurchaseOrderCode) .Replace("{{CreatedDate}}", ios.CreateDate.ToString("MM/dd/yyyy HH:mm:ss.fff", CultureInfo.InvariantCulture)) .Replace("{{CreatedBy}}", ios.UpdatedByName) .Replace("{{Note}}", ios.Note) .Replace("{{rows}}", MappingIOTable(ios.IODetails))); }
private async Task <IOStock> SaveIOStock(IOStockViewModel value) { if (ModelState.IsValid) { if (!string.IsNullOrEmpty(value.PurchaseOrderCode)) { //check purchaseOrder var results = this._unitOfWork.PurchaseOrders.GetPurchaseOrderListDetail( ObjectHelper.GetDateMin, ObjectHelper.GetDateNow, value.PurchaseOrderId.ToString(), this._unitOfWork.Branches.GetAllBranchOfUserString(userId), value.ID.HasValue ? value.ID.Value.ToString() : string.Empty, 0, 0 ); var iods = value.IODetails; foreach (var item in results) { var itemExist = iods.FirstOrDefault(p => p.PurchaseOrderDetailId == item.PurchaseOrderDetailId); if (itemExist != null) { if ((item.PurchaseQuantity - item.IOQuantity) >= itemExist.Quantity) { continue; } else { throw new Exception("Đã hết đơn đặt hàng"); } } else { throw new Exception("Not exist purchase order"); } } } var ioId = Guid.NewGuid(); var io = new IOStock { IOStockId = ioId, IONumber = value.Code, SupplierId = value.SupplierId, CreatedBy = userId, CreatedDate = value.CreateDate, UpdatedBy = userId, UpdatedDate = DateTime.Now, IOTypeId = value.IOTypeId, BranchId = ioId, StudentId = value.StudentId, Note = value.Note, PurchaseOrderCode = value.PurchaseOrderCode, PurchaseOrderId = value.PurchaseOrderId }; var ioDetails = new List <IOStockDetail>(); foreach (var p in value.IODetails) { var ioDetailId = p.ID == null || !value.ID.HasValue ? Guid.NewGuid() : p.ID.Value; var itemNew = new IOStockDetail { IOStockDetailId = ioDetailId, IOStockId = ioId, MaterialId = p.MaterialId, MaterialCode = p.MaterialCode, PriceBeforeVAT = p.SellPrice, PriceAfterVAT = p.SellPrice, VAT = 0, InputQuantity = p.Quantity, DisCountMoney = p.DisCountMoney, TotalPrice = p.SellPrice * p.Quantity - (p.DisCountMoney ?? 0), TotalPriceBeforeVAT = p.SellPrice * p.Quantity - (p.DisCountMoney ?? 0), CreatedBy = userId, CreatedDate = value.CreateDate, UpdatedBy = userId, UpdatedDate = DateTime.Now, PurchaseOrderDetailId = p.PurchaseOrderDetailId, PurchaseOrderId = p.PurchaseOrderId, IOPros = p.Pros.Select(c => new IOStockDetailPro { IOStockDetailId = ioDetailId, IOStockId = ioId, PromotionId = c.PromotionId, PromotionDetailId = c.PromotionDetailId, PercentDiscount = c.PercentDiscount, MoneyDiscount = c.MoneyDiscount, IOStockDetailProId = Guid.NewGuid(), CreatedBy = userId, CreatedDate = value.CreateDate, UpdatedBy = userId, UpdatedDate = DateTime.Now, }).ToArray() }; ioDetails.Add(itemNew); } io.TotalPrice = ioDetails.Sum(p => p.TotalPrice) - ioDetails.Sum(p => p.DisCountMoney); io.TotalPriceBeforeVAT = ioDetails.Sum(p => p.TotalPriceBeforeVAT) - ioDetails.Sum(p => p.DisCountMoney); var ret = await this._unitOfWork.IOStocks.Save(io, ioDetails.ToArray(), value.ID); value.UpdatedByName = ret.UpdatedByName; // send email var bodyHtml = EmailTemplates.SendEmail_IOStock(_serviceSmtpConfig, value); ret.Html = EmailTemplates.GetTempalteEmail(_serviceSmtpConfig, value); return(ret); } return(null); }