/// <summary>
        /// Creates the request body to send to the service.
        /// </summary>
        /// <returns>The generated request</returns>
        private IMsgSetRequest CreateRequest()
        {
            IMsgSetRequest request = _manager.CreateMsgSetRequest(_country, _qbsdkMajor, _qbsdkMinor);

            request.Attributes.OnError = ENRqOnError.roeContinue;

            return(request);
        }
Esempio n. 2
0
        /// <summary>
        /// Get a MsgSetRequest for latest supported version of QBFC.
        /// </summary>
        private void getLatestMsgSetRequest()
        {
            short qbXMLMajorVer = 0;
            short qbXMLMinorVer = 0;

            if (QBVer >= 6.0)
            {
                qbXMLMajorVer = 6;
                qbXMLMinorVer = 0;
            }
            else if (QBVer >= 5.0)
            {
                qbXMLMajorVer = 5;
                qbXMLMinorVer = 0;
            }
            else if (QBVer >= 4.0)
            {
                qbXMLMajorVer = 4;
                qbXMLMinorVer = 0;
            }
            else if (QBVer >= 3.0)
            {
                qbXMLMajorVer = 3;
                qbXMLMinorVer = 0;
            }
            else if (QBVer >= 2.0)
            {
                qbXMLMajorVer = 2;
                qbXMLMinorVer = 0;
            }
            else if (QBVer >= 1.1)
            {
                qbXMLMajorVer = 1;
                qbXMLMinorVer = 1;
            }
            else
            {
                qbXMLMajorVer = 1;
                qbXMLMinorVer = 0;
                Console.WriteLine("It seems that you are running QuickBooks 2002 Release 1. We strongly " +
                                  "recommend that you use QuickBooks' online update feature to obtain the latest fixes " +
                                  "and enhancements");
            }

            // Create the message set request object
            requestMsgSet = SessionManager.CreateMsgSetRequest("US", qbXMLMajorVer, qbXMLMinorVer);

            // Initialize the message set request object
            requestMsgSet.Attributes.OnError = ENRqOnError.roeStop;
        }
        private void modifyCustomer(ICustomerRet QBCustomer)
        {
            Console.WriteLine(QBCustomer.Name.GetValue() + ": " + QBCustomer.Email.GetValue());

            IMsgSetRequest requestMsgSet = _MySessionManager.CreateMsgSetRequest("US", 13, 0);

            ICustomerMod Query = requestMsgSet.AppendCustomerModRq();

            Query.ListID.SetValue(QBCustomer.ListID.GetValue());
            Query.EditSequence.SetValue(QBCustomer.EditSequence.GetValue());
            Query.Email.SetValue("");

            IMsgSetResponse responseMsgSet = _MySessionManager.DoRequests(requestMsgSet);

            //IResponseList rsList = responseMsgSet.ResponseList;
            //IResponse response = rsList.GetAt(0);

            //ICustomerRet QBCustomer = (ICustomerRet)response.Detail;

            //if (QBCustomer == null)
            //{
            //    throw new Exception("Sorry, sales order not found.");
            //}

            //string CustomerName = QBCustomer.Name.GetValue().ToString();
            ////string email = QBCustomer.Email.GetValue();

            //Console.WriteLine(CustomerName);
        }
Esempio n. 4
0
        public void vendorAdd(string name)
        {
            //open session to add vendor
            QBSessionManager sessionManager = new QBSessionManager();

            sessionManager.OpenConnection("appID", "Create Vendor");
            sessionManager.BeginSession("", ENOpenMode.omDontCare);
            IMsgSetRequest messageSet = sessionManager.CreateMsgSetRequest("US", 13, 0);

            IVendorAdd vendorAddRequest = messageSet.AppendVendorAddRq();

            vendorAddRequest.Name.SetValue(name); //add vendor
                                                  // name is the string passed from the list containing the vendors that need to be added to quickbooks

            IMsgSetResponse responseSet = sessionManager.DoRequests(messageSet);

            sessionManager.EndSession();
            sessionManager.CloseConnection();

            for (int i = 0; i < responseSet.ResponseList.Count; i++)
            {
                IResponse response = responseSet.ResponseList.GetAt(i);
                var       code     = response.StatusCode;
                string    code2    = code.ToString();
                string    code3    = response.StatusMessage;
                if (response.StatusCode > 0)
                {
                }
                // MessageBox.Show(code3);
            }
        }
Esempio n. 5
0
        public void OpenQB()
        {
            QBSessionManager sessionManager = null;

            try
            {
                sessionManager = new QBSessionManager();
                IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("CA", 13, 0);
                requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;

                sessionManager.OpenConnection("QBAPI", "Quickbooks SDK Demo Test");
                string qbFile = ConfigurationSettings.AppSettings["companyfile"].ToString();
                Console.WriteLine(qbFile);
                sessionManager.BeginSession(
                    qbFile, ENOpenMode.omMultiUser);

                ICustomerQuery customerQueryRq = requestMsgSet.AppendCustomerQueryRq();
                customerQueryRq.ORCustomerListQuery.CustomerListFilter.ActiveStatus.SetValue(ENActiveStatus.asAll);


                IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);

                sessionManager.EndSession();
                sessionManager.CloseConnection();
            }
            catch (Exception ex)
            {
                System.Console.WriteLine(ex.Message);
                sessionManager.EndSession();
                sessionManager.CloseConnection();
            }
        }
        private double QBFCLatestVersion(QBSessionManager SessionManager)
        {
            // Use oldest version to ensure that this application work with any QuickBooks (US)
            IMsgSetRequest msgset = SessionManager.CreateMsgSetRequest("US", 1, 0);

            msgset.AppendHostQueryRq();
            IMsgSetResponse QueryResponse = SessionManager.DoRequests(msgset);


            // The response list contains only one response,
            // which corresponds to our single HostQuery request
            IResponse response = QueryResponse.ResponseList.GetAt(0);

            // Please refer to QBFC Developers Guide for details on why
            // "as" clause was used to link this derrived class to its base class
            IHostRet  HostResponse      = response.Detail as IHostRet;
            IBSTRList supportedVersions = HostResponse.SupportedQBXMLVersionList as IBSTRList;

            int    i;
            double vers;
            double LastVers = 0;
            string svers    = null;

            for (i = 0; i <= supportedVersions.Count - 1; i++)
            {
                svers = supportedVersions.GetAt(i);
                vers  = Convert.ToDouble(svers);
                if (vers > LastVers)
                {
                    LastVers = vers;
                }
            }
            return(LastVers);
        }
        static double QbfcLatestVersion(QBSessionManager manager)
        {
            var msgset = manager.CreateMsgSetRequest("US", 1, 0);

            msgset.AppendHostQueryRq();

            var queryResponse = manager.DoRequests(msgset);
            var response      = queryResponse.ResponseList.GetAt(0);
            var hostResponse  = response.Detail as IHostRet;

            Debug.Assert(hostResponse != null, "hostResponse != null");

            var supportedVersions = hostResponse.SupportedQBXMLVersionList;

            int    i;
            double lastVersion = 0;

            for (i = 0; i <= supportedVersions.Count - 1; i++)
            {
                var vers = Convert.ToDouble(supportedVersions.GetAt(i));

                if (vers > lastVersion)
                {
                    lastVersion = vers;
                }
            }

            return(lastVersion);
        }
        /// <summary>
        ///  Don't require Major and Minor version
        /// </summary>
        /// <param name="country"></param>
        /// <returns></returns>
        public bool connect(string country)
        {
            try
            {
                Array array = this.getSupportedVersion();
                mjrVersion = (short)double.Parse(array.GetValue(array.Length - 1).ToString());
                mnrVersion = 0;//double.Parse(array.GetValue(0).ToString());
                this.connect(country, this.mjrVersion, this.mnrVersion);
                requestMsgSet = sessionManager.CreateMsgSetRequest(this.country, this.mjrVersion, this.mnrVersion);
            }
            catch (Exception e) {
                return(false);

                throw new QBException(01, e.ToString());
            }
            return(true);
        }
        protected IMsgSetRequest GetLatestMsgSetRequest()
        {
            IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest(MaestroApplication.Instance.QuickBooksCountry,
                                                                              MaestroApplication.Instance.QuickBooksMajorVersion, MaestroApplication.Instance.QuickBooksMinorVersion);

            requestMsgSet.Attributes.OnError = ENRqOnError.roeStop;

            return(requestMsgSet);
        }
Esempio n. 10
0
        public IMsgSetRequest CreateRequestMessage(ref QBSessionManager sessionManager)
        {
            //Create the message set request object to hold our request
            IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("UK", 12, 0);

            requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;

            return(requestMsgSet);
        }
    public static string buildSalesReceiptAddRqXML(Session sess, string[,] sales)
    {
        QBSessionManager sessionManager = new QBSessionManager();
        IMsgSetRequest   requestSet     = sessionManager.CreateMsgSetRequest(sess.getCountry(), sess.getMajorVers(), sess.getMinorVers());

        requestSet.Attributes.OnError = ENRqOnError.roeStop;

        buildSalesRequest(sales, requestSet);
        return(requestSet.ToXMLString());
    }
Esempio n. 12
0
        public static QBResult AddSalesReceipt(SalesReceipt salesreceipt, string QBCompanyFile)
        {
            bool             sessionBegun   = false;
            bool             connectionOpen = false;
            QBSessionManager sessionManager = null;

            try
            {
                //Create the session Manager object
                sessionManager = new QBSessionManager();

                //Create the message set request object to hold our request
                IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", 3, 0);
                requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;

                BuildSalesReceiptAddRq(requestMsgSet);

                //Connect to QuickBooks and begin a session
                sessionManager.OpenConnection("", "Sample Code from OSR");
                connectionOpen = true;
                sessionManager.BeginSession("", ENOpenMode.omDontCare);
                sessionBegun = true;

                //Send the request and get the response from QuickBooks
                IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);

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

                WalkSalesReceiptAddRs(responseMsgSet);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Error");
                if (sessionBegun)
                {
                    sessionManager.EndSession();
                }
                if (connectionOpen)
                {
                    sessionManager.CloseConnection();
                }
            }
            //var saleXml = SalesReceiptViewModel.BuildSalesReceiptAddRq(salesreceipt);
            //if (saleXml != null)
            //{
            //    var responseXml = QBPosContext.ProcessXML(saleXml.OuterXml, QBCompanyFile);

            //    return GetQBResult(responseXml);
            //}
            //return null;
        }
