Exemplo n.º 1
0
 public void UpdateInvoiceStatus(InvoiceSQLite invoice)
 {
     lock (locker)
     {
         database.Update(invoice);
     }
 }
Exemplo n.º 2
0
 internal void UpdateInvoiceNumber(InvoiceSQLite invoice)
 {
     lock (locker)
     {
         database.Update(invoice);
     }
 }
Exemplo n.º 3
0
 public void DeleteInvoiceByInvoice(InvoiceSQLite invoice)
 {
     lock (locker)
     {
         database.Delete(invoice);
     }
 }
Exemplo n.º 4
0
        private async void MarkAsCompleted(object sender, EventArgs e)
        {
            bool userAction = await DisplayAlert("Confirm action", "Do you wish to mark it as complete? ", "Yes", "Cancel");

            if (userAction)
            {
                var button = sender as Button;

                Invoice invoiceSelected = button.BindingContext as Invoice;


                InvoiceSQLite invoice = App.InvoiceDatabase.GetInvoiceByInvoiceID(invoiceSelected.InvoiceID);
                invoice.CompletedDeliveryStatus = true;
                invoice.UpdateTimeTicksApp      = DateTime.Now.Ticks;

                App.InvoiceDatabase.UpdateInvoiceStatus(invoice);
                UpdateStatus(invoiceSelected);
                UpdateWeightLabel(invoiceSelected);

                if (IsGoogleAPICallRequired(invoiceSelected))
                {
                    MapDirections("(Force-Refresh) ");
                }
            }
        } // Mark As Completed
Exemplo n.º 5
0
        protected async override void OnAppearing()
        {
            _isDetailedPageOpen = false;
            if (_currentSelectedInvoice != null)
            {
                InvoiceSQLite invoiceSQLite = App.InvoiceDatabase.GetInvoiceByInvoiceID(_currentSelectedInvoice.InvoiceID);
                if (invoiceSQLite.CompletedDeliveryStatus)
                {
                    UpdateStatus(_currentSelectedInvoice);
                    UpdateWeightLabel(_currentSelectedInvoice);
                    if (IsGoogleAPICallRequired(_currentSelectedInvoice))
                    {
                        MapDirections("(Force-Refresh) ");
                    }
                }
                _currentSelectedInvoice = null;
            }
            else
            {
                _invoiceSQLite = App.InvoiceDatabase.GetAllIncompleteInvoices();
                if (_counter == 0)
                {
                    _counter = _invoiceSQLite.Count();
                }
                if (_counter > _invoiceSQLite.Count() || _firstVisited)
                {
                    await InitPins();

                    MapDirections("(initializing) ");
                    _counter      = _invoiceSQLite.Count();
                    _firstVisited = false;
                    _outsideRouteUpdateCounter = 0;
                }
            }
        }
Exemplo n.º 6
0
        } // Mark As Completed

        public void UpdateStatus(Invoice invoiceSelected)
        {
            bool googleAPICallRequired = true;

            _invoicesCollection.Remove(invoiceSelected);
            _invoices.Remove(invoiceSelected);
            DeliveryItemView.ItemsSource = _invoicesCollection;
            Pin thePin = _pins.Where(pinX => pinX.Label == invoiceSelected.InvoiceNumber).FirstOrDefault();

            map.Pins.Remove(thePin);
            _waypoints.Remove($"{thePin.Position.Latitude}%2C{thePin.Position.Longitude}");

            InvoiceSQLite invoiceSQLite = App.InvoiceDatabase.GetInvoiceByInvoiceNumber(invoiceSelected.InvoiceNumber);

            if (invoiceSQLite != null)
            {
                ContactSQLite contact = App.ContactDatabase.GetContactByID(invoiceSQLite.ContactID);
                double        distanceToInvoiceInKm = Location.CalculateDistance(_currentLocation, new Location((double)contact.Latitude, (double)contact.Longitude), DistanceUnits.Kilometers);

                if (distanceToInvoiceInKm * 1000 < 30)
                {
                    googleAPICallRequired = false;
                }
            }

            if (googleAPICallRequired)
            {
                MapDirections("(Force-Refresh) ");
            }
            _counter--;
        }
Exemplo n.º 7
0
 public void InsertInvoice(InvoiceSQLite invoice)
 {
     lock (locker)
     {
         database.Insert(invoice);
     }
 }
