예제 #1
0
        private CustomerRet CreateAndParseCustomerQueryXml(string timeCreated, string timeModified)
        {
            var ret = $"<CustomerRet><ListID>80000001-1422671082</ListID><TimeCreated>{timeCreated}</TimeCreated><TimeModified>{timeModified}</TimeModified><EditSequence>1422671082</EditSequence><Name>Chris Curtis</Name><FullName>Christopher Curtis</FullName><IsActive>true</IsActive></CustomerRet>";

            var response = new QbXmlResponse();
            var rs       = response.GetSingleItemFromResponse <CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs"));

            return(rs.CustomerRet[0]);
        }
예제 #2
0
        public void BasicDataExtDefDelResponseTest()
        {
            var ret = "<DataExtDefDelRet><OwnerID>{7d543f23-f3b1-4dea-8ff4-37bd26d15e6c}</OwnerID><DataExtName>name</DataExtName></DataExtDefDelRet>";

            var response   = new QbXmlResponse();
            var rs         = response.GetSingleItemFromResponse <DataExtDefDelRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "DataExtDefDelRs"));
            var dataExtDef = rs.DataExtDefDelRet;

            Assert.AreEqual("name", dataExtDef.DataExtName);
        }
        public void BasicDataExtDefDelResponseTest()
        {
            var ret = "<DataExtDefDelRet><OwnerID>{7d543f23-f3b1-4dea-8ff4-37bd26d15e6c}</OwnerID><DataExtName>name</DataExtName></DataExtDefDelRet>";

            var response = new QbXmlResponse();
            var rs = response.GetSingleItemFromResponse<DataExtDefDelRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "DataExtDefDelRs"));
            var dataExtDef = rs.DataExtDefDelRet;

            Assert.AreEqual("name", dataExtDef.DataExtName);
        }
        public void BasicInvoiceModResponseTest()
        {
            var invoiceRet = "<InvoiceRet><TxnID>80000001-1422671082</TxnID><TimeCreated>2015-01-30T18:24:42-08:00</TimeCreated><TimeModified>2015-01-30T18:24:42-08:00</TimeModified><EditSequence>1422671082</EditSequence><CustomerRef><ListID>123456</ListID></CustomerRef><TxnDate>2015-02-19</TxnDate></InvoiceRet>";

            var response = new QbXmlResponse();
            var rs       = response.GetSingleItemFromResponse <InvoiceModRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(invoiceRet, "InvoiceModRs"));
            var invoice  = rs.InvoiceRet;

            Assert.AreEqual("80000001-1422671082", invoice.TxnID);
            Assert.AreEqual("123456", invoice.CustomerRef.ListID);
        }
        public void BasicInvoiceAddResponseTest()
        {
            var invoiceRet = "<InvoiceRet><TxnID>80000001-1422671082</TxnID><TimeCreated>2015-01-30T18:24:42-08:00</TimeCreated><TimeModified>2015-01-30T18:24:42-08:00</TimeModified><EditSequence>1422671082</EditSequence><CustomerRef><ListID>123456</ListID></CustomerRef><TxnDate>2015-02-19</TxnDate></InvoiceRet>";

            var response = new QbXmlResponse();
            var rs = response.GetSingleItemFromResponse<InvoiceAddRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(invoiceRet, "InvoiceAddRs"));
            var invoice = rs.InvoiceRet;

            Assert.AreEqual("80000001-1422671082", invoice.TxnID);
            Assert.AreEqual("123456", invoice.CustomerRef.ListID);
        }
        public void PreferredDeliveryMethod_Mail_ShouldBeValid()
        {
            var ret = "<CustomerRet><ListID>80000001-1422671082</ListID><TimeCreated>2015-04-03T10:06:17-08:00</TimeCreated><TimeModified>2015-04-03T10:06:17-08:00</TimeModified><EditSequence>1422671082</EditSequence><Name>Jean-S&#233;bastien Goupil</Name><FullName>Jean-S&#233;bastien Goupil</FullName><IsActive>true</IsActive><PreferredDeliveryMethod>Mail</PreferredDeliveryMethod></CustomerRet>";

            var response = new QbXmlResponse();
            var rs = response.GetSingleItemFromResponse<CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs"));
            var customers = rs.CustomerRet;
            var customer = customers[0];

            Assert.AreEqual(1, customers.Length);
            Assert.AreEqual(PreferredDeliveryMethod.Mail, customer.PreferredDeliveryMethod);
        }
        public void BasicCustomerResponseTest_WithEnum()
        {
            var ret = "<CustomerRet><JobStatus>InProgress</JobStatus></CustomerRet>";

            var response = new QbXmlResponse();
            var rs = response.GetSingleItemFromResponse<CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs"));
            var customers = rs.CustomerRet;
            var customer = customers[0];

            Assert.AreEqual(1, customers.Length);
            Assert.AreEqual(JobStatus.InProgress, customer.JobStatus);
        }
        public void BasicEntityQueryResponseTest()
        {
            var ret = "<EmployeeRet><Name>SomeName</Name></EmployeeRet><EmployeeRet><Name>Other</Name></EmployeeRet>";

            var response = new QbXmlResponse();
            var rs = response.GetSingleItemFromResponse<EntityQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "EntityQueryRs"));
            var employees = rs.EmployeeRet;

            Assert.AreEqual(2, employees.Count());
            Assert.AreEqual("SomeName", employees.First().Name);
            Assert.AreEqual("Other", employees.Last().Name);
        }
        public void BasicCustomerResponseTest_WithEnum()
        {
            var ret = "<CustomerRet><JobStatus>InProgress</JobStatus></CustomerRet>";

            var response  = new QbXmlResponse();
            var rs        = response.GetSingleItemFromResponse <CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs"));
            var customers = rs.CustomerRet;
            var customer  = customers[0];

            Assert.AreEqual(1, customers.Length);
            Assert.AreEqual(JobStatus.InProgress, customer.JobStatus);
        }