Esempio n. 13
0
		///<summary>Creates a new QB connection and begins the session.  Session will be left open until CloseConnection is called.  Major and minor version refer to the implementation version of the paticular QB request you are trying to run.  The connection will fail if the version you pass in does not support the type of request you are trying to run.</summary>
		private static void OpenConnection(short majorVer,short minorVer,string companyPath) {
			SessionManager=new QBSessionManager();
			//Create the message set request object to hold our request.
			RequestMsgSet=SessionManager.CreateMsgSetRequest("US",majorVer,minorVer);
			RequestMsgSet.Attributes.OnError=ENRqOnError.roeContinue;
			//Connect to QuickBooks and begin a session
			SessionManager.OpenConnection("","Open Dental");
			ConnectionOpen=true;
			SessionManager.BeginSession(companyPath,ENOpenMode.omDontCare);
			SessionBegun=true;
		}
Esempio n. 14
0
 ///<summary>Creates a new QB connection and begins the session.  Session will be left open until CloseConnection is called.  Major and minor version refer to the implementation version of the paticular QB request you are trying to run.  The connection will fail if the version you pass in does not support the type of request you are trying to run.</summary>
 private static void OpenConnection(short majorVer, short minorVer, string companyPath)
 {
     SessionManager = new QBSessionManager();
     //Create the message set request object to hold our request.
     RequestMsgSet = SessionManager.CreateMsgSetRequest("US", majorVer, minorVer);
     RequestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;
     //Connect to QuickBooks and begin a session
     SessionManager.OpenConnection("", "Open Dental");
     ConnectionOpen = true;
     SessionManager.BeginSession(companyPath, ENOpenMode.omDontCare);
     SessionBegun = true;
 }
        public IMsgSetRequest getLatestMsgSetRequest(QBSessionManager sessionManager)
        {
            // IY: Find and adapt to supported version of QuickBooks
            double supportedVersion = QBFCLatestVersion(sessionManager);
            // MessageBox.Show("supportedVersion = " + supportedVersion.ToString());

            short qbXMLMajorVer = 0;
            short qbXMLMinorVer = 0;

            if (supportedVersion >= 6.0)
            {
                qbXMLMajorVer = 6;
                qbXMLMinorVer = 0;
            }
            else if (supportedVersion >= 5.0)
            {
                qbXMLMajorVer = 5;
                qbXMLMinorVer = 0;
            }
            else if (supportedVersion >= 4.0)
            {
                qbXMLMajorVer = 4;
                qbXMLMinorVer = 0;
            }
            else if (supportedVersion >= 3.0)
            {
                qbXMLMajorVer = 3;
                qbXMLMinorVer = 0;
            }
            else if (supportedVersion >= 2.0)
            {
                qbXMLMajorVer = 2;
                qbXMLMinorVer = 0;
            }
            else if (supportedVersion >= 1.1)
            {
                qbXMLMajorVer = 1;
                qbXMLMinorVer = 1;
            }
            else
            {
                qbXMLMajorVer = 1;
                qbXMLMinorVer = 0;
                MessageBox.Show("It seems that you are running QuickBooks 2002 Release 1. We strongly recommend that you use QuickBooks' online update feature to obtain the latest fixes and enhancements");
            }
            // MessageBox.Show("qbXMLMajorVer = " + qbXMLMajorVer);
            // MessageBox.Show("qbXMLMinorVer = " + qbXMLMinorVer);

            // IY: Create the message set request object
            IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", qbXMLMajorVer, qbXMLMinorVer);

            return(requestMsgSet);
        }
    public static String queryAll(Session sess)
    {
        QBSessionManager sessionManager = new QBSessionManager();
        IMsgSetRequest   requestSet     = sessionManager.CreateMsgSetRequest(sess.getCountry(), sess.getMajorVers(), sess.getMinorVers());

        requestSet.Attributes.OnError = ENRqOnError.roeStop;
        IItemInventoryQuery ItemQ = requestSet.AppendItemInventoryQueryRq();

        ItemQ.iterator.SetValue(ENiterator.itStart);
        ItemQ.ORListQueryWithOwnerIDAndClass.ListWithClassFilter.MaxReturned.SetValue(chunkSize);
        return(requestSet.ToXMLString());
    }
Esempio n. 17
0
        private void GetCustomers()
        {
            sessionManager = new QBSessionManager();
            sessionManager.OpenConnection("appID", "Bluefire Integration TEST");
            _connectionOpen = true;
            sessionManager.BeginSession(COMPANY_FILE, ENOpenMode.omDontCare);
            _sessionBegun = true;

            // Grab the list of customer names to populate our listbox
            IMsgSetRequest messageSet = sessionManager.CreateMsgSetRequest("CA", 12, 0);
            ICustomerQuery custQuery  = messageSet.AppendCustomerQueryRq();

            try
            {
                IMsgSetResponse responseSet = sessionManager.DoRequests(messageSet);
                sessionManager.EndSession();
                _sessionBegun = false;

                IResponse      response;
                ENResponseType responseType;

                for (int i = 0; i < responseSet.ResponseList.Count; i++)
                {
                    response = responseSet.ResponseList.GetAt(i);

                    if (response.Detail == null)
                    {
                        continue;
                    }

                    responseType = (ENResponseType)response.Type.GetValue();
                    if (responseType == ENResponseType.rtCustomerQueryRs)
                    {
                        ICustomerRetList custList = (ICustomerRetList)response.Detail;
                        for (int custIndex = 0; custIndex < custList.Count; custIndex++)
                        {
                            ICustomerRet customer = (ICustomerRet)custList.GetAt(custIndex);

                            if (customer != null && customer.CompanyName != null)
                            {
                                customer_listbox.Items.Add(customer.CompanyName.GetValue());
                            }
                        }
                    }
                }
            }
            catch (System.Runtime.InteropServices.COMException comEx)
            {
                // something bad happened; tell the user, smash his computer, whatever; its your choice
                MessageBox.Show(comEx.Message);
            }
        }
Esempio n. 18
0
        public static string queryNext(Session sess)
        {
            QBSessionManager sessionManager = new QBSessionManager();
            IMsgSetRequest   requestSet     = sessionManager.CreateMsgSetRequest(sess.getCountry(), sess.getMajorVers(), sess.getMinorVers());

            requestSet.Attributes.OnError = ENRqOnError.roeStop;
            IItemInventoryQuery ItemQ = requestSet.AppendItemInventoryQueryRq();

            ItemQ.iterator.SetValue(ENiterator.itContinue);
            ItemQ.iteratorID.SetValue(sess.getProperty("queryContext").ToString());
            //ItemQ.ORListQuery.ListFilter.MaxReturned.SetValue(chunkSize);
            return(requestSet.ToXMLString());
        }
Esempio n. 19
0
        /// <summary>
        /// Obtain a list of all QuickBooks accounts.
        /// </summary>
        /// <returns>a list of quickbooks accounts</returns>
        private List <QuickbooksAccount> getAccounts(ENAccountType type)
        {
            List <QuickbooksAccount> account    = new List <QuickbooksAccount>();
            IMsgSetRequest           msgRequest = qbMgr.CreateMsgSetRequest("US", 4, 0);

            msgRequest.Attributes.OnError = ENRqOnError.roeStop;
            IAccountQuery query = msgRequest.AppendAccountQueryRq();

            query.ORAccountListQuery.AccountListFilter.AccountTypeList.Add(type);
            IMsgSetResponse response   = qbMgr.DoRequests(msgRequest);
            IAccountRetList qbAccounts = (IAccountRetList)response.ResponseList.GetAt(0).Detail;


            for (int i = 0; qbAccounts != null && i < qbAccounts.Count; i++)
            {
                account.Add(new QuickbooksAccount()
                {
                    Name = qbAccounts.GetAt(i).FullName.GetValue()
                });
            }

            return(account);
        }
        static IMsgSetRequest GetMsgSetRequest(QBSessionManager manager)
        {
            short qbXmlMajorVer;
            short qbXmlMinorVer;

            var supportedVersion = QbfcLatestVersion(manager);

            if (supportedVersion >= 6.0)
            {
                qbXmlMajorVer = 6;
                qbXmlMinorVer = 0;
            }
            else if (supportedVersion >= 5.0)
            {
                qbXmlMajorVer = 5;
                qbXmlMinorVer = 0;
            }
            else if (supportedVersion >= 4.0)
            {
                qbXmlMajorVer = 4;
                qbXmlMinorVer = 0;
            }
            else if (supportedVersion >= 3.0)
            {
                qbXmlMajorVer = 3;
                qbXmlMinorVer = 0;
            }
            else if (supportedVersion >= 2.0)
            {
                qbXmlMajorVer = 2;
                qbXmlMinorVer = 0;
            }
            else if (supportedVersion >= 1.1)
            {
                qbXmlMajorVer = 1;
                qbXmlMinorVer = 1;
            }
            else
            {
                qbXmlMajorVer = 1;
                qbXmlMinorVer = 0;
            }

            var requestSet = manager.CreateMsgSetRequest("US", qbXmlMajorVer, qbXmlMinorVer);

            requestSet.Attributes.OnError = ENRqOnError.roeStop;

            return(requestSet);
        }
