Exemple #1
0
        public InvoiceItemList addItemList( SalesOrderItemList salesOrderLines)
        {
            InvoiceItemList invItemList = new InvoiceItemList();

            int i = 0;
            InvoiceItem[] Items = new InvoiceItem[salesOrderLines.item.Count()];

            foreach (var itemLine in salesOrderLines.item)
            {
                Items[i] = new InvoiceItem();
                RecordRef item = new RecordRef();
                item.type = RecordType.inventoryItem;
                item.typeSpecified = true;
                // item.internalId = "1229";
                item.internalId = salesOrderLines.item[i].item.internalId;
                Items[i].item = item;

                RecordRef prLevel = new RecordRef();
                prLevel.type = RecordType.priceLevel;
                prLevel.internalId = "-1";
                prLevel.typeSpecified = true;

                Items[i].price = prLevel;
                Items[i].rate = Convert.ToString(salesOrderLines.item[i].rate);
                Items[i].quantity = salesOrderLines.item[i].quantity;
                Items[i].quantitySpecified = true;
                i++;
            }
            invItemList.item = Items;
            return invItemList;
        }
 public InvoiceItem Update(InvoiceItem invoiceItem)
 {
     _invoiceItems.Attach(invoiceItem);
     _repository.Entry(invoiceItem).State = EntityState.Modified;
     _repository.SaveChanges();
     _repository.Entry(invoiceItem).GetDatabaseValues();
     return invoiceItem;
 }
        public InvoiceItem Insert(InvoiceItem invoiceItem)
        {
            Product myProduct = _products.SingleOrDefault(i => i.ProductId == invoiceItem.ProductId);
            if (myProduct == null)
                throw new BusinessLogicException(string.Format("Error when trying to add an invoice item for product #{0}. No product with that ID exists.", invoiceItem.ProductId));

            invoiceItem.IsProductTaxable = myProduct.IsTaxable;
            invoiceItem.ProductDescription = myProduct.Description;

            _invoiceItems.Add(invoiceItem);
            _repository.SaveChanges();
            _repository.Entry(invoiceItem).GetDatabaseValues();
            return invoiceItem;
        }
        private Customer SetupTestSituation()
        {
            var lynn = new Customer() { Name = "Lynn" };

            //with 2 completed orders
            var order = new Invoice() { Customer = lynn, Number = "A1201" };
            var item = new InvoiceItem() { Invoice = order, Name = "Hiking Boots", Price = 59.99m, Shipped = true };
            var order1 = new Invoice() { Customer = lynn, Number = "A1202" };
            var item1 = new InvoiceItem() { Invoice = order1, Name = "dress", Price = 159.99m, Shipped = true };

            //2 partial orders and 1 pending order
            order = new Invoice() { Customer = lynn, Number = "A1203" };
            item = new InvoiceItem() { Invoice = order, Name = "Hiking Boots", Price = 9.99m, Shipped = false };
            item = new InvoiceItem() { Invoice = order, Name = "boots", Price = 129.99m, Shipped = true };

            order = new Invoice() { Customer = lynn, Number = "A1205" };
            item = new InvoiceItem() { Invoice = order, Name = "hat", Price = 9.99m, Shipped = false };
            item = new InvoiceItem() { Invoice = order, Name = "watch", Price = 129.99m, Shipped = false };
            return lynn;
        }
Exemple #5
0
        public void CalculateGrossAmount_IncorrectVat_IncorrectGrossAmount()
        {
            //Arrange
            var       invoiceItem       = new InvoiceItem();
            int       vatParamter       = 120;
            Exception expectedException = null;

            //Act
            try
            {
                invoiceItem.SetVatRate(vatParamter);
            }
            catch (Exception ex)
            {
                expectedException = ex;
            }

            //Assert
            Assert.NotEqual(vatParamter, invoiceItem.GetVatRate());
        }
        private void dgvInvoiceItems_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex != -1 && e.RowIndex != dgvInvoiceItems.Rows.Count - 1)
            {
                selectedItemID = int.Parse(dgvInvoiceItems.Rows[e.RowIndex].Cells[0].Value.ToString());
                string      Code = dgvInvoiceItems.Rows[e.RowIndex].Cells[1].Value.ToString();
                InvoiceItem i    = InvoiceItems_DbCommunication.GetItem(Code);

                tbCode.Text     = i.Code;
                tbName.Text     = i.Name;
                tbTax.Text      = i.Tax.ToString();
                tbUnit.Text     = i.Unit;
                tbPrice.Text    = dgvInvoiceItems.Rows[e.RowIndex].Cells[4].Value.ToString();
                tbQuantity.Text = dgvInvoiceItems.Rows[e.RowIndex].Cells[3].Value.ToString();
            }
            else
            {
                ClearTextBoxes();
            }
        }
Exemple #7
0
        public InvoiceItem ToEntity()
        {
            var entity = new InvoiceItem();

            entity.Id            = Id;
            entity.Description   = Description;
            entity.Quantity      = Quantity;
            entity.InvoiceId     = InvoiceId;
            entity.DbStatus      = (int)DbStatus;
            entity.UnitPrice     = (decimal)UnitPrice;
            entity.PercentageVAT = PercentageVAT;
            entity.AmountVAT     = (decimal)AmountVAT;
            entity.TotalPrice    = (decimal)TotalPrice;
            entity.DbStatus      = (int)DbStatus;
            entity.CreatedBy     = CreatedBy != null ? CreatedBy.Id : -1;
            entity.CreatedDate   = CreatedDate;
            entity.UpdatedBy     = UpdatedBy?.Id;
            entity.UpdatedDate   = UpdatedDate;
            return(entity);
        }
        public void AddInvoiceItem(int invoiceId, InvoiceItemDto item)
        {
            var invoiceItem = new InvoiceItem()
            {
                Name        = item.Name,
                Description = item.Description,
                Amount      = item.Amount,
                Quantity    = item.Quantity,
                InvoiceId   = invoiceId
            };

            _dbInvoiceItem.Add(invoiceItem);
            _dbInvoiceItem.Save();
            var invoice     = _dbInvoice.GetAll().First(x => x.Id == invoiceId);
            var amountToAdd = (invoiceItem.Amount * invoiceItem.Quantity);

            invoice.TotalAmount = invoice.TotalAmount + amountToAdd;
            _dbInvoice.Edit(invoice);
            _dbInvoice.Save();
        }
Exemple #9
0
        public void SetVatRate_IncorrectVatParameter_ExceptionOccured()
        {
            //Arrange
            var       invoiceItem       = new InvoiceItem();
            int       vatParamter       = 120;
            Exception expectedException = null;

            //Act
            try
            {
                invoiceItem.SetVatRate(vatParamter);
            }
            catch (Exception ex)
            {
                expectedException = ex;
            }

            //Assert
            Assert.NotNull(expectedException);
        }
        public async Task <ActionResult <InvoiceItem> > Post([FromBody] InvoiceItem value)
        {
            try
            {
                if (value == null) //TODO: add validators
                {
                    return(new BadRequestResult());
                }

                var newInvoice     = _invoiceMapper.Map(value);
                var updatedInvoice = await _invoiceRepository.AddAsync(newInvoice);

                var createdInvoiceItem = _invoiceItemMapper.Map(updatedInvoice);
                return(new OkObjectResult(createdInvoiceItem));
            }
            catch (Exception e) //TODO middleware
            {
                return(_errorService.Catch(e));
            }
        }