예제 #10
0
        public void ErrorRecoveryBasicWithDataExtDel()
        {
            var ret = "<ErrorRecovery><ListID>123456</ListID><TxnNumber>67890</TxnNumber></ErrorRecovery>";

            var response = new QbXmlResponse();
            var rs       = response.GetSingleItemFromResponse <DataExtDelRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "DataExtDelRs"));
            var dataExt  = rs.DataExtDelRet;

            Assert.IsNull(dataExt);
            Assert.AreEqual("123456", rs.ErrorRecovery.ListID);
            Assert.AreEqual("67890", rs.ErrorRecovery.TxnNumber);
        }
        public void PreferredDeliveryMethod_Mail_ShouldBeValid()
        {
            var ret = "<CustomerRet><ListID>80000001-1422671082</ListID><TimeCreated>2015-04-03T10:06:17-08:00</TimeCreated><TimeModified>2015-04-03T10:06:17-08:00</TimeModified><EditSequence>1422671082</EditSequence><Name>Jean-S&#233;bastien Goupil</Name><FullName>Jean-S&#233;bastien Goupil</FullName><IsActive>true</IsActive><PreferredDeliveryMethod>Mail</PreferredDeliveryMethod></CustomerRet>";

            var response  = new QbXmlResponse();
            var rs        = response.GetSingleItemFromResponse <CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs"));
            var customers = rs.CustomerRet;
            var customer  = customers[0];

            Assert.AreEqual(1, customers.Length);
            Assert.AreEqual(PreferredDeliveryMethod.Mail, customer.PreferredDeliveryMethod);
        }
예제 #12
0
        public void BasicEntityQueryResponseTest()
        {
            var ret = "<EmployeeRet><Name>SomeName</Name></EmployeeRet><EmployeeRet><Name>Other</Name></EmployeeRet>";

            var response  = new QbXmlResponse();
            var rs        = response.GetSingleItemFromResponse <EntityQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "EntityQueryRs"));
            var employees = rs.EmployeeRet;

            Assert.AreEqual(2, employees.Count());
            Assert.AreEqual("SomeName", employees.First().Name);
            Assert.AreEqual("Other", employees.Last().Name);
        }
        public void BasicCustomerResponseTest()
        {
            var ret = "<CustomerRet><ListID>80000001-1422671082</ListID><TimeCreated>2015-01-30T18:24:42-08:00</TimeCreated><TimeModified>2015-01-30T18:24:42-08:00</TimeModified><EditSequence>1422671082</EditSequence><Name>Jean-S&#233;bastien Goupil</Name><FullName>Jean-S&#233;bastien Goupil</FullName><IsActive>true</IsActive></CustomerRet>";

            var response  = new QbXmlResponse();
            var rs        = response.GetSingleItemFromResponse <CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs"));
            var customers = rs.CustomerRet;
            var customer  = customers[0];

            Assert.AreEqual(1, customers.Length);
            Assert.AreEqual("80000001-1422671082", customer.ListID);
            Assert.AreEqual("Jean-Sébastien Goupil", customer.Name);
        }