Esempio n. 21
0
        private IMsgSetRequest getLatestMsgSetRequest(QBSessionManager sessionManager)
        {
            // Find and adapt to supported version of QuickBooks
            double supportedVersion = QBFCLatestVersion(sessionManager);

            short qbXMLMajorVer = 0;
            short qbXMLMinorVer = 0;

            if (supportedVersion >= 6.0)
            {
                qbXMLMajorVer = 6;
                qbXMLMinorVer = 0;
            }
            else if (supportedVersion >= 5.0)
            {
                qbXMLMajorVer = 5;
                qbXMLMinorVer = 0;
            }
            else if (supportedVersion >= 4.0)
            {
                qbXMLMajorVer = 4;
                qbXMLMinorVer = 0;
            }
            else if (supportedVersion >= 3.0)
            {
                qbXMLMajorVer = 3;
                qbXMLMinorVer = 0;
            }
            else if (supportedVersion >= 2.0)
            {
                qbXMLMajorVer = 2;
                qbXMLMinorVer = 0;
            }
            else if (supportedVersion >= 1.1)
            {
                qbXMLMajorVer = 1;
                qbXMLMinorVer = 1;
            }
            else
            {
                qbXMLMajorVer = 1;
                qbXMLMinorVer = 0;
            }

            // Create the message set request object
            IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", qbXMLMajorVer, qbXMLMinorVer);

            return(requestMsgSet);
        }
Esempio n. 22
0
 protected static IMsgSetRequest QuickBooksConection()
 {
     try
     {
         SessionManager = new QBSessionManager();
         IMsgSetRequest requestMsgSet = SessionManager.CreateMsgSetRequest("US", 13, 0);
         requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;
         return(requestMsgSet);
     }
     catch (Exception ex)
     {
         // -- log
     }
     return(null);
 }
Esempio n. 23
0
        private void button_Click(object sender, RoutedEventArgs e)
        {
            bool             sessionBegun   = false;
            bool             connectionOpen = false;
            QBSessionManager sessionManager = null;

            try
            {
                //Create the session Manager object
                sessionManager = new QBSessionManager();

                //Create the message set request object to hold our request
                IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", 8, 0);
                requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;

                //Connect to QuickBooks and begin a session
                sessionManager.OpenConnection("", "WpfApplication1");
                connectionOpen = true;
                sessionManager.BeginSession("", ENOpenMode.omDontCare);
                sessionBegun = true;

                ICustomerAdd customerAddRq = requestMsgSet.AppendCustomerAddRq();
                customerAddRq.Name.SetValue(Customer.Text);

                //Send the request and get the response from QuickBooks
                IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);
                IResponse       response       = responseMsgSet.ResponseList.GetAt(0);
                ICustomerRet    customerRet    = (ICustomerRet)response.Detail;

                QuickBooksID.Text = customerRet.ListID.GetValue();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error");
            }
            finally
            {
                //End the session and close the connection to QuickBooks
                if (sessionBegun)
                {
                    sessionManager.EndSession();
                }
                if (connectionOpen)
                {
                    sessionManager.CloseConnection();
                }
            }
        }
Esempio n. 24
0
        public void DoItemServiceQuery()
        {
            bool             sessionBegun   = false;
            bool             connectionOpen = false;
            QBSessionManager sessionManager = null;

            try
            {
                //Create the session Manager object
                sessionManager = new QBSessionManager();

                //Create the message set request object to hold our request
                IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", 13, 0);
                requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;

                BuildItemServiceQueryRq(requestMsgSet);

                //Connect to QuickBooks and begin a session
                sessionManager.OpenConnection("", "Sample Code from OSR");
                connectionOpen = true;
                sessionManager.BeginSession("", ENOpenMode.omDontCare);
                sessionBegun = true;

                //Send the request and get the response from QuickBooks
                IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);

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

                WalkItemServiceQueryRs(responseMsgSet);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message, "Error");
                if (sessionBegun)
                {
                    sessionManager.EndSession();
                }
                if (connectionOpen)
                {
                    sessionManager.CloseConnection();
                }
            }
        }
Esempio n. 25
0
    public void GetCreditMemoData()
    {
        // open connection and begin session before data fetch - intentionally skipped this code
        IMsgSetRequest   msgset          = null;
        ICreditMemoQuery creditMemoQuery = null;

        try
        {
            // during data fetch
            msgset          = sessionMgr.CreateMsgSetRequest("US", 13, 0);
            creditMemoQuery = msgset.AppendCreditMemoQueryRq();
            creditMemoQuery.ORTxnQuery.TxnFilter.ORDateRangeFilter.ModifiedDateRangeFilter.FromModifiedDate.SetValue(new DateTime(2012, 3, 31), false);     // you can apply filters too
            IMsgSetResponse msgRes       = sessionMgr.DoRequests(msgset);
            IResponseList   responseList = msgRes.ResponseList;
            if (responseList.Count > 0)
            {
                IResponse          response       = responseList.GetAt(0);
                ICreditMemoRetList creditMemoList = response.Detail as ICreditMemoRetList;
                if (creditMemoList == null)
                {
                    return;
                }
                for (int i = 0; i <= creditMemoList.Count - 1; i++)
                {
                    ICreditMemoRet qbCreditMemo = creditMemoList.GetAt(i);
                    Console.WriteLine("Credit no.:" + qbCreditMemo.TxnNumber.GetValue() + " Customer:" + qbCreditMemo.CustomerRef.FullName.GetValue() + " Total:" + qbCreditMemo.TotalAmount.GetValue());
                }
            }
        }
        catch (Exception ex)
        {
            //handle exception here
        }
        finally
        {
            if (msgset != null)
            {
                Marshal.FinalReleaseComObject(msgset);
            }
            if (creditMemoQuery != null)
            {
                Marshal.FinalReleaseComObject(creditMemoQuery);
            }
        }
        // end session and close connection after data fetch - intentionally skipped this code
    }
        // IY: CODE FOR HANDLING DIFFERENT VERSIONS
        private double QBFCLatestVersion(QBSessionManager SessionManager)
        {
            // IY: Use oldest version to ensure that we work with any QuickBooks (US)
            IMsgSetRequest msgset = SessionManager.CreateMsgSetRequest("US", 1, 0);

            msgset.AppendHostQueryRq();
            // MessageBox.Show(msgset.ToXMLString());

            // IY: Use SessionManager object to open a connection and begin a session
            // with QuickBooks. At this time, you should add interop.QBFCxLib into
            // your Project References
            SessionManager.OpenConnection("", "IDN InvoiceAdd C# sample");
            SessionManager.BeginSession("", ENOpenMode.omDontCare);

            IMsgSetResponse QueryResponse = SessionManager.DoRequests(msgset);
            // IY: The response list contains only one response,
            // which corresponds to our single HostQuery request
            IResponse response = QueryResponse.ResponseList.GetAt(0);
            // IY: Please refer to QBFC Developers Guide/pg for details on why
            // "as" clause was used to link this derrived class to its base class
            IHostRet  HostResponse      = response.Detail as IHostRet;
            IBSTRList supportedVersions = HostResponse.SupportedQBXMLVersionList as IBSTRList;

            int    i;
            double vers;
            double LastVers = 0;
            string svers    = null;

            for (i = 0; i <= supportedVersions.Count - 1; i++)
            {
                svers = supportedVersions.GetAt(i);
                vers  = Convert.ToDouble(svers);
                if (vers > LastVers)
                {
                    LastVers = vers;
                    //svers = supportedVersions.GetAt(i);
                }
            }

            // IY: Close the session and connection with QuickBooks
            SessionManager.EndSession();
            SessionManager.CloseConnection();
            return(LastVers);
        }
Esempio n. 27
0
        // Code for handling different versions of QuickBooks
        private double QBFCLatestVersion(QBSessionManager SessionManager)
        {
            string Country           = ConfigurationManager.AppSettings["QBCountry"].ToString();
            short  qbXMLMajorVersion = 0;
            short  qbXMLMinorVersion = 0;

            short.TryParse(ConfigurationManager.AppSettings["QBXMLMajorVersion"].ToString(), out qbXMLMajorVersion);
            short.TryParse(ConfigurationManager.AppSettings["QBXMLMinorVersion"].ToString(), out qbXMLMinorVersion);

            // Use oldest version to ensure that this application work with any QuickBooks (US)
            IMsgSetRequest msgset = SessionManager.CreateMsgSetRequest(Country, qbXMLMajorVersion, qbXMLMinorVersion);    //("US", 13, 0);

            msgset.AppendHostQueryRq();
            IMsgSetResponse QueryResponse = SessionManager.DoRequests(msgset);
            //MessageBox.Show("Host query = " + msgset.ToXMLString());
            //SaveXML(msgset.ToXMLString());


            // The response list contains only one response,
            // which corresponds to our single HostQuery request
            IResponse response = QueryResponse.ResponseList.GetAt(0);

            // Please refer to QBFC Developers Guide for details on why
            // "as" clause was used to link this derrived class to its base class
            IHostRet  HostResponse      = response.Detail as IHostRet;
            IBSTRList supportedVersions = HostResponse.SupportedQBXMLVersionList as IBSTRList;

            int    i;
            double vers;
            double LastVers = 0;
            string svers    = null;

            for (i = 0; i <= supportedVersions.Count - 1; i++)
            {
                svers = supportedVersions.GetAt(i);
                vers  = Convert.ToDouble(svers);
                if (vers > LastVers)
                {
                    LastVers = vers;
                }
            }
            return(LastVers);
        }