Exemplo n.º 8
0
        public void InsertInvoice(InvoiceSQLite invoice, List <LineItem> lineitem, Contact contact)
        {
            lock (locker)
            {
                database.Insert(invoice);
                //create LineItem to associate it with the invoice

                if (!App.ContactDatabase.CheckContactIfExisted(contact.ContactID))
                {
                    ContactSQLite contactSQLite = App.ContactDatabase.PrepareContactSQLite(contact);
                    App.ContactDatabase.InsertContact(contactSQLite);
                }

                //sort desc by ID, get the first one (biggest id number)
                var maxItemLineID = App.LineItemDatabase.GetLastLineItem();
                int itemLineID    = maxItemLineID == null ? 1 : maxItemLineID.ItemLineID;

                foreach (LineItem item in lineitem)
                {
                    itemLineID++;
                    //create the id by referencing lineitemtable
                    LineItemSQLite lineItemSQLite = new LineItemSQLite()
                    {
                        // if it's not set set the itemline id to 1 else increment 1 from the biggest value
                        ItemLineID = itemLineID,
                        InvoiceID  = invoice.InvoiceID,
                        ItemCode   = item.ItemCode,
                        Quantity   = (int)item.Quantity,
                        UnitAmount = item.UnitAmount,
                    };
                    //Save to db
                    App.LineItemDatabase.InsertLineItem(lineItemSQLite);

                    ItemSQLite itemSQLite = App.ItemDatabase.GetItemByID(item.ItemCode);
                    //check if item already exist, if not add it into database
                    if (itemSQLite == null)
                    {
                        ItemSQLite newItem = new ItemSQLite()
                        {
                            ItemCode        = item.ItemCode,
                            Description     = item.Description,
                            Weight          = item.Weight,
                            UnitCost        = invoice.InvoiceType == "ACCPAY" ? item.UnitAmount : 0,
                            UpdateTimeTicks = invoice.UpdateTimeTicksXERO,
                        };
                        App.ItemDatabase.InsertItem(newItem);
                    }
                    else if (invoice.UpdateTimeTicksXERO > itemSQLite.UpdateTimeTicks)
                    {
                        itemSQLite.Weight          = item.Weight;
                        itemSQLite.Description     = item.Description;
                        itemSQLite.UnitCost        = invoice.InvoiceType == "ACCPAY" ? item.UnitAmount : 0;
                        itemSQLite.UpdateTimeTicks = invoice.UpdateTimeTicksXERO;
                        App.ItemDatabase.UpdateItem(itemSQLite);
                    }
                }
            }
        }
Exemplo n.º 9
0
        } // Mark As Completed

        public bool IsGoogleAPICallRequired(Invoice invoiceSelected)
        {
            bool          googleAPICallRequired = true;
            InvoiceSQLite invoiceSQLite         = App.InvoiceDatabase.GetInvoiceByInvoiceNumber(invoiceSelected.InvoiceNumber);

            if (invoiceSQLite != null)
            {
                ContactSQLite contact = App.ContactDatabase.GetContactByID(invoiceSQLite.ContactID);
                double        distanceToInvoiceInKm = Location.CalculateDistance(_currentLocation, new Location((double)contact.Latitude, (double)contact.Longitude), DistanceUnits.Kilometers);

                if (distanceToInvoiceInKm < 0.045)
                {
                    googleAPICallRequired = false;
                }
            }
            return(googleAPICallRequired);
        }
Exemplo n.º 10
0
        public void UpdateWeightLabel(Invoice invoiceSelected)
        {
            InvoiceSQLite        invoiceSQLite = App.InvoiceDatabase.GetInvoiceByInvoiceID(invoiceSelected.InvoiceID);
            List <InvoiceSQLite> temp          = new List <InvoiceSQLite>();

            temp.Add(invoiceSQLite);

            double invoiceWeight = StockManager.CalculateStockWeight(StockManager.GetStock(temp));

            if (invoiceSQLite.InvoiceType == "ACCREC")
            {
                _currentWeight -= invoiceWeight;
            }
            else
            {
                _currentWeight += invoiceWeight;
            }
            TotalWeightLabel.Text = $"{(_currentWeight):F2} Kg";
        }