예제 #14
0
        public void GuidToStringWillBeHexadecimalInQbXmlResponseWhenParsedFromHexadecimalEmptyGuid()
        {
            //Deserializing from XML will instantiate the GUIDTYPE with its parameterless constructor, Then use ReadXML to set the value
            //Retain hex formatting when input is also in hex format

            var ret = "<DataExtRet><OwnerID>{00000000-0000-0000-0000-000000000000}</OwnerID><DataExtName>name</DataExtName><DataExtType>STR255TYPE</DataExtType><DataExtValue>value</DataExtValue></DataExtRet>";

            var response = new QbXmlResponse();
            var rs       = response.GetSingleItemFromResponse <DataExtAddRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "DataExtAddRs"));
            var dataExt  = rs.DataExtRet;

            Assert.AreEqual("{00000000-0000-0000-0000-000000000000}", dataExt.OwnerID.ToString());
        }
        public void BasicDataDelExtResponseTest()
        {
            var ret = "<DataExtDelRet><OwnerID>{7d543f23-f3b1-4dea-8ff4-37bd26d15e6c}</OwnerID><DataExtName>name</DataExtName><TxnDataExtType>CreditCardCredit</TxnDataExtType><TxnID>1234</TxnID><TimeDeleted>2015-02-10T00:00:00</TimeDeleted></DataExtDelRet>";

            var response = new QbXmlResponse();
            var rs = response.GetSingleItemFromResponse<DataExtDelRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "DataExtDelRs"));
            var dataExt = rs.DataExtDelRet;

            Assert.AreEqual("name", dataExt.DataExtName);
            Assert.AreEqual(TxnDataExtType.CreditCardCredit, dataExt.TxnDataExtType.Value);
            Assert.AreEqual("1234", dataExt.TxnID);
            Assert.AreEqual(new DATETIMETYPE(DateTime.Parse("2015-02-10")), dataExt.TimeDeleted);
        }
        public void BasicCustomerResponseTest()
        {
            var ret = "<CustomerRet><ListID>80000001-1422671082</ListID><TimeCreated>2015-01-30T18:24:42-08:00</TimeCreated><TimeModified>2015-01-30T18:24:42-08:00</TimeModified><EditSequence>1422671082</EditSequence><Name>Jean-S&#233;bastien Goupil</Name><FullName>Jean-S&#233;bastien Goupil</FullName><IsActive>true</IsActive></CustomerRet>";

            var response = new QbXmlResponse();
            var rs = response.GetSingleItemFromResponse<CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs"));
            var customers = rs.CustomerRet;
            var customer = customers[0];

            Assert.AreEqual(1, customers.Length);
            Assert.AreEqual("80000001-1422671082", customer.ListID);
            Assert.AreEqual("Jean-Sébastien Goupil", customer.Name);
        }
예제 #17
0
        public void BasicDataDelExtResponseTest()
        {
            var ret = "<DataExtDelRet><OwnerID>{7d543f23-f3b1-4dea-8ff4-37bd26d15e6c}</OwnerID><DataExtName>name</DataExtName><TxnDataExtType>CreditCardCredit</TxnDataExtType><TxnID>1234</TxnID><TimeDeleted>2015-02-10T00:00:00</TimeDeleted></DataExtDelRet>";

            var response = new QbXmlResponse();
            var rs       = response.GetSingleItemFromResponse <DataExtDelRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "DataExtDelRs"));
            var dataExt  = rs.DataExtDelRet;

            Assert.AreEqual("name", dataExt.DataExtName);
            Assert.AreEqual(TxnDataExtType.CreditCardCredit, dataExt.TxnDataExtType.Value);
            Assert.AreEqual("1234", dataExt.TxnID);
            Assert.AreEqual(new DATETIMETYPE(DateTime.Parse("2015-02-10")), dataExt.TimeDeleted);
        }
