public async Task <ActionResult> CreateCreditMemo(CreateCreditMemoDto dto) { await _creditMemoAppService.CreateAsync(dto); if (dto.CreditMemoMode == "Good") { foreach (var items in dto.CreditMemoDetails) { var check = await _stockService.CheckIfExist(items.ProductId); if (check != null) { check.TotalPieces += items.TotalPieces; check.Amount += items.Amount; await _stockService.UpdateAsync(check); } } } else { foreach (var items in dto.CreditMemoDetails) { var check = await _badStockService.CheckIfExist(items.ProductId); if (check != null) { check.TotalPieces += items.TotalPieces; check.Amount += items.Amount; await _badStockService.UpdateAsync(check); } else { var stocks = new BadStockDto { ProductId = items.ProductId, TotalPieces = items.TotalPieces, PricePerPiece = items.PricePerPiece, Amount = items.Amount }; await _badStockService.CreateAsync(stocks); } } } return(Ok(dto)); }
public async Task <ActionResult> EditCreditMemo(CreditMemoHeaderDto dto) { if (dto.CreditMemoMode == "Good") { foreach (var dtoItem in dto.CreditMemoDetails) { var check = await _stockService.CheckIfExist(dtoItem.ProductId); var old = await _creditMemoDetailsAppService.GetDetailsAsync(dtoItem.Id); if (old != null) { if (dtoItem.TotalPieces > old.TotalPieces) { var change = dtoItem.TotalPieces - old.TotalPieces; var tAmount = dtoItem.PricePerPiece * change; check.TotalPieces += change; check.Amount += tAmount; await _stockService.UpdateAsync(check); } else if (dtoItem.TotalPieces < old.TotalPieces) { var change = old.TotalPieces - dtoItem.TotalPieces; var tAmount = dtoItem.PricePerPiece * change; check.TotalPieces -= change; check.Amount -= tAmount; await _stockService.UpdateAsync(check); } } else { check.TotalPieces += dtoItem.TotalPieces; check.Amount += dtoItem.Amount; await _stockService.UpdateAsync(check); } } var updateme = await _creditMemoAppService.UpdateAsync(dto); foreach (var items in dto.CreditMemoDetails) { var getCheck = await _creditMemoDetailsAppService.GetAsync(new EntityDto <int>(items.Id)); if (getCheck == null) { var toCreate = new CreditMemoDetailDto { CreditMemoHeaderId = dto.CreditMemoId, ProductId = items.ProductId, Case = items.Case, ProdCase = items.ProdCase, Box = items.Box, ProdPiece = items.ProdPiece, Piece = items.Piece, Gross = items.Gross, Discount = items.Discount, Net = items.Net, TotalProductPrice = items.TotalProductPrice, }; await _creditMemoDetailsAppService.CreateAsync(toCreate); } else if (getCheck != null) { var toUpdate = new CreditMemoDetailDto { Id = items.Id, CreationTime = items.CreationTime, CreatorUserId = items.CreatorUserId, TenantId = items.TenantId, CreditMemoHeaderId = items.CreditMemoHeaderId, ProductId = items.ProductId, Case = items.Case, ProdCase = items.ProdCase, Box = items.Box, ProdPiece = items.ProdPiece, Piece = items.Piece, Gross = items.Gross, Discount = items.Discount, Net = items.Net, TotalProductPrice = items.TotalProductPrice, }; await _creditMemoDetailsAppService.UpdateAsync(toUpdate); } } } else if (dto.CreditMemoMode == "Bad") { foreach (var dtoItem in dto.CreditMemoDetails) { var check = await _badStockService.CheckIfExist(dtoItem.ProductId); var old = await _creditMemoDetailsAppService.GetDetailsAsync(dtoItem.Id); if (old != null) { if (dtoItem.TotalPieces > old.TotalPieces) { var change = dtoItem.TotalPieces - old.TotalPieces; var tAmount = dtoItem.PricePerPiece * change; check.TotalPieces += change; check.Amount += tAmount; await _badStockService.UpdateAsync(check); } else if (dtoItem.TotalPieces < old.TotalPieces) { var change = old.TotalPieces - dtoItem.TotalPieces; var tAmount = dtoItem.PricePerPiece * change; check.TotalPieces -= change; check.Amount -= tAmount; await _badStockService.UpdateAsync(check); } } else { if (check != null) { check.TotalPieces += dtoItem.TotalPieces; check.Amount += dtoItem.Amount; await _badStockService.UpdateAsync(check); } else { var stocks = new BadStockDto { ProductId = dtoItem.ProductId, TotalPieces = dtoItem.TotalPieces, PricePerPiece = dtoItem.PricePerPiece, Amount = dtoItem.Amount }; await _badStockService.CreateAsync(stocks); } } } var updated = await _creditMemoAppService.UpdateAsync(dto); foreach (var items in dto.CreditMemoDetails) { var getCheck = await _creditMemoDetailsAppService.GetAsync(new EntityDto <int>(items.Id)); if (getCheck == null) { var toCreate = new CreditMemoDetailDto { CreditMemoHeaderId = dto.CreditMemoId, ProductId = items.ProductId, Case = items.Case, ProdCase = items.ProdCase, Box = items.Box, ProdPiece = items.ProdPiece, Piece = items.Piece, Gross = items.Gross, Discount = items.Discount, Net = items.Net, TotalProductPrice = items.TotalProductPrice, }; await _creditMemoDetailsAppService.CreateAsync(toCreate); } else if (getCheck != null) { var toUpdate = new CreditMemoDetailDto { Id = items.Id, CreationTime = items.CreationTime, CreatorUserId = items.CreatorUserId, TenantId = items.TenantId, CreditMemoHeaderId = items.CreditMemoHeaderId, ProductId = items.ProductId, Case = items.Case, ProdCase = items.ProdCase, Box = items.Box, ProdPiece = items.ProdPiece, Piece = items.Piece, Gross = items.Gross, Discount = items.Discount, Net = items.Net, TotalProductPrice = items.TotalProductPrice, }; await _creditMemoDetailsAppService.UpdateAsync(toUpdate); } } } return(Ok(dto)); }