private static void RemoveExistingDbReceipts(POSAIData.POSAIEntities db, SalesReceiptRet saleReceipt)
        {
            POSAIData.SalesReceipt xr = (POSAIData.SalesReceipt)(from er in db.SalesReceipts
                                                                 where er.SalesReceiptNumber == saleReceipt.SalesReceiptNumber
                                                                 select er).FirstOrDefault();

            if (xr != null)
            {
                db.SalesReceipts.Remove(xr);
                // db.SaveChanges();
            }
        }
        private void SaveToDataBase(TrackableCollection <SalesReceiptRet> trackableCollection)
        {
            try
            {
                POSAIData.POSAIEntities db = new POSAIData.POSAIEntities();
                foreach (SalesReceiptRet saleReceipt in trackableCollection)
                {
                    POSAIData.SalesReceipt sr = new POSAIData.SalesReceipt();

                    RemoveExistingDbReceipts(db, saleReceipt);

                    sr.SalesReceiptNumber = saleReceipt.SalesReceiptNumber;
                    sr.TxnDate            = saleReceipt.TxnDate;

                    // do details
                    foreach (POSAI_mvvm.QuickBooks.SalesReceiptRetSalesReceiptItemRet saleReceiptDetail in saleReceipt.SalesReceiptItems)
                    {
                        POSAIData.SalesReceiptDetails itm = new POSAIData.SalesReceiptDetails();
                        itm.ItemListID = saleReceiptDetail.ListID;
                        itm.Tax        = saleReceiptDetail.TaxAmount;
                        itm.QtySold    = System.Convert.ToDecimal(saleReceiptDetail.Qty);
                        itm.ItemKey    = saleReceiptDetail.Desc1 + "|" + saleReceiptDetail.Desc2 + "|" + saleReceiptDetail.Attribute + "|" + saleReceiptDetail.Size;
                        itm.ItemALU    = saleReceiptDetail.ALU;
                        itm.ItemDesc1  = saleReceiptDetail.Desc1;
                        itm.ItemDesc2  = saleReceiptDetail.Desc2;
                        sr.SalesReceiptDetails.Add(itm);
                    }
                    db.SalesReceipts.Add(sr);
                }

                db.SaveChanges();
                MessageBox.Show("Sale Receipt Import Complete");
            }
            catch (DbEntityValidationException e)
            {
                foreach (var eve in e.EntityValidationErrors)
                {
                    Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                      eve.Entry.Entity.GetType().Name, eve.Entry.State);
                    foreach (var ve in eve.ValidationErrors)
                    {
                        Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                          ve.PropertyName, ve.ErrorMessage);
                    }
                }
                throw;
            }
            catch (Exception e)
            {
                throw e;
            }
        }