예제 #18
0
        public void GuidToStringWillBeZeroInQbXmlResponseWhenParsedFromZero()
        {
            //Deserializing from XML will instantiate the GUIDTYPE with its parameterless constructor, Then use ReadXML to set the value
            //Ensure that reading from XML will also handle the Zero (0) format

            var ret = "<DataExtRet><OwnerID>0</OwnerID><DataExtName>name</DataExtName><DataExtType>STR255TYPE</DataExtType><DataExtValue>value</DataExtValue></DataExtRet>";

            var response = new QbXmlResponse();
            var rs       = response.GetSingleItemFromResponse <DataExtAddRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "DataExtAddRs"));
            var dataExt  = rs.DataExtRet;

            Assert.AreEqual("0", dataExt.OwnerID.ToString());
        }
예제 #19
0
        /// <summary>
        /// Called when the Web Connector returns some data.
        /// </summary>
        /// <param name="authenticatedTicket">The authenticated ticket.</param>
        /// <param name="response">QbXml.</param>
        /// <param name="hresult">HResult.</param>
        /// <param name="message">Message.</param>
        /// <returns>Message to be returned to the Web Connector.</returns>
        public virtual async Task <int> ReceiveXMLAsync(IAuthenticatedTicket authenticatedTicket, string response, string hresult, string message)
        {
            var responseObject = new QbXmlResponse();

            if (!string.IsNullOrEmpty(response))
            {
                var msgResponseObject = responseObject.GetSingleItemFromResponse(response, typeof(QbResponse)) as QbResponse;
                await ExecuteResponseAsync(authenticatedTicket, msgResponseObject);

                return(0);
            }

            return(-1);
        }
예제 #20
0
        public void BasicDataExtDefAddResponseTest()
        {
            var ret = "<DataExtDefRet><OwnerID>{7d543f23-f3b1-4dea-8ff4-37bd26d15e6c}</OwnerID><DataExtID>123</DataExtID><DataExtName>name</DataExtName><DataExtType>STR255TYPE</DataExtType><AssignToObject>Account</AssignToObject><AssignToObject>Charge</AssignToObject></DataExtDefRet>";

            var response   = new QbXmlResponse();
            var rs         = response.GetSingleItemFromResponse <DataExtDefAddRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "DataExtDefAddRs"));
            var dataExtDef = rs.DataExtDefRet;

            Assert.AreEqual("name", dataExtDef.DataExtName);
            Assert.AreEqual(DataExtType.STR255TYPE, dataExtDef.DataExtType);
            Assert.AreEqual(2, dataExtDef.AssignToObject.Length);
            Assert.AreEqual(AssignToObject.Account, dataExtDef.AssignToObject.First());
            Assert.AreEqual(AssignToObject.Charge, dataExtDef.AssignToObject.Last());
        }
        public void BasicDataExtDefModResponseTest()
        {
            var ret = "<DataExtDefRet><OwnerID>{7d543f23-f3b1-4dea-8ff4-37bd26d15e6c}</OwnerID><DataExtID>123</DataExtID><DataExtName>name</DataExtName><DataExtType>STR255TYPE</DataExtType><AssignToObject>Account</AssignToObject><AssignToObject>Charge</AssignToObject></DataExtDefRet>";

            var response = new QbXmlResponse();
            var rs = response.GetSingleItemFromResponse<DataExtDefModRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "DataExtDefModRs"));
            var dataExtDef = rs.DataExtDefRet;

            Assert.AreEqual("name", dataExtDef.DataExtName);
            Assert.AreEqual(DataExtType.STR255TYPE, dataExtDef.DataExtType);
            Assert.AreEqual(2, dataExtDef.AssignToObject.Count());
            Assert.AreEqual(AssignToObject.Account, dataExtDef.AssignToObject.First());
            Assert.AreEqual(AssignToObject.Charge, dataExtDef.AssignToObject.Last());
        }