Esempio n. 28
0
        public void DoInvoiceAdd()
        {
            bool             sessionBegun   = false;
            bool             connectionOpen = false;
            QBSessionManager sessionManager = null;

            try
            {
                sessionManager = new QBSessionManager();

                IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", 13, 0);
                requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;

                BuildInvoiceAddRq(requestMsgSet);

                sessionManager.OpenConnection("", "Invoice Add Console App");
                connectionOpen = true;
                sessionManager.BeginSession("", ENOpenMode.omDontCare);
                sessionBegun = true;

                IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);


                sessionManager.EndSession();
                sessionBegun = false;
                sessionManager.CloseConnection();
                connectionOpen = false;

                WalkInvoiceAddRs(responseMsgSet);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                if (sessionBegun)
                {
                    sessionManager.EndSession();
                }
                if (connectionOpen)
                {
                    sessionManager.CloseConnection();
                }
            }
        }
		public void Start()
		{

			// We want to know if we begun a session so we can end it if an
			// error happens
			bool isSessionBegun = false;

			// Create the session manager object using QBFC
			QBSessionManager sessionManager = new QBSessionManager();

			try
			{
				// Open the connection and begin a session to QuickBooks
				sessionManager.OpenConnection("", "Newspaper Constructor");
				//sessionManager.OpenConnection2("", "IDN InvoiceAdd C# sample",ENConnectionType.ctLocalQBDLaunchUI);
				sessionManager.BeginSession("", ENOpenMode.omDontCare);
				isSessionBegun = true;

				// Get the RequestMsgSet based on the correct QB Version
				IMsgSetRequest requestSet = sessionManager.CreateMsgSetRequest("US", 6, 0);

				// Initialize the message set request object
				requestSet.Attributes.OnError = ENRqOnError.roeStop;

				Action(sessionManager, requestSet);

				// Close the session and connection with QuickBooks
				sessionManager.EndSession();
				isSessionBegun = false;
				sessionManager.CloseConnection();
			}
			catch (Exception ex)
			{
				MessageBox.Show("Возникла проблема при попытке подключится к QuickBooks. Убедитесь что QuickBooks запущен на этом компьютере и в нем открыта компания.\n\n" + ex.Message.ToString(), "Ой ой ой", MessageBoxButton.OK, MessageBoxImage.Error);
				if (isSessionBegun)
				{
					sessionManager.EndSession();
					sessionManager.CloseConnection();
				}
				IsFailed = true;
			}
		}
Esempio n. 30
0
        private void button1_Click(object sender, EventArgs e)
        {
            coni();


            requestMsgSetfr = sessionManager.CreateMsgSetRequest("US", 13, 0);
            requestMsgSetfr.Attributes.OnError = ENRqOnError.roeContinue;


            ICustomerQuery CustomerQueryRq = requestMsgSetfr.AppendCustomerQueryRq();

            CustomerQueryRq.metaData.SetValue(ENmetaData.mdMetaDataAndResponseData);

            IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSetfr);



            //richTextBox1.Text += responseMsgSet.ToXMLString();

            cerrar();
        }
        private void editCustomer_Click(object sender, EventArgs e)
        {
            _MySessionManager = SessionManager.NewQBSession();

            IMsgSetRequest requestMsgSet = _MySessionManager.CreateMsgSetRequest("US", 13, 0);

            ICustomerQuery Query = requestMsgSet.AppendCustomerQueryRq();

            IMsgSetResponse responseMsgSet = _MySessionManager.DoRequests(requestMsgSet);

            IResponseList rsList = responseMsgSet.ResponseList;

            IResponse response = rsList.GetAt(0);

            ICustomerRetList CustomerList = (ICustomerRetList)response.Detail;

            if (CustomerList == null)
            {
                throw new Exception("Sorry, no customers found.");
            }

            for (int i = 0; i <= CustomerList.Count - 1; i++)
            {
                ICustomerRet QBCustomer = CustomerList.GetAt(i);

                //string CustomerName = QBCustomer.Name.GetValue().ToString();
                //string listID = QBCustomer.ListID.GetValue();
                //string editSequence = QBCustomer.EditSequence.GetValue();
                if (QBCustomer.Email != null)
                {
                    string email = QBCustomer.Email.GetValue();

                    if (_emailsToDelete.Contains(email))
                    {
                        modifyCustomer(QBCustomer);
                    }
                }
            }
        }
