public static InvoiceLineDTO CreateInvoiceLineDTO(int invoiceLineId, int itemName, decimal amount, int invoiceId) { InvoiceLineDTO invoiceLineDTO = new InvoiceLineDTO(); invoiceLineDTO.InvoiceLineId = invoiceLineId; invoiceLineDTO.ItemName = itemName; invoiceLineDTO.Amount = amount; invoiceLineDTO.InvoiceId = invoiceId; return invoiceLineDTO; }
private async Task UpdateInvoiceSell(InvoiceSell dbInv, TransportOfferDTO dto) { var tradeInfoDTO = dto.TradeInfo; if (dbInv.Buyer == null || dbInv.BuyerId != tradeInfoDTO.Company.CompanyId) { //dbInv.Buyer = await this._db.Company.FirstOrDefaultAsync(f => f.CompanyId == tradeInfoDTO.Company.CompanyId); dbInv.Buyer = await this._companyService.CompanyMapper(dbInv.Buyer, dto.TradeInfo.Company); } if (dto.InvoiceInPLN) { dbInv.Currency = this._invoiceService._currencyList.FirstOrDefault(f => f.Name == "PLN"); } else { dbInv.Currency = this._invoiceService._currencyList.FirstOrDefault(f => f.CurrencyId == tradeInfoDTO.Price.Currency.CurrencyId); } dbInv.DateOfIssue = DateTime.Now; var extraInfo = dbInv.ExtraInfo ?? new InvoiceExtraInfo(); extraInfo.LoadNo = dto.OfferNo; if (dbInv.ExtraInfo == null) { extraInfo.InvoiceSell = dbInv; this._db.Entry(extraInfo).State = EntityState.Added; } dbInv.InvoiceNo = await this._invoiceService.GetNextInvoiceNo(dto.TradeInfo.Date); //invoice pos var price = dto.InvoiceInPLN ? tradeInfoDTO.Price.PlnValue: tradeInfoDTO.Price.Price; var brutto = Math.Round(price * 1.23, 2); var itemName = $"Usługa transportowa ({dto.Load.PostalCode} - {dto.Unload.PostalCode})"; var dbPos = new InvoicePos(); var posDTO = new InvoiceLineDTO { Brutto_value = brutto, Measurement_unit = "szt", //Name = $"Usługa transportowa", Name = itemName, Netto_value = price, Quantity = 1, Unit_price = price, Vat_rate = "23", Vat_unit_value = brutto - price, Vat_value = brutto - price }; this._invoiceService.MapperLine(dbPos, posDTO); if (dbInv.InvoicePosList == null || dbInv.InvoicePosList.Count == 0) { dbPos.InvoiceSell = dbInv; this._db.Entry(dbPos).State = EntityState.Added; } else { dbPos = dbInv.InvoicePosList.FirstOrDefault(); this._invoiceService.MapperLine(dbPos, posDTO); } var dbTotal = dbInv.InvoiceTotal ?? new InvoiceTotal(); dbTotal.TotalBrutto = brutto; dbTotal.TotalNetto = price; dbTotal.TotalTax = brutto - price; if (dbInv.InvoiceTotal == null) { dbTotal.InvoiceSell = dbInv; this._db.Entry(dbTotal).State = EntityState.Added; } var dbPaymentTerms = dbInv.PaymentTerms ?? new PaymentTerms(); this._invoiceService.MapperPaymentTerms(dbPaymentTerms, tradeInfoDTO.PaymentTerms); if (dbInv.PaymentTerms == null) { dbPaymentTerms.InvoiceSell = dbInv; this._db.Entry(dbPaymentTerms).State = EntityState.Added; } if (dbInv.RatesValuesList == null || dbInv.RatesValuesList.Count == 0) { var dbRate = new RateValue(); dbRate.BruttoValue = brutto; dbRate.NettoValue = price; dbRate.VatRate = "23"; dbRate.VatValue = brutto - price; dbRate.InvoiceSell = dbInv; this._db.Entry(dbRate).State = EntityState.Added; } else { var dbRate = dbInv.RatesValuesList.FirstOrDefault(); dbRate.BruttoValue = brutto; dbRate.NettoValue = price; dbRate.VatRate = "23"; dbRate.VatValue = brutto - price; } if (dbInv.Seller == null) { dbInv.Seller = await this._companyService.Owner(); } dbInv.SellingDate = dto.TradeInfo.Date; var dbInvTotal = dbInv.InvoiceTotal ?? new InvoiceTotal(); dbInvTotal.TotalBrutto = brutto; dbInvTotal.TotalNetto = tradeInfoDTO.Price.Price; dbInvTotal.TotalTax = brutto - tradeInfoDTO.Price.Price; if (dbInv.InvoiceTotal == null) { dbInvTotal.InvoiceSell = dbInv; this._db.Entry(dbInvTotal).State = EntityState.Added; } }