Exemple #11
0
        public ActionResult Update(Guid id, InvoiceItemApiModel invoiceItemApiModel)
        {
            try
            {
                ApiResponse serviceResponse = this._invoiceItemService.GetSingle(id);
                if (serviceResponse.IsSuccess() == false)
                {
                    return(new ObjectNotFoundResult(serviceResponse));
                }

                InvoiceItem invoiceItem = serviceResponse.GetData <InvoiceItem>();
                _invoiceItemMapper.Map(invoiceItemApiModel, invoiceItem);
                serviceResponse = this._invoiceItemService.Update(invoiceItem);
                return(SendResponse(serviceResponse));
            }
            catch (Exception ex)
            {
                return(new UnknownErrorResult(ex, base._errorEnabled));
            }
        }
 public static InvoiceItemDTO ToDTO(this InvoiceItem invoiceItem)
 {
     return(new InvoiceItemDTO
     {
         ID = invoiceItem.ID,
         SequenceNo = invoiceItem.SequenceNo,
         Discount = 0,
         GST = invoiceItem.GST,
         Amount = invoiceItem.Amount,
         Total = invoiceItem.Amount + invoiceItem.GST,
         Description = invoiceItem.Description != null?invoiceItem.Description.Trim() : null,
                           InvoiceType = invoiceItem.InvocieType,
                           InvoiceID = invoiceItem.InvoiceID,
                           Concurrency = invoiceItem.Concurrency,
                           CreateDate = invoiceItem.CreateDate,
                           ChangeDate = invoiceItem.ChangeDate,
                           JsonInvoiceItem = invoiceItem.JsonInvoiceItem != null?invoiceItem.JsonInvoiceItem.ToDTO() : null,
                                                 ProductInvoiceItem = invoiceItem.ProductInvoiceItem != null?invoiceItem.ProductInvoiceItem.ToDTO() : null
     });
 }
        // GET: InvoiceItems/Create
        public IActionResult Create(int?InvoiceId, int?ItemId)
        {
            InvoiceItem invoiceItem = new InvoiceItem((int)InvoiceId);

            if (ItemId != null && ItemId != 0)
            {
                Item item = _context.Item.Include(i => i.VAT).Include(i => i.UnitOfMeasure).Single(p => p.Id == ItemId);
                invoiceItem.Quantity = 1;
                invoiceItem.Name     = item.Name;
                invoiceItem.Price    = item.Price;
                //decimal formatedPrice = decimal.Parse(item.Price.ToString(), System.Globalization.NumberStyles.Currency);
                //invoiceItem.Price = formatedPrice;

                invoiceItem.UnitOfMeasureShortName = item.UnitOfMeasure.ShortName;
                invoiceItem.VATValue = item.VAT.Value;
            }

            ViewData["ItemId"] = new SelectList(_context.Item, "Id", "Name");
            return(View(invoiceItem));
        }
    public List <InvoiceItem> SelectAllInvoiceItem()
    {
        this.connection.Open();
        string select = "SELECT * FROM \"purchase\" FULL JOIN \"orderitem\" ON purchase.Id = orderitem.Id";

        this.command = new NpgsqlCommand(select, this.connection);
        NpgsqlDataReader   reader   = this.command.ExecuteReader();
        List <InvoiceItem> invoices = new List <InvoiceItem>();

        while (reader.Read())
        {
            InvoiceItem item = new InvoiceItem((int)reader.GetValue(6), (string)reader.GetValue(8), (string)reader.GetValue(9), (int)reader.GetValue(10), (double)reader.GetValue(11));
            item.Id = (int)reader.GetValue(5);
            invoices.Add(item);
        }

        reader.Close();
        this.connection.Close();

        return(invoices);
    }
Exemple #15
0
        public static InvoiceItem GetItem(string Code)
        {
            InvoiceItem   item = new InvoiceItem();
            SQLiteCommand cmd  = new SQLiteCommand($"SELECT * FROM Products WHERE Шифра='{Code}'", connection);

            connection.Open();

            DataTable         dt      = new DataTable();
            SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd);

            adapter.Fill(dt);

            item.Code = dt.Rows[0].ItemArray[1].ToString();
            item.Name = dt.Rows[0].ItemArray[2].ToString();
            item.Unit = dt.Rows[0].ItemArray[3].ToString();
            item.Tax  = decimal.Parse(dt.Rows[0].ItemArray[4].ToString());

            connection.Close();

            return(item);
        }
Exemple #16
0
        public void InsertInvoiceItem_EmptyUnit_ExceptionOccured()
        {
            //Arrange
            InvoiceItem invoiceItem = PrepareInvoiceItem();

            invoiceItem.Unit = string.Empty;
            Exception expectedException = null;

            //Act
            try
            {
                DBService.InsertInvoiceItem(invoiceItem);
            }
            catch (Exception ex)
            {
                expectedException = ex;
            }

            //Assert
            Assert.NotNull(expectedException);
        }
Exemple #17
0
        public void InsertInvoiceItem_ZeroAmountGross_ExceptionOccured()
        {
            //Arrange
            InvoiceItem invoiceItem = PrepareInvoiceItem();

            invoiceItem.AmountGross = 0;
            Exception expectedException = null;

            //Act
            try
            {
                DBService.InsertInvoiceItem(invoiceItem);
            }
            catch (Exception ex)
            {
                expectedException = ex;
            }

            //Assert
            Assert.NotNull(expectedException);
        }
Exemple #18
0
        public InvoiceItemForm(InvoiceItem item)
        {
            InitializeComponent();
            this.InvoiceItem = item;

            buttonFindItem.Click += delegate {
                OnItemFind(new ItemEventArgs(new Item(textBoxName.Text)));
            };
            textBoxName.KeyDown += delegate(object sender, KeyEventArgs e) {
                if (e.KeyCode == Keys.Enter)
                {
                    buttonFindItem.PerformClick();
                }
            };
            textBoxQuantity.KeyDown += delegate(object sender, KeyEventArgs e) {
                if (e.KeyCode == Keys.Enter)
                {
                    buttonOk.PerformClick();
                }
            };
        }
Exemple #19
0
        public void SetVatRate_IncorrectVatParameter_CorrectExceptionType()
        {
            //Arrange
            var       invoiceItem                 = new InvoiceItem();
            int       vatParamter                 = 120;
            Exception expectedException           = null;
            var       argumentOutOfRangeException = new ArgumentOutOfRangeException();

            //Act
            try
            {
                invoiceItem.SetVatRate(vatParamter);
            }
            catch (Exception ex)
            {
                expectedException = ex;
            }

            //Assert
            Assert.AreEqual(argumentOutOfRangeException.GetType(), expectedException.GetType());
        }