예제 #22
0
        public virtual int ReceiveXML(AuthenticatedTicket authenticatedTicket, string response, string hresult, string message)
        {
            var responseObject = new QbXmlResponse(qbXmlResponseOptions);

            if (!string.IsNullOrEmpty(response))
            {
                var msgResponseObject = responseObject.GetSingleItemFromResponse(response, typeof(Y)) as Y;
                ExecuteResponse(authenticatedTicket, msgResponseObject);

                return(0);
            }

            return(-1);
        }
        public void BasicCustomerResponseTest_WithObject()
        {
            var ret = "<CustomerRet><ShipAddress><City>Seattle</City><State>WA</State></ShipAddress></CustomerRet>";

            var response  = new QbXmlResponse();
            var rs        = response.GetSingleItemFromResponse <CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs"));
            var customers = rs.CustomerRet;
            var customer  = customers[0];

            Assert.AreEqual(1, customers.Length);
            Assert.IsNotNull(customer.ShipAddress);
            Assert.AreEqual("Seattle", customer.ShipAddress.City);
            Assert.AreEqual("WA", customer.ShipAddress.State);
        }
예제 #24
0
        public void TimeZoneBugFixTests()
        {
            var ret = "<CustomerRet><ListID>80000001-1422671082</ListID><TimeCreated>2015-04-03T10:06:17-08:00</TimeCreated><TimeModified>2015-04-03T10:06:17-08:00</TimeModified><EditSequence>1422671082</EditSequence><Name>Jean-S&#233;bastien Goupil</Name><FullName>Jean-S&#233;bastien Goupil</FullName><IsActive>true</IsActive></CustomerRet>";

            var response = new QbXmlResponse(new QbXmlResponseOptions
            {
                TimeZoneBugFix = QuickBooksTestHelper.GetPacificStandardTimeZoneInfo()
            });
            var rs        = response.GetSingleItemFromResponse <CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs"));
            var customers = rs.CustomerRet;
            var customer  = customers[0];

            Assert.AreEqual(17, customer.TimeModified.ToDateTime().ToUniversalTime().Hour);
        }
        public void BasicCustomerResponseTest_WithObject()
        {
            var ret = "<CustomerRet><ShipAddress><City>Seattle</City><State>WA</State></ShipAddress></CustomerRet>";

            var response = new QbXmlResponse();
            var rs = response.GetSingleItemFromResponse<CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs"));
            var customers = rs.CustomerRet;
            var customer = customers[0];

            Assert.AreEqual(1, customers.Length);
            Assert.IsNotNull(customer.ShipAddress);
            Assert.AreEqual("Seattle", customer.ShipAddress.City);
            Assert.AreEqual("WA", customer.ShipAddress.State);
        }
