コード例 #1
0
ファイル: SaveTXT.cs プロジェクト: Alphaquest2005/WaterNut
        private IEnumerable <EntryData> FixExistingEntryData(List <EntryData> elst)
        {
            var exceptions = new ConcurrentQueue <Exception>();

            Parallel.ForEach(elst, itm =>
            {
                try
                {
                    using (var ctx = new EntryDataDSContext())
                    {
                        var pi = ctx.EntryData.Find(itm.EntryDataId);
                        if (pi != null)
                        {
                            ctx.EntryData.Remove(pi);
                            ctx.SaveChanges();
                            ctx.Database.ExecuteSqlCommand(
                                string.Format("Delete from EntryData_PurchaseOrders where EntryDataId = '{0}'",
                                              itm.EntryDataId));
                        }
                    }
                }
                catch (Exception ex)
                {
                    exceptions.Enqueue(ex);
                }
            });
            if (exceptions.Count > 0)
            {
                throw new AggregateException(exceptions);
            }
            return(elst);//.Where(x => x != null)
        }
コード例 #2
0
        public async Task ProcessDroppedFile(string fileName, string fileType, AsycudaDocumentSet docSet, bool overWriteExisting)
        {
            //get the text
            var wStr = Core.Common.PDF2TXT.Pdf2Txt.Instance.ExtractTextFromPdf(fileName);

            var elst = await GetEntryData(wStr).ConfigureAwait(false);

            await ImportInventory(elst).ConfigureAwait(false);

            var flst       = FixExistingEntryData(elst);
            var exceptions = new ConcurrentQueue <Exception>();

            flst.AsParallel(new ParallelLinqOptions()
            {
                MaxDegreeOfParallelism = Environment.ProcessorCount
            }).ForAll(itm =>
            {
                try
                {
                    using (var ctx = new EntryDataDSContext())
                    {
                        ctx.ApplyChanges(itm);
                        ctx.SaveChanges();
                    }
                }
                catch (Exception ex)
                {
                    exceptions.Enqueue(ex);
                }
            });
            if (exceptions.Count > 0)
            {
                throw new AggregateException(exceptions);
            }
        }
コード例 #3
0
ファイル: SaveTXT.cs プロジェクト: Alphaquest2005/WaterNut
        private async Task SaveEntryData(IEnumerable <EntryData> flst)
        {
            var exceptions = new ConcurrentQueue <Exception>();

            flst.AsParallel(new ParallelLinqOptions()
            {
                MaxDegreeOfParallelism = Environment.ProcessorCount
            }).ForAll(itm =>
            {
                try
                {
                    using (var ctx = new EntryDataDSContext())
                    {
                        ctx.ApplyChanges(itm);
                        ctx.SaveChanges();
                    }
                }
                catch (Exception ex)
                {
                    exceptions.Enqueue(ex);
                }
            });
            if (exceptions.Count > 0)
            {
                throw new AggregateException(exceptions);
            }
        }