Esempio n. 32
0
        private void QBAddCustomer(Customer theCustomer)
        {
            bool sessionBegun = false;
            bool connectionOpen = false;
            QBSessionManager sessionManager = null;

            try
            {
                //Create the session Manager object
                sessionManager = new QBSessionManager();

                //Create the message set request object to hold our request
                IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", 2, 0);
                requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;

                sessionManager.OpenConnection(MMSUtility.QBAppID, MMSUtility.QBAppName);
                connectionOpen = true;
                sessionManager.BeginSession("", ENOpenMode.omDontCare);
                sessionBegun = true;

                ICustomerAdd customerAddRq = requestMsgSet.AppendCustomerAddRq();
                customerAddRq.Name.SetValue(theCustomer.Name);
                customerAddRq.FirstName.SetValue(theCustomer.FirstName);
                customerAddRq.LastName.SetValue(theCustomer.LastName);

                string szName = theCustomer.FirstName + " " + theCustomer.LastName;
                customerAddRq.BillAddress.Addr1.SetValue(szName);
                customerAddRq.BillAddress.Addr2.SetValue(theCustomer.Address);
                customerAddRq.BillAddress.City.SetValue(theCustomer.City);
                customerAddRq.BillAddress.State.SetValue(theCustomer.State);
                customerAddRq.BillAddress.PostalCode.SetValue(theCustomer.Zip);
                customerAddRq.Phone.SetValue(theCustomer.Phone);
                customerAddRq.Email.SetValue(theCustomer.Email);
                customerAddRq.CompanyName.SetValue(theCustomer.Company);
                customerAddRq.IsActive.SetValue(theCustomer.Active);
                customerAddRq.TermsRef.FullName.SetValue(theCustomer.Terms);

                //Send the request and get the response from QuickBooks
                IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);
                IResponse response = responseMsgSet.ResponseList.GetAt(0);
                ICustomerRet customerRet = (ICustomerRet)response.Detail;
                theCustomer.QuickBooksID = customerRet.ListID.GetValue();
            }
            catch (Exception exe)
            {
                string theName = theCustomer.LastName + "," + theCustomer.FirstName
                    + "," + theCustomer.Address + ",C:" + theCustomer.City + ",S:" + theCustomer.State + "'Z:" + theCustomer.Zip
                    + ",P" + theCustomer.Phone + ",E" + theCustomer.Email + ",A" + theCustomer.Active + ",T" + theCustomer.Terms;
                MMSUtility.LogFile(exe.Message, theName, "QBAddCustomer", exe.LineNumber(), "CustomerView");
                MessageBox.Show(exe.Message, "Error");

            }
            finally
            {
                //End the session and close the connection to QuickBooks
                if (sessionBegun)
                {
                    sessionManager.EndSession();
                }
                if (connectionOpen)
                {
                    sessionManager.CloseConnection();
                }
            }
        }
        //our method to check and update the DB from QuickBooks
        public static String checkSync()
        {
            try
            {
                //Create the session Manager object
                QBSessionManager sessionManager = new QBSessionManager();

                //Create the message set request object to hold our request
                IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", 8, 0);

                requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;

                //Connect to QuickBooks and begin a session
                sessionManager.OpenConnection(@"C:\Users\User\Documents\Affirm Medical Weightloss.QBW", "Affirm Medical Main Data Portal");
                //sessionManager.OpenConnection(@"\\USER-PC\quickbooks_affirm14\Affirm Medical Weightloss", "Affirm Medical Main Data Portal");
                //sessionManager.BeginSession("C:/Users/User/Documents/Affirm Medical Weightloss.QBW", ENOpenMode.omDontCare);
                sessionManager.BeginSession("C:\\Users\\User\\Documents\\Affirm Medical Weightloss.QBW", ENOpenMode.omDontCare);
                //sessionBegun = true;

                //check for new customers
                ICustomerQuery customerFindRq = requestMsgSet.AppendCustomerQueryRq();
                customerFindRq.ORCustomerListQuery.CustomerListFilter.FromModifiedDate.SetValue(System.Convert.ToDateTime(""), false);
                customerFindRq.ORCustomerListQuery.CustomerListFilter.ToModifiedDate.SetValue(System.Convert.ToDateTime(""), false);

                //check to see if we have our private sync date extention for our customers. If not, we add one.
                IDataExtDefQuery dataExtRq = requestMsgSet.AppendDataExtDefQueryRq();

                dataExtRq.ORDataExtDefQuery.AssignToObjectList.Add(ENAssignToObject.atoCustomer);

                customerFindRq.ORCustomerListQuery.CustomerListFilter.ActiveStatus.SetValue(ENActiveStatus.asActiveOnly);

                IMsgSetResponse responseSet = sessionManager.DoRequests(requestMsgSet);
                sessionManager.EndSession();
                sessionManager.CloseConnection();

                IResponse response;
                ENResponseType responseType;

                for (int i = 0; i < responseSet.ResponseList.Count; i++)
                {
                    response = responseSet.ResponseList.GetAt(i);

                    if (response.Detail == null)
                        continue;

                    responseType = (ENResponseType)response.Type.GetValue();
                    if (responseType == ENResponseType.rtCustomerQueryRs)
                    {
                        ICustomerRetList customerList = (ICustomerRetList)response.Detail;
                        for (int customerIndex = 0; customerIndex < customerList.Count; customerIndex++)
                        {
                            ICustomerRet customer = (ICustomerRet)customerList.GetAt(customerIndex);

                            if (customer != null && customer.Name != null && (customer.TimeCreated == customer.TimeModified))
                                db.Entry(customer).State = EntityState.Added;
                        }
                    }
                }

                return "Application has been synced with QuickBooks file.";

            }

            catch (Exception ex)
            {
                return "There was an error attempting to connect to\nQuickBooks for customer additions:\n" + ex.Message;
            }
        }
        //affirmmedicalweightlossEntities db = new affirmmedicalweightlossEntities();
        public static String AddCustomer(String firstName, String lastName, String phone, String eMail, String address, String city, String state, String zip, char sex, String dateOfBirth)
        {
            string connStr = ConfigurationManager.ConnectionStrings["affirmWL"].ConnectionString;

            MySqlConnection msqcon = new MySqlConnection(connStr);
            MySqlCommand msqcom = new MySqlCommand(connStr);

            String messageFromSDK = "";

            String Salutation = "";
            if (sex == 'M')
            {
                Salutation = "Mr.";
            }
            else
            {
                Salutation = "Ms.";
            }

            //create a new Customer object that we will add to the DB through Entity Framework
            customer newCustomer = new customer();

            //instantiate properties we already know about the Customer to add
            newCustomer.Name = (firstName + " " + lastName);
            newCustomer.FirstName = firstName;
            newCustomer.LastName = lastName;
            newCustomer.BillAddress_Addr1 = address;
            newCustomer.BillAddress_City = city;
            newCustomer.BillAddress_State = state;
            newCustomer.BillAddress_PostalCode = zip;
            newCustomer.Phone = phone;
            newCustomer.Email = eMail;
            newCustomer.Salutation = Salutation;
            newCustomer.Birthday = dateOfBirth;

            //add customer to QuickBooks file
            try
            {
                //Create the session Manager object
                QBSessionManager sessionManager = new QBSessionManager();

                //Create the message set request object to hold our request
                IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", 8, 0);

                requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;

                //Connect to QuickBooks and begin a session
                sessionManager.OpenConnection(@"C:\Users\User\Documents\Affirm Medical Weightloss.QBW", "Affirm Medical Main Data Portal");
                //sessionManager.OpenConnection(@"\\USER-PC\quickbooks_affirm14\Affirm Medical Weightloss", "Affirm Medical Main Data Portal");
                //sessionManager.BeginSession("C:/Users/User/Documents/Affirm Medical Weightloss.QBW", ENOpenMode.omDontCare);
                sessionManager.BeginSession("", ENOpenMode.omDontCare);
                //sessionBegun = true;

                //find customer

                //add the customer
                ICustomerAdd customerAddRq = requestMsgSet.AppendCustomerAddRq();
                customerAddRq.Name.SetValue(newCustomer.Name);
                customerAddRq.FirstName.SetValue(firstName);
                customerAddRq.LastName.SetValue(lastName);
                customerAddRq.Phone.SetValue(phone);
                customerAddRq.Email.SetValue(eMail);
                customerAddRq.BillAddress.Addr1.SetValue(address);
                customerAddRq.BillAddress.City.SetValue(city);
                customerAddRq.BillAddress.State.SetValue(state);
                customerAddRq.BillAddress.PostalCode.SetValue(zip);
                customerAddRq.Salutation.SetValue(Salutation);

                //modify CustomField1 (Birthday field) for the new customer
                IDataExtMod customerExtModRq = requestMsgSet.AppendDataExtModRq();
                customerExtModRq.OwnerID.SetValue("0");
                customerExtModRq.DataExtName.SetValue("Birthday");
                customerExtModRq.DataExtValue.SetValue(dateOfBirth);
                customerExtModRq.ORListTxn.ListDataExt.ListDataExtType.SetValue(ENListDataExtType.ldetCustomer);
                customerExtModRq.ORListTxn.ListDataExt.ListObjRef.FullName.SetValue(newCustomer.Name);

                //Send the request and get the response from QuickBooks
                IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);
                IResponse response = responseMsgSet.ResponseList.GetAt(0);
                ICustomerRet customerRet = (ICustomerRet)response.Detail;

                messageFromSDK = responseMsgSet.ResponseList + response.StatusMessage + customerRet;

                newCustomer.ListID = customerRet.ListID.GetValue();
                newCustomer.TimeCreated = System.Convert.ToString(customerRet.TimeCreated.GetValue());
                newCustomer.TimeModified = System.Convert.ToString(customerRet.TimeModified.GetValue());
                newCustomer.EditSequence = customerRet.EditSequence.GetValue();

                sessionManager.EndSession();

                sessionManager.CloseConnection();

                //Customer.QuickBooksID = customerRet.ListID.GetValue();
            }

            catch (Exception ex)
            {
                return "There was an error attempting to connect to\nQuickBooks for customer additions:\n" + ex.Message;
            }

            //add customer to local DB
            try
            {
                msqcon.Open();
                String query = "SELECT COUNT(*) FROM customer WHERE firstName = '" + firstName + "' AND lastName = '" + lastName + "'";
                MySqlCommand msqfetch = new MySqlCommand(query, msqcon);
                MySqlDataReader msqfind = msqfetch.ExecuteReader();
                int duplicates = 0;
                while (msqfind.Read())
                {
                    duplicates = System.Convert.ToInt32(msqfind["COUNT(*)"]);
                }
                if (duplicates > 0)
                {
                    msqcon.Close();
                    return "Duplicates: " + duplicates;
                }
                else
                {
                    msqcon.Close();
                    db.Entry(newCustomer).State = EntityState.Added;
                    db.SaveChanges();
                    //query = "INSERT INTO customers (FirstName, LastName, Phone, Email, BillAddress_Addr1, BillAddress_City, BillAddress_State, BillAddress_PostalCode, Salutation, DateOfBirth)" +
                    //    "Values ('" + firstName + "', '" + lastName + "', '" + phone + "', '" + eMail + "', '" + address +
                    //    "', '" + city + "', '" + state + "', '" + zip + "', '" + Salutation + "', '" + dateOfBirth + "')";
                    //msqcom = new MySqlCommand(query, msqcon);
                    //msqcom.ExecuteNonQuery();
                    //msqcon.Close();
                }
            }
            catch (MySqlException e)
            {
                return "Error connecting to database! Check your connection\nand make sure your database is online and accessible: "
                    + e.Message;
            }

            //return "Customer successfully added to database and QuickBooks.";
            return "Operation successful, following message returned from QuickBooks: " + messageFromSDK;
        }
        public static String ReplaceSimilar(String firstName, String lastName, String phone, String eMail, String address, String city, String state, int zip, char sex, int dupInc, int dupSel)
        {
            string connStr = ConfigurationManager.ConnectionStrings["affirmWL"].ConnectionString;

            MySqlConnection msqcon = new MySqlConnection(connStr);
            MySqlCommand msqcom = new MySqlCommand(connStr);
            if (dupInc == 1)
            {
                try
                {
                    msqcon.Open();
                    String query = "UPDATE customers SET firstName = 'Replaced', lastName = 'Replaced', primaryPhone = 'Replaced'," +
                    "primaryEmail = 'Replaced', address = 'Replaced', city = 'Replaced', state = 'Replaced', zip = '1111', gender = 'U' " +
                    "WHERE firstName = '" + firstName + "' AND lastName = '" + lastName + "';";
                    msqcom = new MySqlCommand(query, msqcon);
                    msqcom.ExecuteNonQuery();
                    msqcon.Close();
                }
                catch (MySqlException e)
                {
                    return "Error connecting to database! Check your connection\nand make sure your database is online and accessible.";
                }

                try
                {
                    //Create the session Manager object
                    QBSessionManager sessionManager = new QBSessionManager();

                    //Create the message set request object to hold our request
                    IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", 8, 0);

                    requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;

                    //Connect to QuickBooks and begin a session
                    sessionManager.OpenConnection(@"C:\Users\User\Documents\Affirm Medical Weightloss.QBW", "Affirm Medical Main Data Portal");
                    //sessionManager.OpenConnection(@"\\USER-PC\quickbooks_affirm14\Affirm Medical Weightloss", "Affirm Medical Main Data Portal");
                    //sessionManager.BeginSession("C:/Users/User/Documents/Affirm Medical Weightloss.QBW", ENOpenMode.omDontCare);
                    sessionManager.BeginSession("C:\\Users\\User\\Documents\\Affirm Medical Weightloss.QBW", ENOpenMode.omDontCare);
                    //sessionBegun = true;

                    //add the customer

                    ICustomerQuery customerFindRq = requestMsgSet.AppendCustomerQueryRq();
                    customerFindRq.ORCustomerListQuery.CustomerListFilter.FromModifiedDate.SetValue(System.Convert.ToDateTime(""), false);

                    ICustomerMod customerRepRq = requestMsgSet.AppendCustomerModRq();
                    customerRepRq.Name.SetValue(firstName + " " + lastName + "(" + dupInc + ")");
                    customerRepRq.FirstName.SetValue(firstName);
                    customerRepRq.LastName.SetValue(lastName);
                    customerRepRq.Phone.SetValue(phone);
                    customerRepRq.Email.SetValue(eMail);
                    customerRepRq.BillAddress.Addr1.SetValue(address);
                    customerRepRq.BillAddress.City.SetValue(city);
                    customerRepRq.BillAddress.State.SetValue(state);
                    customerRepRq.BillAddress.PostalCode.SetValue(System.Convert.ToString(zip));
                    if (sex.Equals('M'))
                    {
                        customerRepRq.Salutation.SetValue("Mr.");
                    }
                    else
                    {
                        customerRepRq.Salutation.SetValue("Ms.");
                    }

                    //Send the request and get the response from QuickBooks
                    IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);
                    IResponse response = responseMsgSet.ResponseList.GetAt(0);
                    ICustomerRet customerRet = (ICustomerRet)response.Detail;

                    sessionManager.EndSession();

                    sessionManager.CloseConnection();

                    //Customer.QuickBooksID = customerRet.ListID.GetValue();
                }

                catch (Exception ex)
                {
                    return "There was an error attempting to connect to\nQuickBooks for customer additions:\n" + ex.Message;
                }
                return "This similar customer was successfully\nreplaced in database and QuickBooks.";
            }
            else
            {
                return "You can only overwrite one record at this time.";
            }
        }
Esempio n. 36
0
        static double QBFCLatestVersion(QBSessionManager SessionManager)
        {
            IMsgSetRequest msgset = SessionManager.CreateMsgSetRequest("US", 1, 0);
            msgset.AppendHostQueryRq();
            IMsgSetResponse QueryResponse = SessionManager.DoRequests(msgset);
            IResponse response = QueryResponse.ResponseList.GetAt(0);

            IHostRet HostResponse = response.Detail as IHostRet;
            IBSTRList supportedVersions = HostResponse.SupportedQBXMLVersionList as IBSTRList;

            int i;
            double vers;
            double LastVers = 0;
            string svers = null;

            for (i = 0; i <= supportedVersions.Count - 1; i++)
            {
                svers = supportedVersions.GetAt(i);
                vers = Convert.ToDouble(svers);
                if (vers > LastVers)
                {
                    LastVers = vers;
                }
            }
            return LastVers;
        }