예제 #26
0
        /// <summary>
        /// Called when the Web Connector returns some data.
        /// </summary>
        /// <param name="authenticatedTicket">The authenticated ticket.</param>
        /// <param name="response">QbXml.</param>
        /// <param name="hresult">HResult.</param>
        /// <param name="message">Message.</param>
        /// <returns>Message to be returned to the Web Connector.</returns>
        public virtual async Task <int> ReceiveXMLAsync(IAuthenticatedTicket authenticatedTicket, string response, string hresult, string message)
        {
            var responseObject = new QbXmlResponse();

            if (!string.IsNullOrEmpty(response))
            {
                var objects           = responseObject.GetItemsFromResponse(response, typeof(IQbResponse));
                var msgResponseObject = ((IEnumerable)objects).Cast <IQbResponse>();
                await ExecuteResponseAsync(authenticatedTicket, msgResponseObject);

                return(0);
            }

            return(-1);
        }
        public void BasicCustomerResponseTest_WithIEnumerable()
        {
            var ret = "<CustomerRet><AdditionalContactRef><ContactName>Name1</ContactName><ContactValue>Value1</ContactValue></AdditionalContactRef><AdditionalContactRef><ContactName>Name2</ContactName><ContactValue>Value2</ContactValue></AdditionalContactRef></CustomerRet>";

            var response = new QbXmlResponse();
            var rs = response.GetSingleItemFromResponse<CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs"));
            var customers = rs.CustomerRet;
            var customer = customers[0];

            Assert.AreEqual(1, customers.Length);
            Assert.AreEqual(2, customer.AdditionalContactRef.Count());
            Assert.AreEqual("Name1", customer.AdditionalContactRef.First().ContactName);
            Assert.AreEqual("Value1", customer.AdditionalContactRef.First().ContactValue);
            Assert.AreEqual("Name2", customer.AdditionalContactRef.Last().ContactName);
            Assert.AreEqual("Value2", customer.AdditionalContactRef.Last().ContactValue);
        }
        public void BasicCustomerResponseTest_WithIEnumerable()
        {
            var ret = "<CustomerRet><AdditionalContactRef><ContactName>Name1</ContactName><ContactValue>Value1</ContactValue></AdditionalContactRef><AdditionalContactRef><ContactName>Name2</ContactName><ContactValue>Value2</ContactValue></AdditionalContactRef></CustomerRet>";

            var response  = new QbXmlResponse();
            var rs        = response.GetSingleItemFromResponse <CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs"));
            var customers = rs.CustomerRet;
            var customer  = customers[0];

            Assert.AreEqual(1, customers.Length);
            Assert.AreEqual(2, customer.AdditionalContactRef.Count());
            Assert.AreEqual("Name1", customer.AdditionalContactRef.First().ContactName);
            Assert.AreEqual("Value1", customer.AdditionalContactRef.First().ContactValue);
            Assert.AreEqual("Name2", customer.AdditionalContactRef.Last().ContactName);
            Assert.AreEqual("Value2", customer.AdditionalContactRef.Last().ContactValue);
        }
        public void TimeZoneBugFixTests()
        {
            var ret = "<CustomerRet><ListID>80000001-1422671082</ListID><TimeCreated>2015-04-03T10:06:17-08:00</TimeCreated><TimeModified>2015-04-03T10:06:17-08:00</TimeModified><EditSequence>1422671082</EditSequence><Name>Jean-S&#233;bastien Goupil</Name><FullName>Jean-S&#233;bastien Goupil</FullName><IsActive>true</IsActive></CustomerRet>";

            var response = new QbXmlResponse(new QbXmlResponseOptions
            {
                TimeZoneBugFix = QuickBooksTestHelper.GetPacificStandardTimeZoneInfo()
            });
            var rs = response.GetSingleItemFromResponse<CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs"));
            var customers = rs.CustomerRet;
            var customer = customers[0];

            Assert.AreEqual(17, customer.TimeModified.ToDateTime().ToUniversalTime().Hour);
        }