コード例 #4
0
        private async Task SaveToDataBase(IEnumerable <SalesReceiptRet> trackableCollection, AsycudaDocumentSet currentAsycudaDocumentSet)
        {
            var salesReceiptRets = trackableCollection as IList <SalesReceiptRet> ?? trackableCollection.ToList();

            StatusModel.StartStatusUpdate("Importing Sales Data", salesReceiptRets.Count());
            using (var ctx = new EntryDataDSContext())
            {
                foreach (var saleReceipt in salesReceiptRets)
                {
                    StatusModel.StatusUpdate();
                    SalesReceiptRet receipt = saleReceipt;
                    var             s       = ctx.EntryData.OfType <Sales>().FirstOrDefault(x => x.EntryDataId == receipt.SalesReceiptNumber);
                    if (s == null)
                    {
                        s = new Sales(true)
                        {
                            TrackingState = TrackingState.Added
                        };
                    }

                    // RemoveExistingDbReceipts(db, saleReceipt);
                    s.INVNumber     = saleReceipt.SalesReceiptNumber;
                    s.EntryDataId   = saleReceipt.SalesReceiptNumber;
                    s.EntryDataDate = saleReceipt.TxnDate;
                    s.TaxAmount     = Convert.ToDouble(saleReceipt.TaxAmount);
                    s.AsycudaDocumentSets.Add(new AsycudaDocumentSetEntryData(true)
                    {
                        AsycudaDocumentSetId = currentAsycudaDocumentSet.AsycudaDocumentSetId,
                        EntryDataId          = s.EntryDataId,
                        TrackingState        = TrackingState.Added
                    });


                    // do details
                    if (saleReceipt.SalesReceiptItems == null)
                    {
                        continue;
                    }

                    //foreach (var ed in s.EntryDataDetails.ToList())
                    //{
                    //    s.EntryDataDetails.Remove(ed);
                    //    db.DeleteObject(ed);
                    //}

                    for (var i = 0; i < saleReceipt.SalesReceiptItems.Count(); i++)
                    {
                        var saleReceiptDetail = saleReceipt.SalesReceiptItems[i];
                        var itm = s.EntryDataDetails.FirstOrDefault(x => x.LineNumber == i);
                        if (itm == null)
                        {
                            itm = new EntryDataDetails(true)
                            {
                                EntryDataId     = s.EntryDataId,
                                ItemNumber      = saleReceiptDetail.ItemNumber,
                                ItemDescription = saleReceiptDetail.Desc1 + "|" + saleReceiptDetail.Desc2 + "|" + saleReceiptDetail.Attribute,
                                Cost            = Convert.ToSingle(saleReceiptDetail.Cost),
                                LineNumber      = i,
                                UnitWeight      = Convert.ToSingle(saleReceiptDetail.Weight),
                                Units           = saleReceiptDetail.UnitOfMeasure,
                                TrackingState   = TrackingState.Added
                            };
                        }
                        else
                        {
                            itm.ItemNumber      = saleReceiptDetail.ItemNumber;
                            itm.ItemDescription = saleReceiptDetail.Desc1 + "|" + saleReceiptDetail.Desc2 + "|" + saleReceiptDetail.Attribute;
                            itm.Cost            = Convert.ToSingle(saleReceiptDetail.Cost);
                            itm.LineNumber      = i;
                            itm.UnitWeight      = Convert.ToSingle(saleReceiptDetail.Weight);
                            itm.Units           = saleReceiptDetail.UnitOfMeasure;
                        }

                        InventoryItem inv = null;
                        using (var ictx = new InventoryDSContext())
                        {
                            inv = await ictx.InventoryItems.FindAsync(saleReceiptDetail.ItemNumber).ConfigureAwait(false);

                            if (inv == null)
                            {
                                inv = new InventoryItem(true)
                                {
                                    ItemNumber    = saleReceiptDetail.ItemNumber,
                                    Description   = GetQBSaleItemDescription(saleReceiptDetail),
                                    TrackingState = TrackingState.Added
                                };
                                ictx.ApplyChanges(inv);
                                await ictx.SaveChangesAsync().ConfigureAwait(false);
                            }
                        }
                        itm.ItemDescription = inv.Description;

                        switch (saleReceipt.SalesReceiptType)
                        {
                        case "srtReturn":
                            itm.Quantity = Convert.ToSingle(saleReceiptDetail.Qty) * -1;
                            break;

                        case "srtSales":
                            itm.Quantity = Convert.ToSingle(saleReceiptDetail.Qty);
                            break;

                        default:
                            throw new Exception("Unknown SalesType");
                            break;
                        }

                        s.EntryDataDetails.Add(itm);
                    }
                    ctx.ApplyChanges(s);
                    await ctx.SaveChangesAsync().ConfigureAwait(false);
                }
            }


            StatusModel.StopStatusUpdate();
            MessageBox.Show(@"Sale Receipt Import Complete");
        }