Esempio n. 37
0
        public bool GetQBItems()
        {
            bool sessionBegun = false;
            bool connectionOpen = false;
            QBSessionManager sessionManager = null;

            try
            {
                //Create the session Manager object
                sessionManager = new QBSessionManager();

                //Create the message set request object to hold our request
                IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", 2, 0);
                requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;

                sessionManager.OpenConnection(MMSUtility.QBAppID, MMSUtility.QBAppName);
                connectionOpen = true;
                sessionManager.BeginSession("", ENOpenMode.omDontCare);
                sessionBegun = true;

                //Send the request and get the response from QuickBooks
                IItemQuery itemQueryRq = requestMsgSet.AppendItemQueryRq();
                IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);
                IResponse response = responseMsgSet.ResponseList.GetAt(0);
                IORItemRetList itemRetList = (IORItemRetList)response.Detail;

                if (itemRetList != null)
                {
                    for (int i = 0; i < itemRetList.Count; i++)
                    {

                        IORItemRet itemRet = itemRetList.GetAt(i);
                        if (itemRet.ItemServiceRet != null)
                        {
                            IItemServiceRet itemServiceRet = itemRet.ItemServiceRet;
                            var item = new Item
                            {
                                Name = itemServiceRet.Name.GetValue(),
                                //Description = itemServiceRet.ORSalesPurchase.SalesOrPurchase.Desc.GetValue(),
                                Rate = itemServiceRet.ORSalesPurchase.SalesOrPurchase.ORPrice.Price.GetValue(),
                                ItemType = ItemType.Service,
                                QuickBooksID = itemServiceRet.ListID.GetValue(),
                                EditSequence = itemServiceRet.EditSequence.GetValue()
                            };
                            QBitems1.Add(item);
                            QBitems2.Add(item);
                            QBitems3.Add(item);
                            QBitems4.Add(item);
                        }
                    }
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error");
                return false;
            }
            finally
            {
                //End the session and close the connection to QuickBooks
                if (sessionBegun)
                {
                    sessionManager.EndSession();
                }
                if (connectionOpen)
                {
                    sessionManager.CloseConnection();
                }
            }
            return true;
        }
Esempio n. 38
0
        public IMsgSetRequest getLatestMsgSetRequest(QBSessionManager sessionManager)
        {
            // Find and adapt to supported version of QuickBooks
            double supportedVersion = QBFCLatestVersion(sessionManager);

            short qbXMLMajorVer = 0;
            short qbXMLMinorVer = 0;

            if (supportedVersion >= 6.0)
            {
                qbXMLMajorVer = 6;
                qbXMLMinorVer = 0;
            }
            else if (supportedVersion >= 5.0)
            {
                qbXMLMajorVer = 5;
                qbXMLMinorVer = 0;
            }
            else if (supportedVersion >= 4.0)
            {
                qbXMLMajorVer = 4;
                qbXMLMinorVer = 0;
            }
            else if (supportedVersion >= 3.0)
            {
                qbXMLMajorVer = 3;
                qbXMLMinorVer = 0;
            }
            else if (supportedVersion >= 2.0)
            {
                qbXMLMajorVer = 2;
                qbXMLMinorVer = 0;
            }
            else if (supportedVersion >= 1.1)
            {
                qbXMLMajorVer = 1;
                qbXMLMinorVer = 1;
            }
            else
            {
                qbXMLMajorVer = 1;
                qbXMLMinorVer = 0;
                // MessageBox.Show("It seems that you are running QuickBooks 2002 Release 1. We strongly recommend that you use QuickBooks' online update feature to obtain the latest fixes and enhancements");
            }

            // Create the message set request object
            IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", qbXMLMajorVer, qbXMLMinorVer);
            return requestMsgSet;
        }
Esempio n. 39
0
        private double QBFCLatestVersion(QBSessionManager SessionManager)
        {
            // Use oldest version to ensure that this application work with any QuickBooks (US)
            IMsgSetRequest msgset = SessionManager.CreateMsgSetRequest("US", 1, 0);
            msgset.AppendHostQueryRq();
            IMsgSetResponse QueryResponse = SessionManager.DoRequests(msgset);
            //MessageBox.Show("Host query = " + msgset.ToXMLString());
            //SaveXML(msgset.ToXMLString());

            // The response list contains only one response,
            // which corresponds to our single HostQuery request
            IResponse response = QueryResponse.ResponseList.GetAt(0);

            // Please refer to QBFC Developers Guide for details on why
            // "as" clause was used to link this derrived class to its base class
            IHostRet HostResponse = response.Detail as IHostRet;
            IBSTRList supportedVersions = HostResponse.SupportedQBXMLVersionList as IBSTRList;

            int i;
            double vers;
            double LastVers = 0;
            string svers = null;

            for (i = 0; i <= supportedVersions.Count - 1; i++)
            {
                svers = supportedVersions.GetAt(i);
                vers = Convert.ToDouble(svers);
                if (vers > LastVers)
                {
                    LastVers = vers;
                }
            }
            return LastVers;
        }
        public static String AddSimilar(String firstName, String lastName, String phone, String eMail, String address, String city, String state, int zip, char sex, String dateOfBirth, int dupInc)
        {
            string connStr = ConfigurationManager.ConnectionStrings["affirmWL"].ConnectionString;

            MySqlConnection msqcon = new MySqlConnection(connStr);
            MySqlCommand msqcom = new MySqlCommand(connStr);
            try
            {
                msqcon.Open();
                String query = "SELECT * FROM customers WHERE firstName = '" + firstName + "' AND lastName = '" + lastName + "'";
                MySqlCommand msqfetch = new MySqlCommand(query, msqcon);
                MySqlDataReader msqfind = msqfetch.ExecuteReader();
                String addressMatch = "";
                String cityMatch = "";
                String stateMatch = "";
                String dateOfBirthMatch = "";
                int zipMatch = 0;
                while (msqfind.Read())
                {
                    addressMatch = System.Convert.ToString(msqfind["BillAddress_Addr1"]);
                    cityMatch = System.Convert.ToString(msqfind["BillAddress_City"]);
                    stateMatch = System.Convert.ToString(msqfind["BillAddress_State"]);
                    zipMatch = System.Convert.ToInt32(msqfind["BillAddress_PostalCode"]);
                    dateOfBirthMatch = System.Convert.ToString(msqfind["Birthday"]);
                }
                if (address.Equals(addressMatch) && city.Equals(cityMatch) && state.Equals(stateMatch) && (zip == zipMatch) && dateOfBirth.Equals(dateOfBirthMatch))
                {
                    msqcon.Close();
                    return "No duplicate entries allowed (exact same address information).";
                }
                else
                {
                    msqfind.Close();
                    msqcon.Close();

                    String Salutation = "";
                    if (sex == 'M')
                    {
                        Salutation = "Mr.";
                    }
                    else
                    {
                        Salutation = "Ms.";
                    }

                    customer newCustomer = new customer();

                    //instantiate properties we already know about the Customer to add
                    newCustomer.Name = (firstName + " " + lastName);
                    newCustomer.FirstName = firstName;
                    newCustomer.LastName = lastName;
                    newCustomer.BillAddress_Addr1 = address;
                    newCustomer.BillAddress_City = city;
                    newCustomer.BillAddress_State = state;
                    newCustomer.BillAddress_PostalCode = System.Convert.ToString(zip);
                    newCustomer.Phone = phone;
                    newCustomer.Email = eMail;
                    newCustomer.Salutation = Salutation;
                    newCustomer.Birthday = dateOfBirth;
                    //query = "INSERT INTO customers (firstName, lastName, primaryPhone, primaryEmail, address, city, state, zip, gender)" +
                    //    "Values ('" + firstName + "', '" + lastName + "', '" + phone + "', '" + eMail + "', '" + address +
                    //    "', '" + city + "', '" + state + "', '" + zip + "', '" + sex + "')";
                    //msqcom = new MySqlCommand(query, msqcon);
                    //msqcom.ExecuteNonQuery();
                    msqcon.Close();
                }
            }
            catch (MySqlException e)
            {
                return "Error connecting to database! Check your connection\nand make sure your database is online and accessible.";
            }

            try
            {
                //Create the session Manager object
                QBSessionManager sessionManager = new QBSessionManager();

                //Create the message set request object to hold our request
                IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", 8, 0);

                requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;

                //Connect to QuickBooks and begin a session
                sessionManager.OpenConnection(@"C:\Users\User\Documents\Affirm Medical Weightloss.QBW", "Affirm Medical Main Data Portal");
                //sessionManager.OpenConnection(@"\\USER-PC\quickbooks_affirm14\Affirm Medical Weightloss", "Affirm Medical Main Data Portal");
                //sessionManager.BeginSession("C:/Users/User/Documents/Affirm Medical Weightloss.QBW", ENOpenMode.omDontCare);
                sessionManager.BeginSession("C:\\Users\\User\\Documents\\Affirm Medical Weightloss.QBW", ENOpenMode.omDontCare);
                //sessionBegun = true;

                //add the customer
                ICustomerAdd customerAddRq = requestMsgSet.AppendCustomerAddRq();
                customerAddRq.Name.SetValue(firstName + " " + lastName + "(" + dupInc + ")");
                customerAddRq.FirstName.SetValue(firstName);
                customerAddRq.LastName.SetValue(lastName);
                customerAddRq.Phone.SetValue(phone);
                customerAddRq.Email.SetValue(eMail);
                customerAddRq.BillAddress.Addr1.SetValue(address);
                customerAddRq.BillAddress.City.SetValue(city);
                customerAddRq.BillAddress.State.SetValue(state);
                customerAddRq.BillAddress.PostalCode.SetValue(System.Convert.ToString(zip));

                if (sex.Equals('M'))
                {
                    customerAddRq.Salutation.SetValue("Mr.");
                }
                else
                {
                    customerAddRq.Salutation.SetValue("Ms.");
                }

                //modify CustomField1 (Birthday field) for the new customer
                IDataExtMod customerExtModRq = requestMsgSet.AppendDataExtModRq();
                customerExtModRq.OwnerID.SetValue("0");
                customerExtModRq.DataExtName.SetValue("Birthday");
                customerExtModRq.DataExtValue.SetValue(dateOfBirth);
                customerExtModRq.ORListTxn.ListDataExt.ListDataExtType.SetValue(ENListDataExtType.ldetCustomer);
                customerExtModRq.ORListTxn.ListDataExt.ListObjRef.FullName.SetValue(firstName + " " + lastName + "(" + dupInc + ")");

                //Send the request and get the response from QuickBooks
                IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);
                IResponse response = responseMsgSet.ResponseList.GetAt(0);
                ICustomerRet customerRet = (ICustomerRet)response.Detail;

                sessionManager.EndSession();

                sessionManager.CloseConnection();

                //Customer.QuickBooksID = customerRet.ListID.GetValue();
            }

            catch (Exception ex)
            {
                return "There was an error attempting to connect to\nQuickBooks for customer additions:\n" + ex.Message;
            }
            return "This similar customer was successfully\nadded to database and QuickBooks.";
        }
