protected void ReasonProvided_CheckedChanged(object sender, EventArgs e) { SubtotalAmount.Text = "0"; foreach (GridViewRow row in RefundInvoiceItems.Rows) { var item = new InvoiceDetailsViewModel { ProductID = row.FindHiddenField("ProductId").Value.ToInt(), Category = row.FindHiddenField("Category").Value, ItemName = row.FindLabel("ItemName").Text, Price = row.FindLabel("ItemPrice").Text.ToDecimal(), Quantity = row.FindLabel("Quantity").Text.ToInt(), Amount = row.FindLabel("Amount").Text.ToDecimal(), RestockCharge = row.FindLabel("RestockCharge").Text.ToDecimal(), RefundReason = row.FindTextBox("Reason").Text }; if (item.Category.Equals("Confectionary")) { MessageUserControl.ShowInfo("", "Confectionary items are non refundable"); row.FindCheckBox("ReasonProvided").Visible = false; row.FindTextBox("Reason").Visible = false; row.FindLabel("RestockCharge").Visible = false; } else { if (row.FindCheckBox("ReasonProvided").Checked&& !row.FindTextBox("Reason").Text.IsNullOrWhiteSpace()) { SubtotalAmount.Text = (SubtotalAmount.Text.ToDecimal() + item.Amount - item.RestockCharge).ToString(); } } } TaxAmount.Text = (SubtotalAmount.Text.ToDecimal() * (decimal)0.05).ToString(); TotalAmount.Text = (SubtotalAmount.Text.ToDecimal() + TaxAmount.Text.ToDecimal()).ToString(); }
/// <inheritdoc/> public async Task <InvoiceDetailsViewModel> SubmitOrder(OrderDetailsViewModel order) { // Update Order Status order.OrderStatus = OrderStatus.Submitted.ToString(); await this.CreateOrUpdateOrder(order).ConfigureAwait(false); // Create invoice InvoiceDetailsViewModel invoice = new InvoiceDetailsViewModel() { OrderId = order.Id, PaymentMode = order.PaymentMode, Products = order.Products, ShippingAddress = order.ShippingAddress, }; using var invoiceRequest = new StringContent(JsonSerializer.Serialize(invoice), Encoding.UTF8, ContentType); var invoiceResponse = await this.httpClient.PostAsync(new Uri($"{this.applicationSettings.InvoiceApiEndpoint}"), invoiceRequest).ConfigureAwait(false); if (!invoiceResponse.IsSuccessStatusCode) { await this.ThrowServiceToServiceErrors(invoiceResponse).ConfigureAwait(false); } invoice = await invoiceResponse.Content.ReadFromJsonAsync <InvoiceDetailsViewModel>().ConfigureAwait(false); return(invoice); }
/// <inheritdoc/> public async Task <InvoiceDetailsViewModel> AddInvoiceAsync(InvoiceDetailsViewModel invoice) { NotNullValidator.ThrowIfNull(invoice, nameof(invoice)); invoice.Id = Guid.NewGuid().ToString(); invoice.SoldBy = new SoldByViewModel() { Email = "*****@*****.**", Phone = "9876543210", SellerName = "Packt", }; using var invoiceRequest = new StringContent(JsonSerializer.Serialize(invoice), Encoding.UTF8, ContentType); var invoiceResponse = await this.httpClient.PostAsync(new Uri($"{this.applicationSettings.Value.DataStoreEndpoint}api/invoice"), invoiceRequest).ConfigureAwait(false); if (!invoiceResponse.IsSuccessStatusCode) { await this.ThrowServiceToServiceErrors(invoiceResponse).ConfigureAwait(false); } var createdInvoiceDAO = await invoiceResponse.Content.ReadFromJsonAsync <Packt.Ecommerce.Data.Models.Invoice>().ConfigureAwait(false); // Mapping var createdInvoice = this.autoMapper.Map <InvoiceDetailsViewModel>(createdInvoiceDAO); return(createdInvoice); }
protected void RefundButton_Command(object sender, CommandEventArgs e) { var list = new List <InvoiceDetailsViewModel>(); SubtotalAmount.Text = 0.ToString(); foreach (GridViewRow row in RefundInvoiceItems.Rows) { var item = new InvoiceDetailsViewModel { ProductID = row.FindHiddenField("ProductId").Value.ToInt(), Category = row.FindHiddenField("Category").Value, ItemName = row.FindLabel("ItemName").Text, Price = row.FindLabel("ItemPrice").Text.ToDecimal(), Quantity = row.FindLabel("Quantity").Text.ToInt(), Amount = row.FindLabel("Amount").Text.ToDecimal(), RestockCharge = row.FindLabel("RestockCharge").Text.ToDecimal(), RefundReason = row.FindTextBox("Reason").Text }; if (row.FindCheckBox("ReasonProvided").Checked&& !row.FindTextBox("Reason").Text.IsNullOrWhiteSpace()) { SubtotalAmount.Text = (SubtotalAmount.Text.ToDecimal() + item.Amount - item.RestockCharge).ToString(); list.Add(item); } } if (list.Count < 1) { MessageUserControl.ShowInfo("", "Please enter the reason and check the check box for items you want to return."); } else { TaxAmount.Text = (SubtotalAmount.Text.ToDecimal() * (decimal)0.05).ToString(); TotalAmount.Text = (SubtotalAmount.Text.ToDecimal() + TaxAmount.Text.ToDecimal()).ToString(); InvoiceViewModel currentInvoice = new InvoiceViewModel { InvoiceID = OriginalInvoiceValue.Text.ToInt(), InvoiceDate = DateTime.Now, Subtotal = SubtotalAmount.Text.ToDecimal() * -1, GST = TaxAmount.Text.ToDecimal() * -1, Total = TotalAmount.Text.ToDecimal() * -1, Products = list }; MessageUserControl.TryRun(() => { SalesController sysmgr = new SalesController(); int refundInvoiceId = sysmgr.Refund(currentInvoice, User.Identity.Name); RefundInvoiceNumber.Text = refundInvoiceId.ToString(); }, "", "Success: Refund complete. Press Clear to start a new refund." ); RefundInvoiceItems.Enabled = false; OriginalInvoiceValue.Enabled = false; LookupInvoiceButton.Enabled = false; RefundButton.Enabled = false; } }
public async Task <IActionResult> AddInvoiceAsync(InvoiceDetailsViewModel invoice) { // Invoice null check is to avoid null attribute validation error. if (invoice == null || invoice.Etag != null) { return(this.BadRequest()); } var result = await this.invoiceService.AddInvoiceAsync(invoice).ConfigureAwait(false); return(this.CreatedAtAction(nameof(this.GetInvoiceById), new { id = result.Id }, result)); // HATEOS principle }
public ActionResult InvoiceDetails(int id) { ViewData["InvoicesManagement"] = "active"; var service = invoicesService.GetInvoice(id); var viewModel = new InvoiceDetailsViewModel() { Invoice = invoicesService.GetInvoice(id), InvoiceJobs = jobsService.GetPOJobs(service.POId).Select(j => j.AutoMapObject <Job, JobDetailsViewModel>()).ToList(), InvoiceWorkflows = invoicesService.GetInvoiceWorkflows(id).ToList() }; return(View(viewModel)); }
protected void InvoiceItems_RowCommand(object sender, GridViewCommandEventArgs e) { int rowIndex = Convert.ToInt32(e.CommandArgument); List <InvoiceDetailsViewModel> invoiceProducts = GetInvoiceItemsFromGridView(); InvoiceDetailsViewModel invoiceItem = invoiceProducts[rowIndex]; if (e.CommandName == "DeleteFromInvoice") { invoiceProducts.Remove(invoiceItem); } InvoiceItems.DataSource = invoiceProducts; InvoiceItems.DataBind(); CalculateTotals(); }
InvoiceDetailsViewModel GetProductFromHiddenGridView() { GridViewRow row = SelectedProductGridView.Rows[0]; InvoiceDetailsViewModel item = new InvoiceDetailsViewModel { ProductID = row.FindLabel("ProductId").Text.ToInt(), ItemName = row.FindLabel("ItemName").Text, Price = row.FindLabel("ItemPrice").Text.ToDecimal(), Quantity = QuantityTextBox.Text.ToInt(), Amount = row.FindLabel("ItemPrice").Text.ToDecimal() * QuantityTextBox.Text.ToInt() }; return(item); }
public ViewModelLocator() { if (!DesignerProperties.GetIsInDesignMode(new DependencyObject())) { MainViewModel = new MainViewModel(); HomeViewModel = new HomeViewModel(); PaymentsViewModel = new PaymentsViewModel(); InvoiceViewModel = new InvoicesViewModel(); AddPaymentViewModel = new AddPaymentViewModel(); AddInvoiceViewModel = new AddInvoiceViewModel(); InvoiceDetailsViewModel = new InvoiceDetailsViewModel(); PaymentDetailsViewModel = new PaymentDetailsViewModel(); BalanceStatementViewModel = new BalanceStatementViewModel(); } }
/// <inheritdoc/> public async Task <InvoiceDetailsViewModel> GetInvoiceByIdAsync(string invoiceId) { InvoiceDetailsViewModel invoice = new InvoiceDetailsViewModel(); using var invoiceRequest = new HttpRequestMessage(HttpMethod.Get, $"{this.applicationSettings.InvoiceApiEndpoint}{invoiceId}"); var invoiceResponse = await this.httpClient.SendAsync(invoiceRequest).ConfigureAwait(false); if (!invoiceResponse.IsSuccessStatusCode) { await this.ThrowServiceToServiceErrors(invoiceResponse).ConfigureAwait(false); } if (invoiceResponse.StatusCode != System.Net.HttpStatusCode.NoContent) { invoice = await invoiceResponse.Content.ReadFromJsonAsync <InvoiceDetailsViewModel>().ConfigureAwait(false); } return(invoice); }
protected void AddButton_Click(object sender, EventArgs e) { if (QuantityTextBox.Text.Length < 1 || CategoryDropDown.SelectedIndex < 1) { MessageUserControl.ShowInfo("", "Please fill the necessary product details"); } else { if (QuantityTextBox.Text.ToInt() < 1) { MessageUserControl.ShowInfo("", "Please enter a minimum of 1 quantity for the item."); } else { InvoiceDetailsViewModel item = GetProductFromHiddenGridView(); List <InvoiceDetailsViewModel> invoiceItems = GetInvoiceItemsFromGridView(); bool existingItem = false; foreach (InvoiceDetailsViewModel member in invoiceItems) { if (item.ProductID == member.ProductID) { member.Quantity = member.Quantity + item.Quantity; member.Amount = member.Amount + item.Amount; existingItem = true; } } if (!existingItem) { invoiceItems.Insert(0, item); } InvoiceItems.DataSource = invoiceItems; InvoiceItems.DataBind(); CalculateTotals(); } } }
List <InvoiceDetailsViewModel> GetInvoiceItemsFromGridView() { var list = new List <InvoiceDetailsViewModel>(); foreach (GridViewRow row in InvoiceItems.Rows) { if (row.FindTextBox("Quantity").Text.Length < 1) { MessageUserControl.ShowInfo("", "Quantity can't be empty."); row.FindTextBox("Quantity").Text = "1"; } var item = new InvoiceDetailsViewModel { ProductID = row.FindHiddenField("ProductId").Value.ToInt(), ItemName = row.FindLabel("ItemName").Text, Price = row.FindLabel("ItemPrice").Text.ToDecimal(), Quantity = row.FindTextBox("Quantity").Text.ToInt(), Amount = row.FindLabel("Amount").Text.ToDecimal() }; list.Add(item); } return(list); }
public IActionResult Details(int id) { if (id < 1) { return(BadRequest()); } try { var clients = clientService.GetClients(); var orders = orderService.GetOrders(); var invoice = invoiceService.GetInvoiceById(id); var mappedInvoice = InvoiceMapper.MapToViewModel(invoice, invoice.Order, invoice.Client); var details = new InvoiceDetailsViewModel(ClientMapper.MapManyToViewModel(clients), OrderMapper.MapManyToViewModel(orders)); details.Invoice = mappedInvoice; return(View(details)); } catch (Exception ex) { return(NotFound(ex)); } }
public ActionResult Details(int id) { var invoice = db.Invoices.Include(x => x.CustomerModel) .Include(x => x.Products) .Include("Products.Product") .FirstOrDefault(x => x.Id == id); var company = db.Company.FirstOrDefault(); InvoiceDetailsViewModel vm = new InvoiceDetailsViewModel(); vm.Company = company; vm.Invoice = invoice; if (invoice != null && company != null) { return(View(vm)); } else { return(View()); } }
public static InvoiceDetailsViewModel ToDetailsViewModel(this Invoice source) { var destination = new InvoiceDetailsViewModel(); destination.BookingId = source.BookingId; destination.ServiceCost = source.ServiceCost; destination.GCT = source.GCT; destination.Total = source.Total; destination.Status = source.Status.ToString(); destination.BillingMode = source.BillingMode.ToString(); destination.AmountPaid = source.AmountPaid; destination.AmountDue = source.AmountDue; destination.DiscountType = source.DiscountType; destination.DiscountValue = source.DiscountValue; destination.DiscountAmount = source.DiscountAmount; if (source.Payments != null) { destination.Payments = source.Payments.ToList().ToListViewModel(); } return(destination); }
public InvoiceDetails() { objInvoiceDetailsViewModel = new InvoiceDetailsViewModel(); InitializeComponent(); this.DataContext = objInvoiceDetailsViewModel; }