Exemplo n.º 11
0
        private async void MarkAsCompleted(object sender, EventArgs e)
        {
            bool userAction = false;

            if (_selectedInvoice.Status == "Completed")
            {
                userAction = await DisplayAlert("Confirm action", "Do you wish to mark it as incomplete? ", "Yes", "Cancel");

                if (userAction)
                {
                    _selectedInvoice.Status   = "";
                    CompletedOrderButton.Text = "Mark as Completed";
                    PageHeaderLabel.Text      = _selectedInvoice.InvoiceNumber;
                }
            }
            else
            {
                userAction = await DisplayAlert("Confirm action", "Do you wish to mark it as completed? ", "Yes", "Cancel");

                if (userAction)
                {
                    _selectedInvoice.Status   = "Completed";
                    CompletedOrderButton.Text = "Mark as incomplete";
                    PageHeaderLabel.Text      = $"{_selectedInvoice.InvoiceNumber} Completed";
                }
            }
            PageHeaderLabel.Text += _selectedInvoice.Type == "ACCPAY" ? " - Pickup" : " - Dropoff";
            if (userAction)
            {
                InvoiceSQLite invoice = new InvoiceSQLite();
                invoice.InvoiceType             = _selectedInvoice.Type;
                invoice.InvoiceID               = _selectedInvoice.InvoiceID;
                invoice.InvoiceNumber           = _selectedInvoice.InvoiceNumber;
                invoice.CompletedDeliveryStatus = (_selectedInvoice.Status == "Completed");
                invoice.ContactID               = _selectedInvoice.Contact.ContactID;
                invoice.Subtotal = _selectedInvoice.SubTotal;

                App.InvoiceDatabase.UpdateInvoiceStatus(invoice);
            }

            // Navigation.PopModalAsync();
        } // Mark As Completed
Exemplo n.º 12
0
        protected override void OnAppearing()
        {
            _childPageLoaded = false;
            if (_currentInvoice != null)
            {
                int collectionIndex = _deliveryOrders.IndexOf(_currentInvoice);

                InvoiceSQLite invoiceSQLite = App.InvoiceDatabase.GetInvoiceByInvoiceID(_currentInvoice.InvoiceID);

                if (invoiceSQLite.CompletedDeliveryStatus)
                {
                    _deliveryOrders.Remove(_deliveryOrders[collectionIndex]);
                    DeliveryInvoice.ItemsSource = _deliveryOrders;
                }
                _currentInvoice = null;
            }
            else
            {
                SupplyOrder();
            }
        }
Exemplo n.º 13
0
        protected override void OnAppearing()
        {
            _childPageLoaded = false;
            init();
            if (_currentSelected == null)
            {
                BindingContext = new CompletedViewModel(Navigation);
            }
            else
            {
                CompletedViewModel model = BindingContext as CompletedViewModel;
                int selectedIndex        = model.DeliveryOrders.IndexOf(_currentSelected);

                InvoiceSQLite invoiceSQLite = App.InvoiceDatabase.GetInvoiceByInvoiceID(_currentSelected.InvoiceID);

                if (!invoiceSQLite.CompletedDeliveryStatus)
                {
                    model.DeliveryOrders.Remove(_currentSelected);
                }
            }
        }
Exemplo n.º 14
0
        private async void MarkAsCompleted(object sender, EventArgs e)
        {
            bool userAction = await DisplayAlert("Confirm action", "Do you wish to mark it as complete? ", "Yes", "Cancel");

            if (userAction)
            {
                var button = sender as Button;

                Invoice invoiceSelected = button.BindingContext as Invoice;
                invoiceSelected.Status = "Completed";

                InvoiceSQLite invoice = new InvoiceSQLite();
                invoice.InvoiceID               = invoiceSelected.InvoiceID;
                invoice.InvoiceNumber           = invoiceSelected.InvoiceNumber;
                invoice.CompletedDeliveryStatus = (invoiceSelected.Status == "Completed");
                invoice.ContactID               = invoiceSelected.Contact.ContactID;
                invoice.Subtotal = invoiceSelected.SubTotal;

                App.InvoiceDatabase.UpdateInvoiceStatus(invoice);
                UpdateStatus(invoiceSelected);
            }
        } // Mark As Completed
