コード例 #1
0
        public static async Task <List <ItemInventoryRet> > GetAllInventoryQuery(string QBCompanyFile)
        {
            int    increment      = 1000;
            int    toItemNumber   = 0;
            int    fromItemNumber = 0;
            string errstring      = null;


            var lst = new List <ItemInventoryRet>();

            while (errstring == null)
            {
                toItemNumber += increment;

                var requestXml = ItemInventoryViewModel.BuildItemInventoryQueryRq(fromItemNumber, toItemNumber);
                fromItemNumber = toItemNumber;
                var res  = QBPosContext.ProcessXML(requestXml.OuterXml, QBCompanyFile);
                var itms = GetQBInventoryItems(res);
                if (!itms.Any())
                {
                    break;
                }
                lst.AddRange(itms);
            }

            return(lst);
        }
コード例 #2
0
        public static List <ItemInventoryRet> ValidateInventoryItemQuery(string listId, string QBCompanyFile)
        {
            var modxml = ItemInventoryViewModel.BuildItemInventoryQueryRq(listId);


            var modres = QBPosContext.ProcessXML(modxml.OuterXml, QBCompanyFile);

            //if(sessionBegun == true)

            var lst = new List <ItemInventoryRet>();

            lst.AddRange(GetQBInventoryItems(modres));



            return(lst.GroupBy(x => x.ListID).Select(grp => grp.First()).ToList());
        }
コード例 #3
0
        public IEnumerable <ItemInventoryRet> GetInventoryItemQuery(int days = 1)
        {
            IMsgSetRequest ItemInventoryRequestMsgSet = sessionManager.CreateMsgSetRequest(3, 0);

            ItemInventoryRequestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;
            ItemInventoryViewModel inventoryVM = new ItemInventoryViewModel();

            inventoryVM.BuildItemInventoryQueryRq(ItemInventoryRequestMsgSet, days);

            BeginSession();
            ////Send the request and get the response from QuickBooks
            IMsgSetResponse ItemInventoryResponseMsgSet = sessionManager.DoRequests(ItemInventoryRequestMsgSet);

            CloseSession();

            return(inventoryVM.WalkItemInventoryQueryRs(ItemInventoryResponseMsgSet));
        }
コード例 #4
0
        public async Task <List <ItemInventoryRet> > GetAllInventoryQuery()
        {
            if (sessionManager != null)
            {
                var ItemInventoryRequestMsgSet = sessionManager.CreateMsgSetRequest(3, 0);
                ItemInventoryRequestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;
                var    inventoryVM    = new ItemInventoryViewModel();
                int    increment      = 1000;
                int    toItemNumber   = 0;
                int    fromItemNumber = 0;
                string errstring      = null;


                var lst = new List <ItemInventoryRet>();

                while (errstring == null)
                {
                    toItemNumber += increment;
                    ItemInventoryRequestMsgSet.ClearRequests();
                    inventoryVM.BuildItemInventoryQueryRq(ItemInventoryRequestMsgSet, fromItemNumber, toItemNumber);
                    fromItemNumber = toItemNumber;
                    ItemInventoryRequestMsgSet.Verify(out errstring);

                    IMsgSetResponse ItemInventoryResponseMsgSet = null;
                    ItemInventoryResponseMsgSet = sessionManager.DoRequests(ItemInventoryRequestMsgSet);
                    var responseStatus = new Tuple <string, TrackableCollection <ItemInventoryRet> >("", null);
                    if (ItemInventoryResponseMsgSet != null)
                    {
                        responseStatus = await inventoryVM.WalkItemInventoryQueryRsAsync(ItemInventoryResponseMsgSet).ConfigureAwait(false);
                    }


                    if (errstring != null || responseStatus.Item1 == "0")
                    {
                        break;
                    }
                    lst.AddRange(responseStatus.Item2);
                }

                return(lst);
            }
            return(new List <ItemInventoryRet>());
        }
コード例 #5
0
ファイル: QBPOS.cs プロジェクト: Alphaquest2005/WaterNut
        public static async Task DownloadQbData(DateTime startDate, DateTime endDate, AsycudaDocumentSet currentAsycudaDocumentSet, bool ImportSales, bool ImportInventory)
        {
            StatusModel.Timer("Connecting to QuickBooks");

            var sessionBegun   = false;
            var connectionOpen = false;
            QBPOSSessionManager sessionManager = null;

            //try
            //{
            // get qbpos filename
            var qbposfile = "";

            //Create the session Manager object
            sessionManager = new QBPOSSessionManager();
            sessionManager.OpenConnection("1", "Insight's Asycuda Toolkit");
            short          majorVersion;
            short          minorVersion;
            ENReleaseLevel releaseLevel;
            short          releaseNumber;

            // sessionManager.GetVersion(out majorVersion, out minorVersion, out releaseLevel, out releaseNumber);



            connectionOpen = true;
            sessionManager.BeginSession(qbposfile);
            sessionBegun = true;

            try
            {
                if (ImportInventory)
                {
                    var ItemInventoryRequestMsgSet = sessionManager.CreateMsgSetRequest(3, 0);
                    ItemInventoryRequestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;
                    var    inventoryVM    = new ItemInventoryViewModel();
                    int    increment      = 1000;
                    int    toItemNumber   = 0;
                    int    fromItemNumber = 0;
                    string errstring      = null;

                    while (errstring == null)
                    {
                        toItemNumber += increment;
                        ItemInventoryRequestMsgSet.ClearRequests();
                        inventoryVM.BuildItemInventoryQueryRq(ItemInventoryRequestMsgSet, fromItemNumber, toItemNumber);
                        fromItemNumber = toItemNumber;
                        ItemInventoryRequestMsgSet.Verify(out errstring);

                        IMsgSetResponse ItemInventoryResponseMsgSet = null;
                        ItemInventoryResponseMsgSet = sessionManager.DoRequests(ItemInventoryRequestMsgSet);
                        var responseStatus = new Tuple <string>(null);
                        if (ItemInventoryResponseMsgSet != null)
                        {
                            responseStatus = await inventoryVM.WalkItemInventoryQueryRs(ItemInventoryResponseMsgSet).ConfigureAwait(false);
                        }

                        if (errstring != null || responseStatus.Item1 == "0")
                        {
                            break;
                        }
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }



            if (ImportSales)
            {
                StatusModel.Timer("Getting Data Request");
                var SalesReceiptRequestMsgSet = sessionManager.CreateMsgSetRequest(3, 0);
                SalesReceiptRequestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;
                var SalesReceiptVM = new SalesReceiptViewModel();
                SalesReceiptVM.BuildSalesReceiptQueryRq(SalesReceiptRequestMsgSet, startDate, endDate);
                IMsgSetResponse SalesReceiptResponseMsgSet = null;

                SalesReceiptResponseMsgSet = sessionManager.DoRequests(SalesReceiptRequestMsgSet);

                if (SalesReceiptResponseMsgSet != null)
                {
                    await SalesReceiptVM.WalkSalesReceiptQueryRs(SalesReceiptResponseMsgSet, currentAsycudaDocumentSet).ConfigureAwait(false);
                }
            }



            //End the session and close the connection to QuickBooks
            sessionManager.EndSession();
            sessionBegun = false;
            sessionManager.CloseConnection();
            connectionOpen = false;



            StatusModel.StopStatusUpdate();
        }