Example #1
0
        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()
            });
        }
    }
Example #2
0
 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);
Example #3
0
        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));
        }