예제 #30
0
        public void EmployeeResponseWithUnknownTagsTest()
        {
            var employeeRet                 = @"
<EmployeeRet>
    <ListID>1111111-111111111</ListID>
    <EditSequence>1234567890</EditSequence>
    <Name>Daric Teske</Name>
    <IsActive>true</IsActive>
    <FirstName>Daric</FirstName>
    <LastName>Teske</LastName>
    <Phone>5555555555</Phone>
    <Email>[email protected]</Email>
    <EmployeePayrollInfo>
        <IsCoveredByQualifiedPensionPlan>false</IsCoveredByQualifiedPensionPlan>
        <PayPeriod>Weekly</PayPeriod>
        <PayScheduleRef>
            <ListID>80000001-1286898172</ListID>
            <FullName>Weekly</FullName>
        </PayScheduleRef>
        <Earnings>
            <PayrollItemWageRef>
                <ListID>80000000-0000000001</ListID>
                <FullName>Field</FullName>
            </PayrollItemWageRef>
            <Rate>15.00</Rate>
        </Earnings>
        <Earnings>
            <PayrollItemWageRef>
                <ListID>80000000-0000000002</ListID>
                <FullName>Field Overtime</FullName>
            </PayrollItemWageRef>
            <Rate>25.00</Rate>
        </Earnings>
        <Earnings>
            <PayrollItemWageRef>
                <ListID>80000000-0000000003</ListID>
                <FullName>Field Double Time</FullName>
            </PayrollItemWageRef>
            <Rate>50.00</Rate>
        </Earnings>
        <Earnings>
            <PayrollItemWageRef>
                <ListID>80000000-0000000004</ListID>
                <FullName>Field Holiday</FullName>
            </PayrollItemWageRef>
            <Rate>30.00</Rate>
        </Earnings>
        <UseTimeDataToCreatePaychecks>UseTimeData</UseTimeDataToCreatePaychecks>
        <SickHours>
            <HoursAvailable>PT0H15M0S</HoursAvailable>
            <AccrualPeriod>EveryPaycheck</AccrualPeriod>
            <HoursAccrued>PT0H55M0S</HoursAccrued>
            <MaximumHours>PT48H0M0S</MaximumHours>
            <IsResettingHoursEachNewYear>false</IsResettingHoursEachNewYear>
            <HoursUsed>PT0H0M0S</HoursUsed>
            <YearBeginsDate>2020-01-01</YearBeginsDate>
            <AccrualStartDate>2000-01-01</AccrualStartDate>
        </SickHours>
        <VacationHours>
            <HoursAvailable>PT0H0M0S</HoursAvailable>
            <AccrualPeriod>EveryPaycheck</AccrualPeriod>
            <HoursAccrued>PT0H0M0S</HoursAccrued>
            <MaximumHours>PT0H0M0S</MaximumHours>
            <IsResettingHoursEachNewYear>false</IsResettingHoursEachNewYear>
            <HoursUsed>PT0H0M0S</HoursUsed>
            <YearBeginsDate>2020-01-01</YearBeginsDate>
            <AccrualStartDate>2000-01-01</AccrualStartDate>
        </VacationHours>
        <EmployeeTaxInfo>
            <StateLived>NE</StateLived>
            <StateWorked>NE</StateWorked>
            <IsStandardTaxationRequired>true</IsStandardTaxationRequired>
            <EmployeeTax>
                <IsSubjectToTax>true</IsSubjectToTax>
                <PayrollItemTaxRef>
                    <ListID>D0000-863012697</ListID>
                    <FullName>Federal Withholding</FullName>
                </PayrollItemTaxRef>
                <TaxInfo>
                    <TaxInfoCategory>ALLOWANCES</TaxInfoCategory>
                    <TaxInfoValue>1</TaxInfoValue>
                </TaxInfo>
                <TaxInfo>
                    <TaxInfoCategory>EXTRA_WITHHOLDING</TaxInfoCategory>
                    <TaxInfoValue>0.00</TaxInfoValue>
                </TaxInfo>
                <TaxInfo>
                    <TaxInfoCategory>FILING_STATUS</TaxInfoCategory>
                    <TaxInfoValue>256</TaxInfoValue>
                </TaxInfo>
            </EmployeeTax>
        </EmployeeTaxInfo>
        <EmployeeDirectDepositAccount>
            <BankName>Fake Bank</BankName>
            <RoutingNumber>111111111</RoutingNumber>
            <AccountNumber>111111111111</AccountNumber>
            <BankAccountType>Checking</BankAccountType>
        </EmployeeDirectDepositAccount>
    </EmployeePayrollInfo>
</EmployeeRet>";
            var response                    = new QbXmlResponse();
            var onUnknownElementCalled      = 0;
            XmlDeserializationEvents events = new XmlDeserializationEvents();

            events.OnUnknownElement += (object sender, XmlElementEventArgs e) =>
            {
                onUnknownElementCalled++;
                if (e.Element.Name == nameof(EmployeePayrollInfo.UseTimeDataToCreatePaychecks) && Enum.TryParse(typeof(UseTimeDataToCreatePaychecks), e.Element.InnerText, out object useTimeData))
                {
                    var employeePayrollInfo = (EmployeePayrollInfo)e.ObjectBeingDeserialized;
                    employeePayrollInfo.UseTimeDataToCreatePaychecksSpecified = true;
                    employeePayrollInfo.UseTimeDataToCreatePaychecks          = (UseTimeDataToCreatePaychecks)useTimeData;
                }
            };
            var rs = response.GetSingleItemFromResponse <EmployeeQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(employeeRet, "EmployeeQueryRs"), events);

            var employees = rs.EmployeeRet;
            var employee  = employees[0];

            Assert.AreEqual(1, employees.Length);
            Assert.AreEqual("1111111-111111111", employee.ListID);

            // Custom event handler was called at least once
            Assert.GreaterOrEqual(onUnknownElementCalled, 1);

            // Custom event handler updated a known property captured by the OnUnknownElement event
            Assert.IsTrue(employee.EmployeePayrollInfo.UseTimeDataToCreatePaychecksSpecified);
            Assert.AreEqual(UseTimeDataToCreatePaychecks.UseTimeData, employee.EmployeePayrollInfo.UseTimeDataToCreatePaychecks);
        }