Esempio n. 41
0
        private bool QBGetCustomerRecord(Customer theCustomer)
        {
            bool sessionBegun = false;
            bool connectionOpen = false;
            QBSessionManager sessionManager = null;
            bool nFound = false;

            try
            {
                //Create the session Manager object
                sessionManager = new QBSessionManager();

                //Create the message set request object to hold our request
                IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", 2, 0);
                requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;

                sessionManager.OpenConnection(MMSUtility.QBAppID, MMSUtility.QBAppName);
                connectionOpen = true;
                sessionManager.BeginSession("", ENOpenMode.omDontCare);
                sessionBegun = true;

                //find the customer info
                ICustomerQuery search = requestMsgSet.AppendCustomerQueryRq();
                search.ORCustomerListQuery.CustomerListFilter.ORNameFilter.NameFilter.MatchCriterion.SetValue(ENMatchCriterion.mcStartsWith);
                search.ORCustomerListQuery.CustomerListFilter.ORNameFilter.NameFilter.Name.SetValue(theCustomer.Name);

                IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);
                IResponse response = responseMsgSet.ResponseList.GetAt(0);
                ICustomerRetList customerRetList = (ICustomerRetList)response.Detail;
                if (customerRetList != null)
                {
                    ICustomerRet customerRet = customerRetList.GetAt(0);
                    if (customerRet.ListID != null) theCustomer.QuickBooksID = customerRet.ListID.GetValue();
                    if (customerRet.EditSequence != null) theCustomer.EditSequence = customerRet.EditSequence.GetValue();
                    if (customerRet.FirstName != null) theCustomer.FirstName = customerRet.FirstName.GetValue();
                    if (customerRet.LastName != null) theCustomer.LastName = customerRet.LastName.GetValue();
                    if (customerRet.BillAddress != null)
                    {
                        if (customerRet.BillAddress.Addr1 != null) theCustomer.Address = customerRet.BillAddress.Addr1.GetValue();
                        if (customerRet.BillAddress.City != null) theCustomer.City = customerRet.BillAddress.City.GetValue();
                        if (customerRet.BillAddress.State != null) theCustomer.State = customerRet.BillAddress.State.GetValue();
                        if (customerRet.BillAddress.PostalCode != null) theCustomer.Zip = customerRet.BillAddress.PostalCode.GetValue();
                    }
                    if (customerRet.Phone != null) theCustomer.Phone = customerRet.Phone.GetValue();
                    if (customerRet.Email != null) theCustomer.Email = customerRet.Email.GetValue();
                    if (customerRet.CompanyName != null) theCustomer.Company = customerRet.CompanyName.GetValue();
                    if (customerRet.IsActive != null) theCustomer.Active = customerRet.IsActive.GetValue();
                    if (customerRet.TermsRef != null) theCustomer.Terms = customerRet.TermsRef.FullName.GetValue();
                    nFound = true;
                }
                else
                {
                    nFound = false;
                }
            }
            catch (Exception exe)
            {
                string thename = theCustomer.FirstName + " " + theCustomer.LastName;
                MMSUtility.LogFile(exe.Message, thename, "QBGetCustomerRecord", exe.LineNumber(), "CustomerView");
                MessageBox.Show(exe.Message, "Error");
            }
            finally
            {
                //End the session and close the connection to QuickBooks
                if (sessionBegun)
                {
                    sessionManager.EndSession();
                }
                if (connectionOpen)
                {
                    sessionManager.CloseConnection();
                }
            }
            return nFound;
        }
Esempio n. 42
0
        private void QBUpdateCustomerRecord(Customer theCustomer)
        {
            bool sessionBegun = false;
            bool connectionOpen = false;
            QBSessionManager sessionManager = null;

            try
            {
                //Create the session Manager object
                sessionManager = new QBSessionManager();

                //Create the message set request object to hold our request
                IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", 2, 0);
                requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;

                sessionManager.OpenConnection(MMSUtility.QBAppID, MMSUtility.QBAppName);
                connectionOpen = true;
                sessionManager.BeginSession("", ENOpenMode.omDontCare);
                sessionBegun = true;

                //modify the info
                ICustomerMod customerModRq = requestMsgSet.AppendCustomerModRq();
                //if (theCustomer.FirstName.Length > 0)
                customerModRq.Name.SetValue(theCustomer.Name);
                //if (theCustomer.FirstName.Length > 0)
                customerModRq.FirstName.SetValue(theCustomer.FirstName);
                //if (theCustomer.LastName.Length > 0)
                customerModRq.LastName.SetValue(theCustomer.LastName);
                //if (theCustomer.Address.Length > 0)
                string szName = theCustomer.FirstName + " " + theCustomer.LastName;
                customerModRq.BillAddress.Addr1.SetValue(szName);
                customerModRq.BillAddress.Addr2.SetValue(theCustomer.Address);
                //if (theCustomer.City.Length > 0)
                customerModRq.BillAddress.City.SetValue(theCustomer.City);
                //if (theCustomer.State.Length > 0)
                customerModRq.BillAddress.State.SetValue(theCustomer.State);
                //if (theCustomer.Zip.Length > 0)
                customerModRq.BillAddress.PostalCode.SetValue(theCustomer.Zip);
                //if (theCustomer.Phone.Length > 0)
                customerModRq.Phone.SetValue(theCustomer.Phone);
                //if (theCustomer.Email.Length > 0)
                customerModRq.Email.SetValue(theCustomer.Email);
                //if (theCustomer.Company.Length > 0)
                customerModRq.CompanyName.SetValue(theCustomer.Company);
                //if (theCustomer.Terms.Length > 0) customerModRq.TermsRef.FullName.SetValue(theCustomer.Terms);
                customerModRq.ListID.SetValue(theCustomer.QuickBooksID);
                customerModRq.EditSequence.SetValue(theCustomer.EditSequence);
                //customerModRq.IsActive.SetValue(true);

                //Send the request to QuickBooks
                IMsgSetResponse responsMsgSet = sessionManager.DoRequests(requestMsgSet);
            }
            catch (Exception exe)
            {
                MMSUtility.LogFile(exe.Message, "", "QBUpdateCustomerRecord", exe.LineNumber(), "CustomerView");
                MessageBox.Show(exe.Message, "Error: Failed to Update");
            }
            finally
            {
                //End the session and close the connection to QuickBooks
                if (sessionBegun)
                {
                    sessionManager.EndSession();
                }
                if (connectionOpen)
                {
                    sessionManager.CloseConnection();
                }
            }
        }
