public ActionResult InvoicePosition(InvoicePosition invoicePosition) { var userId = User.Identity.GetUserId();//dla bezpieczeństwa lepiej zawsze czytać na nowo usera z bazy var product = _productRepository.GetProduct(invoicePosition.ProductId); invoicePosition.Product = product; invoicePosition.Value = invoicePosition.Quantity * product.Value; //walidacja danych robimy przez ModeState //wymagania co do walidacji sa opisane w modelu np Required if (!ModelState.IsValid) { //przygotuj model dla widoku i wyśli poz fakturę oraz usera var vm = PrepareInvoicePositionVm(invoicePosition); //zwróć view invoicePosition oczywiście dla GET, nie dla POST return(View("InvoicePosition", vm)); } if (invoicePosition.Id == 0) { _invoiceRepository.AddPosition(invoicePosition, userId); } else { _invoiceRepository.UpdatePosition(invoicePosition, userId); } _invoiceRepository.UpdateInvoiceValue(invoicePosition.InvoiceId, userId); return(RedirectToAction("Invoice", new { id = invoicePosition.InvoiceId })); //zwracamy przekierowanie }
protected void ValidatePosition(InvoicePosition position) { if (string.IsNullOrWhiteSpace(position.Name)) { throw new MissingPositionNameException(); } if (position.NetValue <= 0) { throw new PositionNetValueMustBePositiveException(); } if (position.GrossValue <= 0) { throw new PositionGrossValueMustBePositiveException(); } if (position.VatRate >= 0 && position.VatRate < 1) { throw new WrongVatRateException(position.VatRate); } var grossValue = VatValueCalculator.CalculateGrossValue(position.NetValue, position.VatRate); if (position.GrossValue != grossValue) { throw new WrongPositionGrossValueException(position.NetValue, position.VatRate, position.GrossValue); } }
public void Will_Return_TaxValue(decimal taxMultiplier, decimal value, CalculationDirection direction, decimal expected) { var taxInfo = new TaxInfo("test", taxMultiplier); var position = new InvoicePosition(1, "", 1, taxInfo, value, string.Empty); position.GetTaxValue(direction).ShouldBe(expected); }
public ActionResult InvoicePosition(InvoicePosition invoicePosition) { var userId = User.Identity.GetUserId(); var product = _productRepository .GetProduct(invoicePosition.ProductId); if (!ModelState.IsValid) { var vm = PrepareInvoicePositionVm(invoicePosition); return(View("IvoicePosition", vm)); } invoicePosition.Value = invoicePosition.Quantity * product.Value; if (invoicePosition.Id == 0) { _invoiceRepository.AddPosition(invoicePosition, userId); } else { _invoiceRepository.UpdatePosition(invoicePosition, userId); } _invoiceRepository.UpdateInvoiceValue(invoicePosition.InvoiceId, userId); return(RedirectToAction("Invoice", new { id = invoicePosition.InvoiceId })); }
public override void AddItem(InvoicePosition invoicePosition) { Invoice.ItemList.Add(invoicePosition); WriteLine($"Added: {invoicePosition.Name} | ActualPrice: {invoicePosition.Price}."); Invoice.UpdateState(new NewState(Invoice)); WriteLine("State updated to NewState."); }
public ActionResult InvoicePositionDeleteConfirmed(long idpos) { InvoicePosition pos = db.InvoicePosition.FirstOrDefault(x => x.Id == idpos); db.InvoicePosition.Remove(pos); db.SaveChanges(); TempData["msg"] = "<script>alert('Pozycja została usunięta');</script>"; return(RedirectToAction("ImportInvoicePos", new { id = pos.Id })); }
public void Add(IInvoicePosition position) { position.CheckArgument(nameof(position)); var pos = new InvoicePosition(); pos.CopyProperties(position); PositionEntities.Add(pos); }
private EditInvoicePositionViewModel PrepareInvoicePositionVm(InvoicePosition invoicePosition) { return(new EditInvoicePositionViewModel { InvoicePosition = invoicePosition, Heading = invoicePosition.Id == 0 ? "Dodawanie nowej pozycji" : "Pozycja", Products = _productRepository.GetProduts() }); }
public void Will_Throw_For_Ordinal_Numbers_Not_In_Sequence() { var invoice = GenerateEmptyTestInvoice(); var taxInfo = new TaxInfo("test", 0.23m); var position1 = new InvoicePosition(1, "p1", 2, taxInfo, 100, "pc"); var position2 = new InvoicePosition(3, "p2", 1, taxInfo, 400, "pc"); Assert.Throws <InvalidOperationException>(() => invoice.SetPositions(new() { position1, position2 })); }
public ActionResult InvoicePositionEdit(InvoicePositionViewModel invoicePosition) { if (ModelState.IsValid) { InvoicePosition IP = FromViewToModelPosition(invoicePosition); db.Entry(IP).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("ImportInvoicePos", new { id = IP.InvoiceId, idpos = IP.Id })); } return(View(invoicePosition)); }
public void AddPosition(InvoicePosition invoicePosition, string userId) { using (var context = new ApplicationDbContext()) { var invoice = context.Invoices.Single(x => x.Id == invoicePosition.InvoiceId && x.UserId == userId); context.InvoicePositions.Add(invoicePosition); context.SaveChanges(); } }
public ActionResult InvoicePositionCreate(InvoicePositionViewModel invPVM) { if (ModelState.IsValid) { InvoicePosition invP = FromViewToModelPosition(invPVM); db.InvoicePosition.Add(invP); db.SaveChanges(); return(RedirectToAction("ImportInvoicePos", new { id = invP.InvoiceId, idpos = invP.Id })); } return(View(invPVM)); }
public void AddPosition(InvoicePosition invoicePosition, string userId) { using (var context = new ApplicationDbContext()) { //sprawdzamy czy user robił wcześniej tą fakturę i czy może ją teraz zmienić //jeśli nie ma t'akiego rekordu wtedy zostanie rzucony wyjątek var invoice = context.Invoices .Single(x => x.Id == invoicePosition.InvoiceId && x.UserId == userId); context.InvoicePositions.Add(invoicePosition); context.SaveChanges(); } }
public void Will_Set_Invoice_Positions() { var invoice = GenerateEmptyTestInvoice(); var taxInfo = new TaxInfo("test", 0.23m); var position1 = new InvoicePosition(1, "p1", 2, taxInfo, 100, "pc"); var position3 = new InvoicePosition(3, "p2", 1, taxInfo, 400, "pc"); var position2 = new InvoicePosition(2, "p2", 1, taxInfo, 100, "pc"); invoice.SetPositions(new() { position1, position2, position3 }); invoice.InvoicePositions.Count.ShouldBe(3); invoice.TotalNetValue.ShouldBe(700); }
public void CopyProperties(IInvoice other) { other.CheckArgument(nameof(other)); other.InvoiceHead.CheckArgument(nameof(other)); other.InvoicePositions.CheckArgument(nameof(other)); HeadEntity.CopyProperties(other.InvoiceHead); PositionEntities.Clear(); foreach (var item in other.InvoicePositions) { var pos = new InvoicePosition(); pos.CopyProperties(item); PositionEntities.Add(pos); } }
internal virtual IEnumerable <InvoicePosition> Calculate(Contract contract, PriceList priceList) { int pos = 1; foreach (var conPos in contract.Positions.GroupBy(x => x.Type)) { var invPos = new InvoicePosition { Amount = conPos.Sum(x => x.Amount), Number = pos, UnitPrice = priceList[conPos.Key], PosPrice = conPos.Sum(x => x.Amount) * priceList[conPos.Key] }; pos++; yield return(invPos); } }
public void UpdatePosition(InvoicePosition invoicePosition, string userId) { using (var context = new ApplicationDbContext()) { var positionToUpdate = context.InvoicePositions .Include(x => x.Product) .Include(x => x.Invoice) .Single(x => x.Id == invoicePosition.Id && x.Invoice.UserId == userId); positionToUpdate.Lp = invoicePosition.Lp; positionToUpdate.ProductId = invoicePosition.ProductId; positionToUpdate.Quantity = invoicePosition.Quantity; positionToUpdate.Value = invoicePosition.Product.Value * invoicePosition.Value; context.SaveChanges(); } }
public InvoicePosition FromViewToModelPosition(InvoicePositionViewModel invoicePositionViewModel) { InvoicePosition newPosition = new InvoicePosition() { InvoiceId = invoicePositionViewModel.InvoiceId, Id = invoicePositionViewModel.Id, PositionNumber = invoicePositionViewModel.PositionNumber, Itemnumber = invoicePositionViewModel.Itemnumber, Quantity = invoicePositionViewModel.Quantity, Price = invoicePositionViewModel.Price, UnitOfMeasure = invoicePositionViewModel.UnitOfMeasure, Weight = invoicePositionViewModel.Weight, HSCode = invoicePositionViewModel.HSCode, AdditionalCost = invoicePositionViewModel.AdditionalCost, TransportsCost = invoicePositionViewModel.TransportsCost, CountryOfOrigin = invoicePositionViewModel.CountryOfOrigin }; return(newPosition); }
public InvoicePositionViewModel FromModelToViewPosition(InvoicePosition invoicePosition) { InvoicePositionViewModel newPosition = new InvoicePositionViewModel() { InvoiceId = invoicePosition.InvoiceId, Id = invoicePosition.Id, PositionNumber = invoicePosition.PositionNumber, Itemnumber = invoicePosition.Itemnumber, Quantity = invoicePosition.Quantity, Price = invoicePosition.Price, UnitOfMeasure = invoicePosition.UnitOfMeasure, Weight = invoicePosition.Weight, HSCode = invoicePosition.HSCode, AdditionalCost = invoicePosition.AdditionalCost, TransportsCost = invoicePosition.TransportsCost, CountryOfOrigin = invoicePosition.CountryOfOrigin }; return(newPosition); }
public ActionResult InvoicePositionDetails(long?id) { if (User.Identity.IsAuthenticated) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } InvoicePosition invoicePosition = db.InvoicePosition.FirstOrDefault(x => x.Id == id); if (invoicePosition == null) { return(HttpNotFound()); } return(View(invoicePosition)); } else { return(RedirectToAction("Login", "Account")); } }
public ActionResult InvoicePosition(InvoicePosition invoicePosition) { var userId = User.Identity.GetUserId();//dla bezpieczeństwa lepiej zawsze czytać na nowo usera z bazy var product = _productRepository.GetProduct(invoicePosition.ProductId); invoicePosition.Value = invoicePosition.Quantity * product.Value; if (invoicePosition.Id == 0) { _invoiceRepository.AddPosition(invoicePosition, userId); } else { _invoiceRepository.UpdatePosition(invoicePosition, userId); } _invoiceRepository.UpdateInvoiceValue(invoicePosition.InvoiceId, userId); return(RedirectToAction("Invoice", new { id = invoicePosition.InvoiceId })); //zwracamy przekierowanie }
public async Task <IInvoice> InsertAsync(IInvoice entity) { entity.CheckArgument(nameof(entity)); entity.InvoiceHead.CheckArgument(nameof(entity)); entity.InvoicePositions.CheckArgument(nameof(entity)); var invoice = new Invoice(); invoice.HeadEntity.CopyProperties(entity.InvoiceHead); await headController.InsertAsync(invoice.HeadEntity); foreach (var item in entity.InvoicePositions) { var pos = new InvoicePosition(); pos.CopyProperties(item); pos.InvoiceHead = invoice.HeadEntity; await positionController.InsertAsync(item); invoice.Add(item); } return(invoice); }
public override void AddItem(InvoicePosition invoicePosition) => WriteLine("Can't add items to accepted invoices.");
public void Will_Return_Value_When_Direction_Is_GrossToNet() { var position = new InvoicePosition(1, "", 1, _taxInfo, 123, ""); position.GetGrossValue(CalculationDirection.GrossToNet).ShouldBe(123m); }
public override void AddItem(InvoicePosition invoicePosition) { Console.WriteLine($"Added: {invoicePosition.Name} | ActualPrice: {invoicePosition.Price}."); Invoice.ItemList.Add(invoicePosition); }
public void Will_Return_Value_When_Direction_Is_NetToGross() { var position = new InvoicePosition(1, "", 2, _taxInfo, 100, ""); position.GetTotalNetValue(CalculationDirection.NetToGross).ShouldBe(200m); }
public override void AddItem(InvoicePosition invoicePosition) { Console.WriteLine("Can't add items to posted invoices."); }
public static bool Update(InvoicePosition InvoicePosition) { return(WebApi <bool> .PutAsync(controllerName, InvoicePosition, "Put").Result); }
public static int Insert(InvoicePosition InvoicePosition) { return(WebApi <int> .PostAsync(controllerName, InvoicePosition, "SinglePost").Result); }