Exemple #1
0
 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;
 }
Exemple #2
0
        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;
            }
        }