Esempio n. 43
0
        public string AddModQBInvoice(string szCustomerName, string szInvoiceQuickbookID, InvoiceItem invoiceItem1, DateTime jobDate, string itemA_ID)
        {
            bool sessionBegun = false;
            bool connectionOpen = false;
            QBSessionManager sessionManager = null;
            string invoiceID = "";
            bool bItemInvoice1 = false;

            try
            {
                //DateTime curDate = DateTime.Now;
                DateTime curDate = jobDate;

                //otherwise find for the lastest one
                /*
                int prevMonth = DateTime.Today.AddMonths(-1).Month;
                int curMonth = DateTime.Today.Month;
                int nextMonth = DateTime.Today.AddMonths(1).Month;
                int year = DateTime.Today.Year;
                */

                //int prevMonth = curDate.AddMonths(-1).Month;
                int curMonth = curDate.Month;
                int nextMonth = curDate.AddMonths(1).Month;
                int year = curDate.Year;
                int nextyear = curDate.AddYears(1).Year;

                DateTime fromDate;
                DateTime toDate;
                Item item1 = pQBitems1[ItemComboBox1.SelectedIndex];

                //Create the session Manager object
                sessionManager = new QBSessionManager();

                //Create the message set request object to hold our request
                IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US", 8, 0);
                requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;
                sessionManager.OpenConnection(MMSUtility.QBAppID, MMSUtility.QBAppName);

                connectionOpen = true;
                sessionManager.BeginSession("", ENOpenMode.omDontCare);
                sessionBegun = true;

                //find the customer information
                ICustomerQuery search = requestMsgSet.AppendCustomerQueryRq();
                search.ORCustomerListQuery.CustomerListFilter.ORNameFilter.NameFilter.MatchCriterion.SetValue(ENMatchCriterion.mcStartsWith);
                search.ORCustomerListQuery.CustomerListFilter.ORNameFilter.NameFilter.Name.SetValue(szCustomerName);

                IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);
                IResponse response = responseMsgSet.ResponseList.GetAt(0);
                ICustomerRetList customerRetList = (ICustomerRetList)response.Detail;
                if (customerRetList == null)
                {
                    //MessageBox.Show("Cannot find customer in QB!\nPlease check QB for Customer Name.");
                    return invoiceID;
                }

                ICustomerRet customerRet = customerRetList.GetAt(0);
                Customer customer = new Customer();
                customer.Name = customerRet.Name.GetValue();
                customer.QuickBooksID = customerRet.ListID.GetValue();
                customer.EditSequence = customerRet.EditSequence.GetValue();
                if (customerRet.FirstName != null) customer.FirstName = customerRet.FirstName.GetValue();
                if (customerRet.LastName != null) customer.LastName = customerRet.LastName.GetValue();

                bool notFound = true;
                if (szInvoiceQuickbookID.Length > 0)
                {
                    //get the lastest associated invoices for the particular customer
                    requestMsgSet.ClearRequests();
                    IInvoiceQuery invoiceQueryRq = requestMsgSet.AppendInvoiceQueryRq();
                    invoiceQueryRq.IncludeLineItems.SetValue(true);

                    //if invoiceID exist, use that
                    invoiceQueryRq.ORInvoiceQuery.TxnIDList.Add(szInvoiceQuickbookID);
                    //Send the request and get the response from QuickBooks
                    responseMsgSet = sessionManager.DoRequests(requestMsgSet);
                    response = responseMsgSet.ResponseList.GetAt(0);
                    IInvoiceRetList invoiceRetList1 = (IInvoiceRetList)response.Detail;

                    if (invoiceRetList1 != null)
                    {
                        notFound = false;
                    }
                }

                // there is no existing invoice based on id, then search for invoice on date
                if (notFound)
                {
                    //get the from prevmonth to curmonth invoice
                    if ((curDate.Day >= 1) && (curDate.Day <= 19))
                    {
                        fromDate = new DateTime(year, curMonth, 1);
                        toDate = new DateTime(year, curMonth, 20);
                    }
                    //get curmonth to nextmonth invoice
                    else
                    {
                        if (nextMonth == 1)
                        {
                            fromDate = new DateTime(year, curMonth, 21);
                            toDate = new DateTime(nextyear, nextMonth, 20);
                        }
                        else
                        {
                            //if next month is jan, then account for next year
                            fromDate = new DateTime(year, curMonth, 21);
                            toDate = new DateTime(year, nextMonth, 20);
                        }
                    }

                    //get the lastest associated invoices for the particular customer
                    requestMsgSet.ClearRequests();
                    IInvoiceQuery invoiceQueryRq = requestMsgSet.AppendInvoiceQueryRq();
                    invoiceQueryRq.IncludeLineItems.SetValue(true);

                    invoiceQueryRq.ORInvoiceQuery.InvoiceFilter.EntityFilter.OREntityFilter.FullNameList.Add(szCustomerName);
                    invoiceQueryRq.ORInvoiceQuery.InvoiceFilter.ORDateRangeFilter.TxnDateRangeFilter.ORTxnDateRangeFilter.TxnDateFilter.FromTxnDate.SetValue(fromDate);
                    invoiceQueryRq.ORInvoiceQuery.InvoiceFilter.ORDateRangeFilter.TxnDateRangeFilter.ORTxnDateRangeFilter.TxnDateFilter.ToTxnDate.SetValue(toDate);
                    //ENPaidStatus status = ENPaidStatus.psNotPaidOnly;
                    //invoiceQueryRq.ORInvoiceQuery.InvoiceFilter.PaidStatus.SetValue(status);

                }

                //Send the request and get the response from QuickBooks
                responseMsgSet = sessionManager.DoRequests(requestMsgSet);
                response = responseMsgSet.ResponseList.GetAt(0);
                IInvoiceRetList invoiceRetList = (IInvoiceRetList)response.Detail;

                //check for FC
                int numIndex = -1;
                if (invoiceRetList != null)
                {
                    numIndex = 0;
                    IInvoiceRet invoiceRet1 = invoiceRetList.GetAt(numIndex);
                    string refNum = invoiceRet1.RefNumber.GetValue();
                    if (refNum.StartsWith("FC"))
                    {
                        //get the next one
                        if (invoiceRetList.Count > 1) numIndex = 1;
                        else numIndex = -1;
                    }
                }

                //if need new invoice
                if ((invoiceRetList == null) || (numIndex == -1))
                {
                    Invoice invoice = new Invoice();
                    invoice.Customer = customer;
                    requestMsgSet.ClearRequests();
                    IInvoiceAdd invoiceAddRq = requestMsgSet.AppendInvoiceAddRq();

                    //get the current month
                    DateTime invoiceDate;
                    if ((curDate.Day >= 1) && (curDate.Day <= 19))
                    {
                        invoiceDate = new DateTime(year, curMonth, 20);
                    }
                    //get next month
                    else
                    {
                        if (nextMonth == 1)
                        {
                            invoiceDate = new DateTime(nextyear, nextMonth, 20);
                        }
                        else
                        {
                            //if next month is jan, then account for next year
                            invoiceDate = new DateTime(year, nextMonth, 20);
                        };
                    }

                    invoiceAddRq.TxnDate.SetValue(invoiceDate);
                    invoiceAddRq.CustomerRef.ListID.SetValue(invoice.Customer.QuickBooksID);

                    /////////////////////////////////////////////////////////////////////////////////
                    if (invoiceItem1.Amount >= 0)
                    {
                        if (invoiceItem1.Amount == 0)
                        {
                            string msg = "Warning: Invoice = $0 for" + szCustomerName;
                            MMSUtility.LogFile(msg, "", "AddModQBInvoice", 0, "QBBatchInvoiceDialog");
                        }

                        IORInvoiceLineAdd orInvoiceLineAdd1 = invoiceAddRq.ORInvoiceLineAddList.Append();
                        orInvoiceLineAdd1.InvoiceLineAdd.ItemRef.ListID.SetValue(item1.QuickBooksID);
                        orInvoiceLineAdd1.InvoiceLineAdd.ServiceDate.SetValue(invoiceItem1.Date);
                        orInvoiceLineAdd1.InvoiceLineAdd.Amount.SetValue(invoiceItem1.Amount);
                        orInvoiceLineAdd1.InvoiceLineAdd.Quantity.SetValue(invoiceItem1.Quantity);
                        orInvoiceLineAdd1.InvoiceLineAdd.Desc.SetValue(invoiceItem1.Description);
                        bItemInvoice1 = true;
                    }
                    //Send the request and get the response from QuickBooks
                    responseMsgSet = sessionManager.DoRequests(requestMsgSet);
                    response = responseMsgSet.ResponseList.GetAt(0);
                    IInvoiceRet invoiceRet = (IInvoiceRet)response.Detail;

                    if (bItemInvoice1)
                        invoiceItem1.QuickBooksID = invoiceRet.ORInvoiceLineRetList.GetAt(0).InvoiceLineRet.TxnLineID.GetValue();

                    invoice.QuickBooksID = invoiceRet.TxnID.GetValue();
                    invoiceID = invoice.QuickBooksID;
                }
                else
                {
                    //get the latest invoice
                    IInvoiceRet invoiceRet = invoiceRetList.GetAt(numIndex);
                    var invoice = new Invoice
                    {
                        Customer = customer,
                        QuickBooksID = invoiceRet.TxnID.GetValue(),
                        EditSequence = invoiceRet.EditSequence.GetValue()
                    };
                    //invoiceRet.TxnNumber.GetValue();

                    requestMsgSet.ClearRequests();
                    IInvoiceMod invoiceModRq = requestMsgSet.AppendInvoiceModRq();
                    invoiceModRq.TxnID.SetValue(invoice.QuickBooksID);
                    invoiceModRq.EditSequence.SetValue(invoice.EditSequence);

                    //if no assocated item, then add new item to the current invoice //andy change this
                    if (invoiceRet.ORInvoiceLineRetList != null)
                    {
                        for (int j = 0; j < invoiceRet.ORInvoiceLineRetList.Count; j++)
                        {
                            IORInvoiceLineRet ORInvoiceLineRet = invoiceRet.ORInvoiceLineRetList.GetAt(j);

                            if (itemA_ID != ORInvoiceLineRet.InvoiceLineRet.TxnLineID.GetValue())
                            {
                                IORInvoiceLineMod ORinvoicemod1 = invoiceModRq.ORInvoiceLineModList.Append();
                                ORinvoicemod1.InvoiceLineMod.TxnLineID.SetValue(ORInvoiceLineRet.InvoiceLineRet.TxnLineID.GetValue());
                            }
                        }
                    }

                    //this add the new line
                    if (invoiceItem1.Amount >= 0)
                    {
                        if (invoiceItem1.Amount == 0) {
                            string msg = "Warning: Invoice = $0 for" + szCustomerName;
                            MMSUtility.LogFile(msg, "", "AddModQBInvoice", 0, "QBBatchInvoiceDialog");
                        }

                        IORInvoiceLineMod ORinvoicemod1 = invoiceModRq.ORInvoiceLineModList.Append();
                        ORinvoicemod1.InvoiceLineMod.TxnLineID.SetValue("-1");
                        ORinvoicemod1.InvoiceLineMod.ServiceDate.SetValue(invoiceItem1.Date);
                        ORinvoicemod1.InvoiceLineMod.ItemRef.ListID.SetValue(item1.QuickBooksID);
                        ORinvoicemod1.InvoiceLineMod.Amount.SetValue(invoiceItem1.Amount);
                        ORinvoicemod1.InvoiceLineMod.Quantity.SetValue(invoiceItem1.Quantity);
                        ORinvoicemod1.InvoiceLineMod.Desc.SetValue(invoiceItem1.Description);
                        bItemInvoice1 = true;

                    }

                    //Send the request and get the response from QuickBooks
                    responseMsgSet = sessionManager.DoRequests(requestMsgSet);
                    response = responseMsgSet.ResponseList.GetAt(0);
                    invoiceRet = (IInvoiceRet)response.Detail;

                    invoice.QuickBooksID = invoiceRet.TxnID.GetValue();
                    invoiceID = invoice.QuickBooksID;

                    int nIndex = invoiceRet.ORInvoiceLineRetList.Count - 1;
                    if (bItemInvoice1)
                        invoiceItem1.QuickBooksID = invoiceRet.ORInvoiceLineRetList.GetAt(nIndex).InvoiceLineRet.TxnLineID.GetValue();

                }

            }
            catch (Exception ex)
            {
                MMSUtility.LogFile(ex.Message, "", "AddModQBInvoice", ex.LineNumber(), "QBBatchInvoiceDialog");
                MessageBox.Show(ex.Message, "Error");
            }
            finally
            {
                //End the session and close the connection to QuickBooks
                if (sessionBegun)
                {
                    sessionManager.EndSession();
                }
                if (connectionOpen)
                {
                    sessionManager.CloseConnection();
                }
            }
            return invoiceID;
        }