public static InvoiceViewModel FromDtoToView(InvoiceHeaderDto invoiceDto) { var paymentTerm = new PaymentTermDto(invoiceDto.PaymentTerm.Description.Value, invoiceDto.PaymentTerm.DayValue) with { Id = invoiceDto.PaymentTerm.Id , Status = invoiceDto.PaymentTerm.Status , Created = invoiceDto.PaymentTerm.Created , Modified = invoiceDto.PaymentTerm.Modified }; return(new InvoiceViewModel() { Id = invoiceDto.Id, Client = FromEntity(invoiceDto.Client), Code = invoiceDto.Code, Rnc = invoiceDto.Rnc, Ncf = invoiceDto.Ncf, Created = invoiceDto.InvoiceDate, DueDate = invoiceDto.DueDate, Footer = invoiceDto.Footer, Notes = invoiceDto.Notes, PaymentTerm = paymentTerm, TermAndConditions = invoiceDto.TermAndConditions, Discount = invoiceDto.Discount, SubTotal = invoiceDto.Subtotal, TaxTotal = invoiceDto.TaxTotal, Total = invoiceDto.Total, InvoiceDetails = invoiceDto.InvoiceDetails.Map(i => new InvoiceDetailViewModel() { Id = i.Id, ProductCode = i.ProductCode, ProductDescription = i.ProductDescription, Amount = i.Amount, Qty = i.Qty, TaxPercent = i.TaxPercent }).ToList() }); } }
public static InvoiceHeader FromDto(InvoiceHeaderDto dto) => new InvoiceHeader(new Code(dto.Code) , dto.Ncf , dto.NumberSequenceId , dto.Rnc , dto.Client , dto.InvoiceDate , dto.DueDate , dto.PaymentTerm , new GeneralText(dto.Notes) , new GeneralText(dto.TermAndConditions) , new GeneralText(dto.Footer) , dto.Discount , dto.Subtotal , dto.TaxTotal , dto.Total , dto.InvoiceDetails.Select(c => FromDto(c)).ToList() , dto.Created , dto.Status);
public async Task <ActionResult> EditInvoice(InvoiceHeaderDto dto) { foreach (var dtoItem in dto.InvoiceDetails) { var check = await _stockService.CheckIfExist(dtoItem.ProductId); var old = await _invoiceDetailsAppService.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 updated = await _invoiceAppService.UpdateAsync(dto); foreach (var items in dto.InvoiceDetails) { var getCheck = await _invoiceDetailsAppService.GetAsync(new EntityDto <int>(items.Id)); if (getCheck == null) { var toCreate = new InvoiceDetailDto { InvoiceHeaderId = dto.InvoiceId, 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 _invoiceDetailsAppService.CreateAsync(toCreate); } else if (getCheck != null) { var toUpdate = new InvoiceDetailDto { Id = items.Id, CreationTime = items.CreationTime, CreatorUserId = items.CreatorUserId, TenantId = items.TenantId, InvoiceHeaderId = items.InvoiceHeaderId, 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 _invoiceDetailsAppService.UpdateAsync(toUpdate); } } return(Ok(updated)); }