Exemple #20
0
        public void InsertInvoiceItem_NullName_ExceptionOccured()
        {
            //Arrange
            InvoiceItem invoiceItem = PrepareInvoiceItem();

            invoiceItem.Name = null;
            Exception expectedException = null;

            //Act
            try
            {
                DBService.InsertInvoiceItem(invoiceItem);
            }
            catch (Exception ex)
            {
                expectedException = ex;
            }

            //Assert
            Assert.IsNotNull(expectedException);
        }
Exemple #21
0
        /// <summary>
        /// Редактирование элемента накладной
        /// </summary>
        private void DoEditItem_Execute(object sender, ExecutedRoutedEventArgs e)
        {
            InvoiceItem item = dataGrid.SelectedItem as InvoiceItem;

            EditItemCountWindow view = (CurrentInvoice.IsPurchase) ? new EditItemCountWindow(item.Count, item.Product.ProductCode, item.Product.Nomination, true, item.ProductCost, item.ProductCoupon) : new EditItemCountWindow(item.Count, item.Product.ProductCode, item.Product.Nomination, item.Product.AllowedCount, false);

            view.Owner = this;

            if ((bool)view.ShowDialog())
            {
                Mouse.OverrideCursor = Cursors.Wait;

                item.Count = view.NewCount;

                if (CurrentInvoice.IsPurchase)
                {
                    item.ProductCost   = view.NewCost;
                    item.ProductCoupon = view.NewCoupon;
                }

                view.Close();

                if (item.EditItem(CurrentInvoice.IsPurchase))
                {
                    CurrentInvoice.Calc();

                    CurrentInvoice.EditInvoice();

                    dataGrid.Items.Refresh();

                    Dialog.TransparentMessage(this, "Операция выполнена");
                }

                Mouse.OverrideCursor = null;
            }
            else
            {
                view.Close();
            }
        }
        private ModificationInvoice GetModificationInvoice()
        {
            var amounts     = GetItemAmounts(amount: 100, exchangeRate: 300);
            var unitAmounts = GetItemAmounts(amount: 100, exchangeRate: 300);
            var item        = new InvoiceItem(
                consumptionDate: new DateTime(2020, 08, 30),
                totalAmounts: amounts,
                description: Description.Create("NIGHT 8/30/2020").Success.Get(),
                measurementUnit: MeasurementUnit.Night,
                quantity: -1,
                unitAmounts: unitAmounts,
                exchangeRate: ExchangeRate.Create(300).Success.Get()
                );

            var amounts1     = GetItemAmounts(amount: 100, exchangeRate: 300);
            var unitAmounts1 = GetItemAmounts(amount: 100, exchangeRate: 300);
            var item1        = new InvoiceItem(
                consumptionDate: new DateTime(2020, 08, 31),
                totalAmounts: amounts1,
                description: Description.Create("NIGHT2 8/31/2020").Success.Get(),
                measurementUnit: MeasurementUnit.Night,
                quantity: 1,
                unitAmounts: unitAmounts1,
                exchangeRate: ExchangeRate.Create(300).Success.Get()
                );

            return(new ModificationInvoice(
                       number: InvoiceNumber.Create("ABC-18abfcefsaa").Success.Get(),
                       supplierInfo: GetSupplierInfo(),
                       customerInfo: GetCustomerInfo(),
                       items: Sequence.FromPreordered(new[] { item, item1 }, startIndex: 1).Get(),
                       currencyCode: CurrencyCode.Create("USD").Success.Get(),
                       issueDate: new DateTime(2020, 08, 31),
                       paymentDate: new DateTime(2020, 08, 31),
                       itemIndexOffset: 4,
                       modificationIndex: 4,
                       modifyWithoutMaster: true,
                       originalDocumentNumber: InvoiceNumber.Create("ABC-18afasadafa").Success.Get()
                       ));
        }