Exemplo n.º 15
0
        private void SavePickupButton_Clicked(object sender, EventArgs e)
        {
            if (!ValidateInput())
            {
                DisplayAlert("Alert", "Please Fill All the Input Field", "OK");
                return;
            }

            int           pickupInvoiceCount = App.InvoiceDatabase.CountPickupInvoice();
            ContactSQLite contact            = App.ContactDatabase.GetContactByName(ContactAutoSuggestBox.Text);

            if (contact == null)
            {
                contact = new ContactSQLite()
                {
                    ContactID = DateTime.Now.ToString(),
                    Fullname  = ContactAutoSuggestBox.Text,
                    City      = CityEntry.Text,
                    Type      = ContactType.Supplier,
                    Address   = AddressEntry.Text,
                };
                App.ContactDatabase.InsertContact(contact);
            }

            InvoiceSQLite invoice = new InvoiceSQLite()
            {
                InvoiceID               = DateTime.Now.ToString(),
                InvoiceNumber           = "OPC-" + pickupInvoiceCount,
                InvoiceType             = "ACCPAY",
                CompletedDeliveryStatus = false,
                ContactID               = contact.ContactID,
                TenantID           = Preferences.Get("TenantID", string.Empty),
                UpdateTimeTicksApp = DateTime.Now.Ticks,
            };

            App.InvoiceDatabase.InsertInvoice(invoice);

            foreach (LineItem item in _itemsCollection)
            {
                var maxItemLineID = App.LineItemDatabase.GetLastLineItem();
                //create the id by referencing lineitemtable
                LineItemSQLite lineItemSQLite = new LineItemSQLite()
                {
                    // if it's not set set the itemline id to 1 else increment 1 from the biggest value
                    ItemLineID = (maxItemLineID == null ? 1 : maxItemLineID.ItemLineID + 1),
                    InvoiceID  = invoice.InvoiceID,
                    ItemCode   = item.ItemCode,
                    Quantity   = (int)item.Quantity,
                    UnitAmount = item.UnitAmount,
                };
                //Save to db
                App.LineItemDatabase.InsertLineItem(lineItemSQLite);

                //check if item already exist, if not add it into database

                if (!App.ItemDatabase.CheckIfExisted(item.ItemCode))
                {
                    ItemSQLite newItem = new ItemSQLite()
                    {
                        ItemCode    = item.ItemCode,
                        Description = item.Description,
                        Weight      = item.Weight,
                        UnitCost    = item.UnitAmount
                    };
                    App.ItemDatabase.InsertItem(newItem);
                }
            }

            Navigation.PopModalAsync();
        }
Exemplo n.º 16
0
        public static async Task <bool> FillData()
        {
            for (int i = 0; i < _InvoiceResponse.Invoices.Count; i++)
            {
                InvoiceSQLite invoiceInDatabase = App.InvoiceDatabase.GetInvoiceByInvoiceID(_InvoiceResponse.Invoices[i].InvoiceID);

                if (invoiceInDatabase != null && invoiceInDatabase.CompletedDeliveryStatus)
                {
                    continue;
                }

                if (_InvoiceResponse.Invoices[i].Status == "AUTHORISED" || _InvoiceResponse.Invoices[i].Status == "PAID")
                {
                    await FillItems(_InvoiceResponse.Invoices[i], i);
                    await FillContactAddress(_InvoiceResponse.Invoices[i].Contact, i);

                    InvoiceSQLite invoiceSqlite = new InvoiceSQLite()
                    {
                        InvoiceType             = _InvoiceResponse.Invoices[i].Type,
                        InvoiceID               = _InvoiceResponse.Invoices[i].InvoiceID,
                        InvoiceNumber           = _InvoiceResponse.Invoices[i].InvoiceNumber,
                        CompletedDeliveryStatus = false,
                        ContactID               = _InvoiceResponse.Invoices[i].Contact.ContactID,
                        Subtotal = _InvoiceResponse.Invoices[i].SubTotal
                    };

                    //Insert data normally if the data doesnt exist else check for update
                    if (invoiceInDatabase == null)
                    {
                        App.InvoiceDatabase.InsertInvoice(invoiceSqlite, _InvoiceResponse.Invoices[i].LineItems, _InvoiceResponse.Invoices[i].Contact);
                    }
                    else
                    {
                        ContactSQLite contactInDatabase = App.ContactDatabase.GetContactByID(invoiceInDatabase.ContactID);
                        ContactSQLite newContact        = App.ContactDatabase.PrepareContactSQLite(_InvoiceResponse.Invoices[i].Contact);

                        if (contactInDatabase.Address != newContact.Address)
                        {
                            App.ContactDatabase.UpdateContactPosition(newContact);
                        }

                        List <LineItemSQLite> lineItemSQLiteList = App.LineItemDatabase.GetLineItemByInvoiceID(_InvoiceResponse.Invoices[i].InvoiceID);

                        foreach (LineItem lineItem in _InvoiceResponse.Invoices[i].LineItems)
                        {
                            //check if item already exist, if not add it into database
                            ItemSQLite itemSQLite = App.ItemDatabase.GetItemByID(lineItem.ItemCode);
                            if (itemSQLite == null)
                            {
                                ItemSQLite newItem = new ItemSQLite()
                                {
                                    ItemCode    = lineItem.ItemCode,
                                    Description = lineItem.Description,
                                    Weight      = lineItem.Weight
                                };
                                App.ItemDatabase.InsertItem(newItem);
                            }
                            else if (itemSQLite.Weight != lineItem.Weight)
                            {
                                itemSQLite.Weight      = lineItem.Weight;
                                itemSQLite.Description = lineItem.Description;
                                App.ItemDatabase.UpdateItem(itemSQLite);
                            }

                            LineItemSQLite lineItemSQLite = lineItemSQLiteList.Where(lineItemX => lineItemX.ItemCode == lineItem.ItemCode).FirstOrDefault();
                            if (lineItemSQLite == null)
                            {
                                continue;
                            }
                            if (lineItemSQLite.UnitAmount != lineItem.UnitAmount || lineItemSQLite.Quantity != lineItemSQLite.Quantity)
                            {
                                lineItemSQLite.UnitAmount = lineItem.UnitAmount;
                                lineItemSQLite.Quantity   = (int)lineItem.Quantity;
                                App.LineItemDatabase.UpdateLineItem(lineItemSQLite);
                            }
                        }
                    }
                }
            }
            return(true);
        }
