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);
        }
Beispiel #3
0
        /// <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
        }
Beispiel #6
0
        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;
 }