Exemple #23
0
        public bool Update(InvoiceItem invoiceItem)
        {
            try
            {
                var local = _uow.Set <InvoiceItem>()
                            .Local
                            .FirstOrDefault(f => f.ID == invoiceItem.ID);
                if (local != null)
                {
                    _uow.Entry(local).State = EntityState.Detached;
                }

                _invoiceItems.Attach(invoiceItem);

                _uow.Entry(invoiceItem).State = EntityState.Modified;
                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
 private static Dto.LineAmountsNormalType MapLineAmounts(InvoiceItem item)
 {
     return(new Dto.LineAmountsNormalType
     {
         lineGrossAmountData = new Dto.LineGrossAmountDataType
         {
             lineGrossAmountNormal = item.TotalAmounts.Amount.Gross.Value,
             lineGrossAmountNormalHUF = item.TotalAmounts.AmountHUF.Gross.Value
         },
         lineNetAmountData = new Dto.LineNetAmountDataType
         {
             lineNetAmount = item.TotalAmounts.Amount.Net.Value,
             lineNetAmountHUF = item.TotalAmounts.AmountHUF.Net.Value
         },
         lineVatRate = GetVatRate(item.TotalAmounts.TaxRatePercentage),
         lineVatData = new Dto.LineVatDataType
         {
             lineVatAmount = item.TotalAmounts.Amount.Tax.Value,
             lineVatAmountHUF = item.TotalAmounts.AmountHUF.Tax.Value
         }
     });
 }
Exemple #25
0
        public InvoiceItem Map(InvoiceItemViewModel invoice_item_vm)
        {
            var address_proxy    = _service_fact.CreateClient <IAddressService>();
            var product_proxy    = _service_fact.CreateClient <IProductService>();
            var invoice_proxy    = _service_fact.CreateClient <IInvoiceService>();
            var employee_service = _service_fact.CreateClient <IEmployeeService>();
            var type_service     = _service_fact.CreateClient <ITypeService>();

            var orderItem = new InvoiceItem()
            {
                InvoiceItemKey      = invoice_item_vm.InvoiceItemKey,
                InvoiceKey          = invoice_item_vm.InvoiceKey,
                InvoiceItemSeq      = invoice_item_vm.InvoiceItemSeq,
                ProductKey          = invoice_item_vm.ProductKey,
                ProductName         = invoice_item_vm.ProductName,
                ProductDesc         = invoice_item_vm.ProductDesc,
                InvoiceItemQuantity = invoice_item_vm.Quantity,
                //InvoiceItemShipToAddress = order_item_data.ShiptoAddrKey,
                OrderItemShipToAddress = address_proxy.GetAddress(invoice_item_vm.InvoiceItemShipAddress.AddressKey),
                //InvoiceItemBillToAddress = order_item_data.BilltoAddrKey,
                OrderItemBillToAddress = address_proxy.GetAddress(invoice_item_vm.InvoiceItemBillAddress.AddressKey),
                //InvoiceItemShipDate = invoice_item_vm.InvoiceItemShipDate,
                //InvoiceItemCompleteDate = invoice_item_vm.InvoiceItemCompleteDate,
                ItemPricePer       = invoice_item_vm.InvoiceItemPrice,
                InvoiceItemLineSum = invoice_item_vm.InvoiceLineTotal,
                InvoiceItemStatus  = (QIQOInvoiceItemStatus)type_service.GetInvoiceItemStatusList()
                                     .Where(key => key.InvoiceItemStatusName == invoice_item_vm.InvoiceItemStatus)
                                     .FirstOrDefault().InvoiceItemStatusKey,
                //Product
                InvoiceItemProduct = product_proxy.GetProduct(invoice_item_vm.ProductKey),

                //Account Rep
                AccountRep = employee_service.GetAccountRepsByCompany(1)[0],
                //Sales Rep
                SalesRep = employee_service.GetSalesRepsByCompany(1)[0]
            };

            return(orderItem);
        }
Exemple #26
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void InvoiceGrid_DoubleTapped(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            FrameworkElement element = null;

            if ((element = e.OriginalSource as FrameworkElement) != null)
            {
                m_selectedIndex = Grid.GetRow(element);
            }
            InvoiceItem invoiceItem          = m_items[m_selectedIndex];
            int         selectedProductIndex = m_productList.IndexOf(m_productList[invoiceItem.ItemName]);

            m_fieldsPopup = new InputDetailView(invoiceItem, "Edit the Fields", m_productList, selectedProductIndex);
            m_fieldsPopup.UpdateRequested += EditDialog_UpdateRequested;
            m_fieldsPopup.CloseRequested  += EditDialog_CloseRequested;
            m_fieldsPopup.lblTitle.Content = "Edit the Fields";
            RootGrid.Opacity      = 0.2;
            m_fieldsPopup.Opacity = 1;
            m_fieldsPopup.ShowDialog();
            RootGrid.Opacity = 1;

            //FrameworkElement element = null;
            //if ((element = e.OriginalSource as FrameworkElement) != null)
            //{
            //    m_selectedIndex = Grid.GetRow(element);
            //}
            //InvoiceItem invoiceItem = m_items[m_selectedIndex];
            //int selectedProductIndex = m_productList.IndexOf(m_productList[invoiceItem.Description]);

            ////m_fieldsPopup = new InputDetailView(invoiceItem, "Edit the Fields", m_productList, selectedProductIndex);


            //m_fieldsPopup.UpdateRequested += EditDialog_UpdateRequested;
            //m_fieldsPopup.CloseRequested += EditDialog_CloseRequested;
            //m_fieldsPopup.lblTitle.Content = "Edit the Fields";
            //RootGrid.Opacity = 0.2;
            //m_fieldsPopup.Opacity = 1;
            //m_fieldsPopup.ShowDialog();
            //RootGrid.Opacity = 1;
        }
        public void PostInvoiceItemTest()
        {
            InvoiceItem item = new InvoiceItem()
            {
                Amount     = 2,
                TotalPrice = 0,
                ServiceId  = Guid.Parse("BCAD3EFE-2064-4D20-BDC3-5881A8AA1B2C"),
                InvoiceId  = Guid.Parse("75A3489C-6321-4D5C-9061-1AABA0FC8BBA"),
                PIN        = "99888776655"
            };

            int itemBefore = _context.InvoiceItem.Count();

            _InvoiceItemController.PostInvoiceItem(item);
            Assert.IsNotNull(_context.InvoiceItem.FirstOrDefault(x => x.PIN == item.PIN), "Null. No items in DB.");
            int itemsAfter = _context.InvoiceItem.Count();

            Assert.AreNotEqual(itemBefore, itemsAfter, "Number of inovice item is equal before and after insert.");

            _context.InvoiceItem.Remove(item);
            _context.SaveChanges();
        }
Exemple #28
0
        private void AmountTextBox_LostFocus(object sender, RoutedEventArgs e)
        {
            double NewAmount;

            if (double.TryParse(AmountTextBox.Text, out NewAmount) && NewAmount != OriginalAmount)
            {
                AmountTextBox.TextChanging -= AmountTextBox_TextChanging;
                AmountTextBox.Text          = NewAmount.ToString("N2");
                AmountTextBox.TextChanging += AmountTextBox_TextChanging;
                InvoiceItem NewItem = this.DataContext as InvoiceItem;
                NewItem.Amount = NewAmount;
                MainPage.db.Update(NewItem);
                CallItemDataChanged();
                //TODO: Handle update
            }
            else
            {
                AmountTextBox.TextChanging -= AmountTextBox_TextChanging;
                AmountTextBox.Text          = OriginalAmount.ToString("N2");
                AmountTextBox.TextChanging += AmountTextBox_TextChanging;
            }
        }
        public InvoiceItemWrapper CreateInvoiceItem(
            string title,
            string description,
            decimal price,
            string sku,
            int quantity,
            int stockQuantity,
            bool trackInventory,
            int invoiceTax1id,
            int invoiceTax2id)
        {
            if (!CRMSecurity.IsAdmin)
            {
                throw CRMSecurity.CreateSecurityException();
            }

            if (String.IsNullOrEmpty(title) || price == 0)
            {
                throw new ArgumentException();
            }

            var invoiceItem = new InvoiceItem
            {
                Title            = title,
                Description      = description,
                Price            = price,
                StockKeepingUnit = sku,
                Quantity         = quantity,
                StockQuantity    = stockQuantity,
                TrackInventory   = trackInventory,
                InvoiceTax1ID    = invoiceTax1id,
                InvoiceTax2ID    = invoiceTax2id
            };

            invoiceItem = DaoFactory.GetInvoiceItemDao().SaveOrUpdateInvoiceItem(invoiceItem);
            MessageService.Send(_context, MessageAction.InvoiceItemCreated, invoiceItem.Title);

            return(ToInvoiceItemWrapper(invoiceItem));
        }
        public void Create(AddInvoiceViewModel viewModel)
        {
            var invoice = new Invoice
            {
                Number     = viewModel.Number,
                CustomerId = viewModel.CustomerId,
                CreatedOn  = PersianDateTime.Parse(viewModel.CreatedOnString).ToDateTime(),
                Items      = new List <InvoiceItem>()
            };

            foreach (var item in viewModel.Items)
            {
                var invoiceItem = new InvoiceItem
                {
                    ProductId = item.ProductId,
                    Price     = item.Price,
                    Quantity  = item.Quantity
                };
                invoice.Items.Add(invoiceItem);
            }
            ServiceFactory.Create <IInvoiceService>().SaveInvoice(invoice);
        }
Exemple #31
0
        public void CalculateTotalNetAmount_CorrectValues_CorrectTotalNetAmount()
        {
            //Arrange
            var invoice = new Invoice();

            for (int i = 0; i < 5; i++)
            {
                var invoiceItem = new InvoiceItem()
                {
                    AmountNet = 100,
                    Amount    = 1
                };

                invoice.items.Add(invoiceItem);
            }

            //Act
            invoice.CalculateTotalNetAmount();

            //Assert
            Assert.Equal(500, invoice.TotalNetAmount);
        }
Exemple #32
0
        public async Task <IActionResult> Create(InvoiceItemViewModel invoiceItemVM)
        {
            if (!ModelState.IsValid)
            {
                return(View(invoiceItemVM));
            }

            Invoice invoice = await _context.Invoices.FirstOrDefaultAsync(o => o.Id == invoiceItemVM.InvoiceId);

            if (invoice.GetInvoiceIsPaid())
            {
                return(ErrorInvoicePaid());
            }

            InvoiceItem invoiceItem = _mapper.Map <InvoiceItem>(invoiceItemVM);

            invoiceItem.Invoice = invoice;
            _context.InvoiceItems.Add(invoiceItem);
            await _context.SaveChangesAsync();

            return(RedirectToAction(nameof(HomeController.Index), new { invoiceId = invoiceItemVM.InvoiceId }));
        }
        public static InvoiceItem ToDomain(this InvoiceItemDTO invoiceItem, InvoiceItem originalInvoiceItem = null)
        {
            if (originalInvoiceItem != null && originalInvoiceItem.ID == invoiceItem.ID)
            {
                originalInvoiceItem.SequenceNo      = invoiceItem.SequenceNo;
                originalInvoiceItem.Discount        = invoiceItem.Discount;
                originalInvoiceItem.GST             = invoiceItem.GST;
                originalInvoiceItem.Amount          = invoiceItem.Amount;
                originalInvoiceItem.Description     = invoiceItem.Description;
                originalInvoiceItem.InvoiceID       = invoiceItem.InvoiceID;
                originalInvoiceItem.InvocieType     = invoiceItem.InvoiceType;
                originalInvoiceItem.CreateDate      = invoiceItem.CreateDate;
                originalInvoiceItem.ChangeDate      = invoiceItem.ChangeDate;
                originalInvoiceItem.JsonInvoiceItem =
                    invoiceItem.JsonInvoiceItem != null?invoiceItem.JsonInvoiceItem.ToDomain(originalInvoiceItem.JsonInvoiceItem) : null;

                originalInvoiceItem.ProductInvoiceItem =
                    invoiceItem.ProductInvoiceItem != null?invoiceItem.ProductInvoiceItem.ToDomain(originalInvoiceItem.ProductInvoiceItem) : null;

                return(originalInvoiceItem);
            }

            return(new InvoiceItem()
            {
                ID = invoiceItem.ID,
                SequenceNo = invoiceItem.SequenceNo,
                Discount = invoiceItem.Discount,
                GST = invoiceItem.GST,
                Amount = invoiceItem.Amount,
                Description = invoiceItem.Description,
                InvoiceID = invoiceItem.InvoiceID,
                InvocieType = invoiceItem.InvoiceType,
                Concurrency = invoiceItem.Concurrency,
                CreateDate = invoiceItem.CreateDate,
                ChangeDate = invoiceItem.ChangeDate,
                JsonInvoiceItem = invoiceItem.JsonInvoiceItem != null?invoiceItem.JsonInvoiceItem.ToDomain() : null,
                                      ProductInvoiceItem = invoiceItem.ProductInvoiceItem != null?invoiceItem.ProductInvoiceItem.ToDomain() : null
            });
        }
Exemple #34
0
        private void btnSaveInvoice_Click(object sender, RoutedEventArgs e)
        {
            //  MessageBox.Show("Plik nie istnieje", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);

            Invoice invoice = new Invoice();

            invoice.SellerData = tbSellerData.Text;
            invoice.BuyerData  = tbBuyerData.Text;
            invoice.IssueDate  = tbIssueDate.SelectedDate;

            InvoiceFileService.SaveInvoiceFile(invoice);

            DBService.InsertInvoice(invoice);

            if (!string.IsNullOrEmpty(tbProductName1.Text))
            {
                InvoiceItem invoiceItem = new InvoiceItem()
                {
                    Name      = tbProductName1.Text,
                    AmountNet = Convert.ToDouble(tbAmount1.Text)
                };

                invoiceItem.SetAmountNet(Convert.ToDouble(tbNettoPrice1.Text));
                invoiceItem.SetVatRate(Convert.ToInt32(tbVat1.Text));
                invoiceItem.CalculateGrossAmount();
            }
            if (!string.IsNullOrEmpty(tbProductName2.Text))
            {
                InvoiceItem invoiceItem = new InvoiceItem()
                {
                    Name      = tbProductName2.Text,
                    AmountNet = Convert.ToDouble(tbAmount2.Text)
                };

                invoiceItem.SetAmountNet(Convert.ToDouble(tbNettoPrice2.Text));
                invoiceItem.SetVatRate(Convert.ToInt32(tbVat2.Text));
                invoiceItem.CalculateGrossAmount();
            }
        }
 public void DeleteInvoiceItem(InvoiceItem invoiceItem)
 {
     invoiceItemRepository.Delete(invoiceItem);
 }
        public JsonResult GenerateInvoice(FormCollection form)
        {
            Invoice invoice = new Invoice();
            //convert quote into an invoice
            invoice.Title = form["Title"];
            invoice.Description = form["Description"];
            invoice.InvoiceNumber = Convert.ToInt32(form["InvoiceNumber"]);
            invoice.PurchaseOrder = form["PurchaseOrder"];
            invoice.ExcludingVAT = Convert.ToBoolean(form["ExcludeVAT"]);

            invoice.SubValue = _quoteService.GetItemsByQuoteID(Convert.ToInt32(form["QuoteID"])).Sum(q => q.Value);

            if (invoice.ExcludingVAT == false)
            {
                //add on vat
                invoice.TotalValue = invoice.SubValue + invoice.SubValue * (decimal)0.20;
            }
            else
            {
                invoice.TotalValue = invoice.SubValue;
            }

            //save the new invoice
            _invoiceService.Save(invoice);

            //save invoice items
            List<QuoteItem> quoteItems = _quoteService.GetItemsByQuoteID(Convert.ToInt32(form["QuoteID"]));

            foreach (var item in quoteItems)
            {
                //popular invoice items with quote item data
                InvoiceItem invoiceItem = new InvoiceItem();
                invoiceItem.InvoiceID = invoice.ID;
                invoiceItem.Title = item.Title;
                invoiceItem.Value = item.Value;
                _invoiceService.SaveItem(invoiceItem);

                //remove quote items
                _quoteService.DeleteItem(item);
            }

            //remove quote
            Quote quote = _quoteService.GetByID(Convert.ToInt32(form["QuoteID"]));
            _quoteService.Delete(quote);

            return Json(new { success = true });
        }
Exemple #37
0
        internal void ReadInvoice(string editext) {
            List<Invoice> invoices = new List<Invoice>();
            List<InvoiceItem> items = new List<InvoiceItem>();
            List<InvoiceCode> codes = new List<InvoiceCode>();


            Dictionary<string, string> itdcodes = new Dictionary<string, string>();
            itdcodes.Add("01", "Basic");
            itdcodes.Add("02", "End of Month");
            itdcodes.Add("03", "Fixed Date");
            itdcodes.Add("04", "Def. or installment");
            itdcodes.Add("05", "Discount N/A");
            itdcodes.Add("08", "Basic disc. offered");
            itdcodes.Add("09", "Proximo");
            itdcodes.Add("12", "10 days after EOM");
            itdcodes.Add("14", "Previously agreed");
            itdcodes.Add("17", "Terms N/A");
            itdcodes.Add("ZZ", "Mutually Defined");

            Invoice inv = new Invoice();
            InvoiceAddress address = new InvoiceAddress();
            char billorship = 'b';
            List<string> edilines = editext.Split('~').ToList<string>();
            foreach (string line in edilines) {
                List<string> lineelements = line.Split('*').ToList<string>();
                switch (lineelements[0]) {
                    case "ST":
                        // Beginning of invoice
                        inv = new Invoice();
                        items = new List<InvoiceItem>();
                        codes = new List<InvoiceCode>();
                        break;
                    case "BIG":
                        // Beginning statement
                        string dt = lineelements[1].Substring(4, 2) + "-" + lineelements[1].Substring(6, 2) + "-" + lineelements[1].Substring(0, 4);
                        inv.dateAdded = Convert.ToDateTime(dt);
                        inv.number = lineelements[2];
                        inv.orderID = lineelements[4];
                        switch (lineelements[7]) {
                            case "CN":
                                inv.invoiceType = "Credit Invoice";
                                break;
                            case "DI":
                                inv.invoiceType = "Debit Invoice";
                                break;
                            case "ZZ":
                                inv.invoiceType = "Mutually Defined";
                                break;
                        }
                        break;
                    case "CUR":
                        inv.billToCurrency = lineelements[2];
                        break;
                    case "REF":
                        inv.curtOrder = Convert.ToInt32(lineelements[2].Trim());
                        break;
                    case "N1":
                        switch (lineelements[1]) {
                            case "RI":
                                inv.remitTo = lineelements[4];
                                break;
                            case "BT":
                                billorship = 'b';
                                address = new InvoiceAddress();
                                string[] namesplit = lineelements[2].Split(' ');
                                address.first = namesplit[0];
                                try {
                                    address.last = namesplit[1];
                                } catch {
                                    address.last = "";
                                }
                                break;
                            case "ST":
                                billorship = 's';
                                address = new InvoiceAddress();
                                namesplit = lineelements[2].Split(' ');
                                address.first = namesplit[0];
                                try {
                                    address.last = namesplit[1];
                                } catch {
                                    address.last = "";
                                }
                                break;
                        }
                        break;
                    case "N2":
                        break;
                    case "N3":
                        address.street1 = lineelements[1];
                        try {
                            address.street2 = lineelements[2];
                        } catch {
                            address.street2 = "";
                        }
                        break;
                    case "N4":
                        address.city = lineelements[1];
                        address.state = lineelements[2];
                        address.postal_code = lineelements[3];
                        address.MatchOrSave();
                        if (billorship == 'b')
                            inv.billTo = address.ID;
                        else
                            inv.shipTo = address.ID;
                        break;
                    case "ITD":
                        // invoice due statement
                        inv.termsType = itdcodes[lineelements[1]];
                        inv.discountPercent = Convert.ToDecimal(lineelements[3]);
                        if (lineelements[4].Length == 8) {
                            inv.discountDueDate = Convert.ToDateTime(lineelements[4].Substring(4, 2) + "-" + lineelements[4].Substring(6, 2) + "-2" + lineelements[4].Substring(1, 3));
                        }
                        inv.discountDueDays = Convert.ToInt32(lineelements[5]);
                        inv.netDueDate = Convert.ToDateTime(lineelements[6].Substring(4, 2) + "-" + lineelements[6].Substring(6, 2) + "-2" + lineelements[6].Substring(1, 3));
                        inv.netDueDays = Convert.ToInt32(lineelements[7]);
                        inv.termsDescription = lineelements[12];
                        break;
                    case "IT1":
                        // item in the invoice
                        InvoiceItem i = new InvoiceItem();
                        try {
                            i.quantity = Convert.ToInt32(lineelements[2]);
                        } catch {
                            i.quantity = 0;
                        }
                        i.price = (lineelements[4].Length > 0) ? Convert.ToDecimal(lineelements[4]) : 0;
                        i.partID = lineelements[9];
                        i.description = lineelements[15];
                        /*InvoiceItem i = new InvoiceItem {
                            quantity = Convert.ToInt32(lineelements[2]),
                            price = Convert.ToDecimal(lineelements[4]),
                            partID = lineelements[9],
                            description = lineelements[15]
                        };*/
                        items.Add(i);
                        break;
                    case "TDS":
                        // totals
                        inv.total = (Convert.ToDecimal(lineelements[1]) / 100);
                        try {
                            inv.subtotal = (Convert.ToDecimal(lineelements[2]) / 100);
                        } catch { };
                        try {
                            inv.discountTotal = (Convert.ToDecimal(lineelements[3]) / 100);
                        } catch { };
                        try {
                            inv.discount = (Convert.ToDecimal(lineelements[4]) / 100);
                        } catch { };
                        break;
                    case "TXI":
                        // special tax line for canadians
                        inv.salesTax = Convert.ToDecimal(lineelements[2]);
                        break;
                    case "SAC":
                        // special codes
                        InvoiceCode c = new InvoiceCode {
                            type = (lineelements[1] == "C") ? "Charge" : "Allowance",
                            code = lineelements[2],
                            value = (Convert.ToDecimal(lineelements[5]) / 100),
                            description = lineelements[15]
                        };
                        codes.Add(c);
                        break;
                    case "SE":
                        // End of Invoice
                        inv.Save(items, codes);
                        break;
                }
            }
        }
Exemple #38
0
        public HttpResponseMessage Add(HttpRequestMessage request, int id, string type, int qty)
        {
            bool foundInvoiceItem = false;

            foreach (InvoiceItem x in SelectedInvoice.InvoiceItems)
            {
                if (x.ProductId == id)
                {
                    x.Quantity += qty;
                    if (x.Quantity <= 0)
                    {
                        RemoveProduct(id, type);
                    }
                    foundInvoiceItem = true;
                    break;
                }
            }

            if (!foundInvoiceItem && qty > 0)
            {
                InvoiceItem invItem = new InvoiceItem();
                Product product = new Product();

                if (type == "Book")
                {
                    var book = _booksRepository.GetSingle(id);
                    invItem.ProductId = book.ID;
                    invItem.ProductName = book.Name;
                    invItem.ImageUrl = book.ImageUrl;
                    invItem.Quantity = qty;
                    if (book.SpecialOfferPrice == 0)
                    {
                        invItem.Price = book.Price * qty;
                        invItem.Promotion = false;
                        invItem.UnitPrice = book.Price;
                    }
                    else
                    {
                        invItem.Price = book.SpecialOfferPrice * qty;
                        invItem.Promotion = false;
                        invItem.UnitPrice = book.SpecialOfferPrice;
                    }

                    invItem.ShippingCost = book.PostagePrice;
                    invItem.HandlingCost = book.PostagePrice;
                    invItem.Type = "Book";

                }
                else if (type == "Leaflet")
                {
                    var leaflet = _leafletsRepository.GetSingle(id);
                    invItem.ProductId = leaflet.ID;
                    invItem.ProductName = leaflet.Name;
                    invItem.ImageUrl = leaflet.ImageUrl;
                    invItem.Quantity = qty;
                    if (leaflet.SpecialOfferPrice == 0)
                    {
                        invItem.Price = leaflet.Price * qty;
                        invItem.Promotion = false;
                        invItem.UnitPrice = leaflet.Price;
                    }
                    else
                    {
                        invItem.Price = leaflet.SpecialOfferPrice * qty;
                        invItem.Promotion = false;
                        invItem.UnitPrice = leaflet.SpecialOfferPrice;
                    }

                    invItem.ShippingCost = leaflet.PostagePrice;
                    invItem.HandlingCost = leaflet.PostagePrice;
                    invItem.Type = "Leaflet";
                }

                SelectedInvoice.InvoiceItems.Add(invItem);
            }

            HttpResponseMessage response = request.CreateResponse(HttpStatusCode.Created);

            return response;
        }
        public IList<InvoiceItem> GetDataSource()
        {
            List<InvoiceItem> items = new List<InvoiceItem>();

            InvoiceItem item = new InvoiceItem();
            item.ItemName = Product.WinRT;
            item.Quantity = "1";
            item.Rate = "$ " + Product.WinRTRate;
            item.Taxes = Product.WinRTax;
            item.TotalAmount = "$ " + Product.CalcuateTotal(item.Rate, item.Quantity, item.Taxes).ToString();
            items.Add(item);

            //getListItem (item.ItemName, item.Quantity, item.TotalAmount);

            item = new InvoiceItem();
            item.ItemName = Product.WindowsPhone;
            item.Quantity = "1";
            item.Rate = "$ " + Product.WindowsPhoneRate;
            item.Taxes = Product.WindowsPhoneTax;
            item.TotalAmount = "$ " + Product.CalcuateTotal(item.Rate, item.Quantity, item.Taxes).ToString();
            items.Add(item);

            return items;
        }
        void DoneButton_Clicked(object sender, EventArgs e)
        {
            if (this.ItemPicker.SelectedIndex >= 0 && this.QuantityPicker.SelectedIndex >= 0)
            {
                this.Title = "Items";
                InvoiceItem invoiceItem = new InvoiceItem();
                invoiceItem.ItemName = this.ItemPicker.Items[this.ItemPicker.SelectedIndex];
                invoiceItem.Quantity = this.QuantityPicker.Items[this.QuantityPicker.SelectedIndex]; ;
                invoiceItem.Rate = getRate(this.ItemPicker.SelectedIndex.ToString());
                invoiceItem.Taxes = "7";
                invoiceItem.TotalAmount = this.AmountEntry.Text;
                this.ListSource.Add(invoiceItem);

                if (this.ListStack.IsVisible)
                {
                    this.ListStack.Children.Add(getListItem(invoiceItem.ItemName, invoiceItem.Quantity, invoiceItem.TotalAmount));
                }
            }
            this.AddLayout.IsVisible = false;
            this.MainLayout.IsVisible = true;
            this.ExportLayout.IsVisible = false;
            //  this.listView.IsVisible = true;

            this.listView.HeightRequest = this.Height;
        }
 public void Delete(InvoiceItem invoiceItem)
 {
     _invoiceItems.Attach(invoiceItem);
     _repository.Entry(invoiceItem).State = EntityState.Deleted;
     _repository.SaveChanges();
 }
 public void AddInvoiceItem(InvoiceItem newInvoiceItem)
 {
 }
Exemple #43
0
        public ActionResult Checkout(FormCollection collection, ProductViewModel model)
        {
            Delivery shipping = new Delivery();
            IEnumerable<Book> ifBooks = (IEnumerable<Book>)Session["myBooks"];
            IEnumerable<Technology> ifGadget = (IEnumerable<Technology>)Session["myGadget"];
            List<CartItem> myItems = (List<CartItem>)Session["myItems"];
            myHandler = new BusinessLogicHandler();

            #region Get Shipping Data
            try
            {
                shipping = myHandler.GetDeliveryDetails(Convert.ToInt32(collection[1].ToString()));

                if (ModelState.ContainsKey("I_DeliveryList"))
                    ModelState["I_DeliveryList"].Errors.Clear();
            }
            catch
            { ModelState.AddModelError("deliveryHelper.DeliveryServicePrice", "Please select a delivery service from dropdown !"); }
            #endregion

            #region Cathing model errors
            var error = ModelState.Values.SelectMany(e => e.Errors);
            var errors = ModelState
    .Where(x => x.Value.Errors.Count > 0)
    .Select(x => new { x.Key, x.Value.Errors })
    .ToArray();
            #endregion

            int? IID = 0;
            if (ModelState.IsValid)
            {
                #region Get User
                string userName = User.Identity.GetUserName();
                ApplicationDbContext dataSocket = new ApplicationDbContext();
                UserStore<ApplicationUser> myStore = new UserStore<ApplicationUser>(dataSocket);
                userMgr = new ApplicationUserManager(myStore);
                var user = userMgr.FindByEmail(userName);
                #endregion

                try
                {
                    #region Creating the reciept/invoice
                    Invoice reciept = new Invoice { User_Id = user.Id, DateCreated = DateTime.Now, DeliveryAddress = model.deliveryHelper.DeliveryAddress, DeliveryServiceID = Convert.ToInt32(collection[1].ToString()), Status = false };
                    try
                    {
                        InvoiceItem invoiceLine = new InvoiceItem();
                        invoiceLine = myHandler.GetInvoiceLastNumber(reciept);
                        foreach (var item in myItems)
                        {
                            invoiceLine.CartItemID = item.CartItemID;
                            invoiceLine.ProductID = item.ProductID;
                            invoiceLine.Quantity = item.Quantity;

                            #region Get Product Price
                            bool chk = false;
                            chk = myHandler.CheckProductType(item.ProductID);
                            if (chk)
                            {
                                Book book = new Book();
                                book = myHandler.GetBook(item.ProductID);
                                invoiceLine.Price = book.SellingPrice;
                                myHandler.AddinvoiceItem(invoiceLine);
                            }
                            else
                            {
                                Technology device = new Technology();
                                device = myHandler.GetTechnologyDetails(item.ProductID);
                                invoiceLine.Price = device.SellingPrice;
                                myHandler.AddinvoiceItem(invoiceLine);
                            }
                            #endregion


                        }
                        IID = invoiceLine.InvoiceID;

                    }
                    catch { }
                    #endregion


                    #region Placing the order
                    try
                    {

                        #region Prep Utilities

                        Order ord;
                        Book book = new Book();
                        Technology gadget = new Technology();
                        int supplierId = 0;
                        OrderItem orderLine = new OrderItem();
                        myHandler = new BusinessLogicHandler();
                        List<int> orders = new List<int>();
                        List<int> suppliers = new List<int>();

                        #endregion

                        foreach (var item in myItems)
                        {
                            if (myHandler.CheckProductType(item.ProductID))
                            {
                                book = myHandler.GetBook(item.ProductID);
                                supplierId = book.SupplierID;
                                if (suppliers.Contains(book.SupplierID))
                                {
                                    int x = suppliers.IndexOf(supplierId);
                                    orderLine.OrderNo = orders.ElementAt(x);
                                    orderLine.ProductID = item.ProductID;
                                    orderLine.Quantity = item.Quantity;
                                    myHandler.AddOrderItem(orderLine);
                                }
                                else
                                {
                                    suppliers.Add(supplierId);
                                    ord = new Order { DateCreated = DateTime.Now.Date, SupplierID = supplierId, InvoiceID = IID.GetValueOrDefault(), DateLastModified = DateTime.Now.Date, Status = false };
                                    orderLine = myHandler.AddOrder(ord);
                                    orders.Add(orderLine.OrderNo);
                                    orderLine.ProductID = item.ProductID;
                                    orderLine.Quantity = item.Quantity;
                                    myHandler.AddOrderItem(orderLine);
                                }

                            }
                            else
                            {
                                supplierId = ifGadget.SingleOrDefault(m => m.ProductID == item.ProductID).SupplierID;
                                if (suppliers.Contains(supplierId))
                                {
                                    int y = suppliers.IndexOf(supplierId);
                                    orderLine.OrderNo = orders.ElementAt(y);
                                    orderLine.ProductID = item.ProductID;
                                    orderLine.Quantity = item.Quantity;
                                    myHandler.AddOrderItem(orderLine);
                                }
                                else
                                {
                                    suppliers.Add(supplierId);
                                    ord = new Order { DateCreated = DateTime.Now.Date, SupplierID = supplierId, InvoiceID = IID.GetValueOrDefault(), DateLastModified = DateTime.Now.Date, Status = false };
                                    orderLine = myHandler.AddOrder(ord);
                                    orders.Add(orderLine.OrderNo);
                                    orderLine.ProductID = item.ProductID;
                                    orderLine.Quantity = item.Quantity;
                                    myHandler.AddOrderItem(orderLine);
                                }
                            }
                        }
                    }
                    catch { }
                    #endregion
                }
                catch
                {/*Navigate to custom error page*/ }
                Session["deliverData"] = model;
                return RedirectToAction("Receipt", new { IID = IID });
            }
            else
            {
                #region Feed The Model


                CartItem thishereItem = new CartItem();
                try
                {
                    ProductViewModel.CartHelper cartHelp;
                    List<ProductViewModel.CartHelper> itemList = new List<ProductViewModel.CartHelper>();
                    double cartTotal = 0;
                    if (myItems != null)
                    {
                        if (ifBooks != null)
                        {
                            var revised = from rev in ifBooks
                                          join item in myItems on rev.ProductID equals item.ProductID
                                          where rev.ProductID == item.ProductID
                                          select new { rev.ProductID, rev.SellingPrice, item.Quantity };
                            foreach (var ite in revised)
                            {
                                cartHelp = new ProductViewModel.CartHelper();
                                cartHelp.ProductID = ite.ProductID;
                                cartHelp.TotalPerItem = (ite.SellingPrice * ite.Quantity);
                                cartTotal += (ite.SellingPrice * ite.Quantity);
                                itemList.Add(cartHelp);
                            }
                        }
                        if (ifGadget != null)
                        {
                            var revised = from rev in ifGadget
                                          join item in myItems on rev.ProductID equals item.ProductID
                                          where rev.ProductID == item.ProductID
                                          select new { rev.ProductID, rev.SellingPrice, item.Quantity };
                            foreach (var ite in revised)
                            {
                                cartHelp = new ProductViewModel.CartHelper();
                                cartHelp.ProductID = ite.ProductID;
                                cartHelp.TotalPerItem = (ite.SellingPrice * ite.Quantity);
                                cartTotal += (ite.SellingPrice * ite.Quantity);
                                itemList.Add(cartHelp);
                            }
                        }
                    }
                    List<Company> company = new List<Company>(); myHandler = new BusinessLogicHandler();
                    company = myHandler.GetCompanyDetails();
                    double vat = 0;
                    foreach (var item in company)
                    { vat = item.VATPercentage; }
                    //calc
                    double vatAmount = (cartTotal * vat);
                    double subTotal = (cartTotal - vatAmount);
                    ProductViewModel.CartConclude finishing = new ProductViewModel.CartConclude();
                    finishing.CartTotal = cartTotal;
                    finishing.VatAddedTotal = vatAmount;
                    finishing.SubTotal = subTotal;
                    model.ItsA_wrap = new List<ProductViewModel.CartConclude>();
                    model.ItsA_wrap.Add(finishing);

                    model.deliveryHelper.DeliveryServiceName = shipping.ServiceName;
                    model.deliveryHelper.DeliveryServicePrice = shipping.Price;
                    model.deliveryHelper.DeliveryServiceType = shipping.ServiceType;

                    model.secureCart = itemList;
                    model.allBook = new List<Book>();
                    model.allBook = ifBooks.ToList() ;
                    model.allCartItem = new List<CartItem>();
                    model.allCartItem = myItems;
                    model.allTechnology = new List<Technology>();
                    model.allTechnology = ifGadget.ToList();
                }
                catch { }
                #endregion

                #region Drop down data
                DeliveryHandler deliver = new DeliveryHandler();
                IEnumerable<Delivery> delivery = (IEnumerable<Delivery>)deliver.GetDeliveryList();
                var dataStore = from name in delivery
                                select new { Value = name.DeliveryServiceID, Text = name.ServiceName };
                ViewBag.DeliveryList = new SelectList(dataStore.ToList());

                List<SelectListItem> deliveryI = new List<SelectListItem>();
                deliveryI.Add(new SelectListItem { Text = "Delivery Service", Value = "", Selected = true });
                foreach (var item in delivery)
                { deliveryI.Add(new SelectListItem { Text = item.ServiceName, Value = item.DeliveryServiceID.ToString() }); }
                model.I_DeliveryList = new List<SelectListItem>();
                model.I_DeliveryList = deliveryI;
                ViewData["I_Delivery"] = deliveryI;
                #endregion

                return View(model);
            }
        }