Exemplo n.º 17
0
        public static async Task <bool> FillData()
        {
            var tenantID = Preferences.Get("TenantID", string.Empty);
            Dictionary <string, InvoiceSQLite> allInvoicesInDatabase = App.InvoiceDatabase.GetAllInvoices().ToDictionary(invX => invX.InvoiceID, invX => invX);

            for (int i = 0; i < _InvoiceResponse.Invoices.Count; i++)
            {
                InvoiceSQLite invoiceInDatabase = null;

                if (allInvoicesInDatabase.ContainsKey(_InvoiceResponse.Invoices[i].InvoiceID))
                {
                    invoiceInDatabase = allInvoicesInDatabase[_InvoiceResponse.Invoices[i].InvoiceID];
                    allInvoicesInDatabase.Remove(_InvoiceResponse.Invoices[i].InvoiceID);
                }

                if (invoiceInDatabase != null && invoiceInDatabase.CompletedDeliveryStatus)
                {
                    continue;
                }

                if (_InvoiceResponse.Invoices[i].Status == "AUTHORISED" || _InvoiceResponse.Invoices[i].Status == "PAID")
                {
                    await FillItems(_InvoiceResponse.Invoices[i], i);
                    await FillContactAddress(_InvoiceResponse.Invoices[i].Contact, i);

                    //Insert data normally if the data doesnt exist else check for update
                    if (invoiceInDatabase == null)
                    {
                        InvoiceSQLite invoiceSqlite = new InvoiceSQLite()
                        {
                            InvoiceType             = _InvoiceResponse.Invoices[i].Type,
                            InvoiceID               = _InvoiceResponse.Invoices[i].InvoiceID,
                            TenantID                = tenantID,
                            InvoiceNumber           = _InvoiceResponse.Invoices[i].InvoiceNumber,
                            CompletedDeliveryStatus = false,
                            ContactID               = _InvoiceResponse.Invoices[i].Contact.ContactID,
                            Subtotal                = _InvoiceResponse.Invoices[i].SubTotal,
                            UpdateTimeTicksXERO     = _InvoiceResponse.Invoices[i].UpdatedDateUTC.Ticks,
                            UpdateTimeTicksApp      = _InvoiceResponse.Invoices[i].UpdatedDateUTC.Ticks,
                        };
                        App.InvoiceDatabase.InsertInvoice(invoiceSqlite, _InvoiceResponse.Invoices[i].LineItems, _InvoiceResponse.Invoices[i].Contact);
                    }
                    else
                    {
                        ContactSQLite contactInDatabase = App.ContactDatabase.GetContactByID(invoiceInDatabase.ContactID);
                        ContactSQLite newContact        = App.ContactDatabase.PrepareContactSQLite(_InvoiceResponse.Invoices[i].Contact);

                        if (contactInDatabase.Address != newContact.Address || contactInDatabase.Fullname != newContact.Fullname ||
                            contactInDatabase.City != newContact.City || contactInDatabase.PhoneNumber != newContact.PhoneNumber)
                        {
                            App.ContactDatabase.UpdateContactPosition(newContact);
                        }


                        if (_InvoiceResponse.Invoices[i].UpdatedDateUTC.Ticks == invoiceInDatabase.UpdateTimeTicksXERO)
                        {
                            continue;
                        }

                        if (invoiceInDatabase.InvoiceNumber != _InvoiceResponse.Invoices[i].InvoiceNumber)
                        {
                            invoiceInDatabase.InvoiceNumber = _InvoiceResponse.Invoices[i].InvoiceNumber;
                        }
                        invoiceInDatabase.UpdateTimeTicksXERO = _InvoiceResponse.Invoices[i].UpdatedDateUTC.Ticks;
                        App.InvoiceDatabase.UpdateInvoiceNumber(invoiceInDatabase);

                        List <LineItemSQLite> lineItemSQLiteList = App.LineItemDatabase.GetLineItemByInvoiceID(_InvoiceResponse.Invoices[i].InvoiceID);

                        var maxItemLineID = App.LineItemDatabase.GetLastLineItem();
                        int itemLineID    = maxItemLineID == null ? 1 : maxItemLineID.ItemLineID;

                        foreach (LineItem lineItem in _InvoiceResponse.Invoices[i].LineItems)
                        {
                            ItemSQLite itemSQLite = App.ItemDatabase.GetItemByID(lineItem.ItemCode);
                            if (itemSQLite == null)
                            {
                                ItemSQLite newItem = new ItemSQLite()
                                {
                                    ItemCode    = lineItem.ItemCode,
                                    Description = lineItem.Description,
                                    Weight      = lineItem.Weight,
                                };
                                if (_InvoiceResponse.Invoices[i].Type == "ACCPAY")
                                {
                                    newItem.UnitCost = lineItem.UnitAmount;
                                }
                                App.ItemDatabase.InsertItem(newItem);

                                itemLineID++;
                                //create the id by referencing lineitemtable
                                LineItemSQLite lineItemSQLite = new LineItemSQLite()
                                {
                                    // if it's not set set the itemline id to 1 else increment 1 from the biggest value
                                    ItemLineID = itemLineID,
                                    InvoiceID  = _InvoiceResponse.Invoices[i].InvoiceID,
                                    ItemCode   = lineItem.ItemCode,
                                    Quantity   = (int)lineItem.Quantity,
                                    UnitAmount = lineItem.UnitAmount,
                                };
                                //Save to db
                                App.LineItemDatabase.InsertLineItem(lineItemSQLite);
                            }
                            else
                            {
                                itemSQLite.Description = lineItem.Description;
                                itemSQLite.ItemCode    = lineItem.ItemCode;
                                itemSQLite.Weight      = lineItem.Weight;
                                if (_InvoiceResponse.Invoices[i].Type == "ACCPAY")
                                {
                                    itemSQLite.UnitCost = lineItem.UnitAmount;
                                }
                                App.ItemDatabase.UpdateItem(itemSQLite);
                                LineItemSQLite theLineItem = lineItemSQLiteList.Where(lineItemX => lineItemX.ItemCode == lineItem.ItemCode).FirstOrDefault();
                                if (theLineItem == null)
                                {
                                    itemLineID++;
                                    //create the id by referencing lineitemtable
                                    theLineItem = new LineItemSQLite()
                                    {
                                        // if it's not set set the itemline id to 1 else increment 1 from the biggest value
                                        ItemLineID = itemLineID,
                                        InvoiceID  = _InvoiceResponse.Invoices[i].InvoiceID,
                                        ItemCode   = lineItem.ItemCode,
                                        Quantity   = (int)lineItem.Quantity,
                                        UnitAmount = lineItem.UnitAmount,
                                    };
                                    //Save to db
                                    App.LineItemDatabase.InsertLineItem(theLineItem);
                                }
                                else
                                {
                                    theLineItem.Quantity   = (int)lineItem.Quantity;
                                    theLineItem.UnitAmount = lineItem.UnitAmount;
                                    App.LineItemDatabase.UpdateLineItem(theLineItem);
                                    lineItemSQLiteList.Remove(theLineItem);
                                }
                            }
                        }

                        if (lineItemSQLiteList.Count > 0)
                        {
                            foreach (LineItemSQLite lineItemSQLite in lineItemSQLiteList)
                            {
                                App.LineItemDatabase.DeleteLineItem(lineItemSQLite);
                            }
                        }
                    }
                }
                else if (_InvoiceResponse.Invoices[i].Status == "VOIDED" && invoiceInDatabase != null)
                {
                    App.InvoiceDatabase.DeleteInvoiceByInvoice(invoiceInDatabase);
                }
            }
            return(true);
        }