Retriving all checks, deposits, etc dealing with money using qbxml - quickbooks

I'm able to retrieve some data using QBXML from a QuickBooks 14 database, but there are missing items in the returned XML. For example, although all of the General Journal Entries are returned, but not Checks or Deposits. This gives and incomplete picture of the account's balance.
Is JournalEntryQueryRq the best way to get all of the information? If so are there other child nodes than <IncludeLineItems>true</IncludeLineItems> I should use? Should something else other than JournalEntryQueryRqbe used to begin with?
Here is a current XML sample for an account
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="13.0"?>
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
<!-- Examples: -->
<JournalEntryQueryRq>
<AccountFilter>
<ListID>80000000-1xxxxxxxxx</ListID>
</AccountFilter>
<IncludeLineItems>true</IncludeLineItems>
</JournalEntryQueryRq>
</QBXMLMsgsRq>
</QBXML>
that returns a lot of data for the account, but none of the types Check or Deposit. This makes me think I'm missing something easy.
Thanks in advance for any insight

The JournalEntryQueryRq request returns Journal Entry records.
If you want Check objects, do a CheckQueryRq.
If you want Deposit objects, do a DepositQueryRq.
All of the syntax is documented in the QuickBooks OSR:
https://developer-static.intuit.com/qbsdk-current/common/newosr/index.html

Related

Bing Ads API Reporting Service returns error code 2015 "No Dimension Selected"

I'm trying to pull some data from the Bing Ads API but I keep getting error code 2015. I'm using Savon with Ruby on Rails. Here is the request:
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="https://bingads.microsoft.com/Reporting/v13" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns="https://bingads.microsoft.com/Reporting/v13">
<env:Header>
<AuthenticationToken>blahblahblah</AuthenticationToken>
<CustomerAccountId>blahblahblah</CustomerAccountId>
<CustomerId>blahblahblah</CustomerId>
<DeveloperToken>blahblahblah</DeveloperToken>
</env:Header>
<env:Body>
<tns:SubmitGenerateReportRequest>
<ReportRequest xsi:nil="false" xsi:type="AccountPerformanceReportRequest">
<ExcludeColumnHeaders>true</ExcludeColumnHeaders>
<ExcludeReportFooter>true</ExcludeReportFooter>
<ExcludeReportHeader>true</ExcludeReportHeader>
<Format>Csv</Format>
<Language>English</Language>
<ReportName>AccountPerformanceReportRequest</ReportName>
<ReturnOnlyCompleteData>false</ReturnOnlyCompleteData>
<Aggregation>Summary</Aggregation>
<Columns>
<AccountPerformanceReportColumn>Spend</AccountPerformanceReportColumn>
<AccountPerformanceReportColumn>Clicks</AccountPerformanceReportColumn>
<AccountPerformanceReportColumn>Conversions</AccountPerformanceReportColumn>
<AccountPerformanceReportColumn>Revenue</AccountPerformanceReportColumn>
</Columns>
<Filter xsi:nil="true"/>
<Scope>
<AccountIds xmlns:a1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<a1:long>blahblahblah</a1:long>
</AccountIds>
</Scope>
<Time>
<CustomDateRangeEnd>
<Day>02</Day>
<Month>04</Month>
<Year>2019</Year>
</CustomDateRangeEnd>
<CustomDateRangeStart>
<Day>01</Day>
<Month>04</Month>
<Year>2019</Year>
</CustomDateRangeStart>
<PredefinedTime xsi:nil="true"/>
<ReportTimeZone>EasternTimeUSCanada</ReportTimeZone>
</Time>
</ReportRequest>
</tns:SubmitGenerateReportRequest>
</env:Body>
</env:Envelope>
As you can see, I'm pulling the report with 'Summary' as the aggregation type. If I use 'Monthly' as the aggregation type and include a 'TimePeriod' column, it works perfectly, but if I do that then the data returned is for the whole month of April as opposed to the date range I've selected 04-01-2019..04-02-2019.
Here is the response:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode>s:Server</faultcode>
<faultstring xml:lang="en-US">Invalid client data. Check the SOAP fault details for more information</faultstring> <detail>
<ApiFaultDetail xmlns="https://bingads.microsoft.com/Reporting/v13" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<TrackingId xmlns="https://adapi.microsoft.com">52665fe5-3eb8-42e0-ad8e-942e848297ce</TrackingId>
<BatchErrors/>
<OperationErrors>
<OperationError>
<Code>2015</Code>
<Details>No Dimension selected.</Details>
<ErrorCode>RequiredColumnsNotSelected</ErrorCode>
<Message>The specified report request does not specify all the required columns for this report type. Please submit a report request with the required columns for this report type, and optionally additional columns that are to be included in the report.</Message>
</OperationError>
</OperationErrors>
</ApiFaultDetail>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
The error code returned would lead me to believe that a TimePeriod column is required even for Summary, but that contradicts what is documented here.
All other aggregation types work with this setup. Any help would be greatly appreciated.
Good catch. We will update documentation to clarify that at least one attribute (non performance stat) e.g., AccountId must be included. Most of the other reports have specific attributes that must be included, whereas the account report does not. I hope this helps!

QuickBooks Web Connector Error: The element 'QBXML' is used but not declared in the DTD/Schema

I have a web server connecting to QuickBooks Desktop via the Web Connector. Most of my transaction types are working, but I have a few which are not. When I run them through the XML validator, I get this error:
Requested validation for QB Web Connector (qwc), file has processing instruction indicating <?qbxml... obeying processing instruction
Line: 2
LinePos: 8
Src Text:
Reason: The element 'QBXML' is used but not declared in the DTD/Schema.
My QBXML is as follows:
<?xml version="1.0" ?><?qbxml version="13.0"?>
<QBXML>
<QBXMLMsgsRq onError = "stopOnError">
<ReceivePaymentAddRq requestID = "2">
<ReceivePaymentAdd>
<CustomerRef>
<ListID>8000017D-1509724466</ListID>
</CustomerRef>
<TxnDate>2016-01-04</TxnDate>
<RefNumber>1000</RefNumber>
<TotalAmount>39.99</TotalAmount>
<PaymentMethodRef>
<FullName>Cash</FullName>
</PaymentMethodRef>
<AppliedToTxnAdd>
<TxnID>81E-1509734863</TxnID>
<PaymentAmount>39.99</PaymentAmount>
</AppliedToTxnAdd>
</ReceivePaymentAdd>
</ReceivePaymentAddRq>
</QBXMLMsgsRq>
</QBXML>
The XML validator says the QBXML is valid for both the Desktop and On-Line versions, but gives the error when testing for the Web Connector
I'm having this issue with EmployeeAdd, ReceivePaymentAdd and PaymentMethodAdd. I'm not having it with AccountAdd, ClassAdd, CustomerAdd, ItemServiceAdd or InvoiceAdd.
I've tried changing the Version to everything between 2.0 and 13.0
Has anyone else run across this and found a solution?
When I run them through the XML validator, I get this error:
You're using the wrong settings in the validator.
You should NEVER be validating against the Web Connector option
(that is for validating .qwc files, vs. actual qbXML requests)
You should NEVER be validating against Online (QuickBooks Online no
longer uses qbXML at all)
Always validate against the Desktop version option
If you're experiencing errors, then you need to post the actual error you're getting along with the actual requests that you're sending so that we can help you.

PHP library for Office365 EWS with GetRooms

Whole last week i struggled with Php libraries for EWS. I tried Package365Ews and Php-ews but both of them are missing core feature for me, or it's not documented - GetRooms. Do anyone know how to handle it, or know another library implementing this?
I personally would suggest my own library, garethp/php-ews.
It's got simple usage, but not everything is covered under simpler API's. EWS is a large thing, and documenting everything would be intense. That being said, I can certainly help you translate existing documentation by Microsoft to using this code. And, if you find yourself with more issues after this post, I check my Github daily, so logging an issue against my repository will get more help in a better place for a back and forth.
But first, let me outlay how to perform functions that aren't directly documented. Like GetRooms. My API wraps around EWS, it doesn't block your access to it. So even though I've made no obvious way to do a GetRooms, it's still there. Like this
<?php
use garethp\ews\API;
use garethp\ews\API\Type;
$api = API::fromUsernameAndPassword($server, $username, $password);
//Build Request
$result = $api->getClient()->GetRooms($request);
var_dump($result);
So, the question becomes, how do we build the request? Well, thankfully EWS is very well documented in XML. First, find the article that describes what you're trying to do, then look for the XML. I'm not 100% what you want to do, but I'll use this article as a base. The XML that we're going to try to replicate is
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<t:RequestServerVersion Version="Exchange2010" />
</soap:Header>
<soap:Body>
<m:GetRooms>
<m:RoomList>
<t:EmailAddress>bldg3rooms#contoso.com</t:EmailAddress>
</m:RoomList>
</m:GetRooms>
</soap:Body>
</soap:Envelope>
You can skip the header, and the <m:GetRooms> part, those are built for you. What we're focused on is the payload you want to send, which is
<m:RoomList>
<t:EmailAddress>bldg3rooms#contoso.com</t:EmailAddress>
</m:RoomList>
We want to make our request look like that. So, in our code, our request will look like:
$request = array (
'RoomsList' => array (
'EmailAddress' => 'bldg3rooms#contoso.com'
)
);
$request = Type::buildFromArray($request);
And this will be translated to XML for you for the SOAP call. Using this method, for any functions that aren't documented or outright supported, you can easily still use them and just refer to the official Microsoft documentation for any request you need to make

How to Get global contacts from EWS?

I'm working on microsoft EWS Webservice i found the solutions for fectching current users data . Now i need to fetch global contacts from EWS. is there any help?thanks in Advance.
currently im using below string for getting user data
<?xml version=\"1.0\" encoding=\"utf-8\"?>\
<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\
xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"\
xmlns:t=\"http://schemas.microsoft.com/exchange/services/2006/types\">\
<soap:Body>\
<ResolveNames xmlns=\"http://schemas.microsoft.com/exchange/services/2006/messages\"\
xmlns:t=\"http://schemas.microsoft.com/exchange/services/2006/types\"\
ReturnFullContactData=\"true\">\
<UnresolvedEntry>smtp:%##atea.dk</UnresolvedEntry>\
</ResolveNames>\
</soap:Body>\
</soap:Envelope>
If you want to Search for contacts in the Global Address List you just need to set the SearchScope to ActiveDirectory see http://msdn.microsoft.com/en-us/library/office/aa565329(v=exchg.150).aspx
eg
<soap:Header>
<t:RequestServerVersion Version="Exchange2013_SP1" />
</soap:Header>
<soap:Body>
<m:ResolveNames ReturnFullContactData="true" SearchScope="ActiveDirectory">
<m:UnresolvedEntry>smtp</m:UnresolvedEntry>
</m:ResolveNames>
</soap:Body>
</soap:Envelope>
The thing to keep in mind with this method is that it will only return a max of 100 entries. If you have a really large directory and have Exchange 2013 then use findpeople http://msdn.microsoft.com/en-us/library/office/jj191039(v=exchg.150).aspx instead
Cheers
Glen

10001 Internal Error when trying to capture an authorization from PayPal with Activemerchant

I've successfully made authorized a card, and it shows up in my sandbox transaction log. When I try to capture using that authorization (with activemerchant, which uses SOAP), this is the XML it sends to the server:
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header>
<RequesterCredentials xmlns:n1="urn:ebay:apis:eBLBaseComponents" xmlns="urn:ebay:api:PayPalAPI" env:mustUnderstand="0">
<n1:Credentials>
<Username>seller_1249669053_per_api1.synergyeoc.com</Username>
<Password>snip</Password>
<Subject/>
</n1:Credentials>
</RequesterCredentials>
</env:Header>
<env:Body>
<DoCaptureReq xmlns="urn:ebay:api:PayPalAPI">
<DoCaptureRequest xmlns:n2="urn:ebay:apis:eBLBaseComponents">
<n2:Version>52.0</n2:Version>
<AuthorizationID>0RF01309N5838270B</AuthorizationID>
<Amount currencyID="USD">2600.00</Amount>
<CompleteType>Complete</CompleteType>
<Note/>
</DoCaptureRequest>
</DoCaptureReq>
</env:Body>
</env:Envelope>
Paypal returns the ever so descriptive 10001 "Internal Error." Can anyone spot what's not right here?
Just for fun, here is what ActiveMerchant parses as the response from paypal:
=> #<ActiveMerchant::Billing::Response:0x3e00698 #params={"payment_status"=>"None", "correlation_id"=>"a188cc8c5f94c", "timestamp"=>"2009-08-11T06:21:22Z", "pending_reason"=>"none", "build"=>"997644", "transaction_type"=>"none", "error_codes"=>"10001", "version"=>"52.0", "ack"=>"Failure", "message"=>"Internal Error", "reason_code"=>"none", "payment_type"=>"none"}, #test=true, #authorization=nil, #cvv_result={"code"=>nil, "message"=>nil}, #message="Internal Error", #success=false, #fraud_review=false, #avs_result={"code"=>nil, "postal_match"=>nil, "street_match"=>nil, "message"=>nil}>
I'd LOVE it if someone could help!!!
Use non standard credit card number .
I was using standard credit card number '4111111111111111' and getting the 10001 error.
Used "4024007148673576" and it works for me.
All I have are long-shot possibilities.
The interface could have gone down for unannounced reasons after you authorized. Similar thing happened on the 3rd, returning 10001s.
Could be related to https://ppmts.custhelp.com/cgi-bin/ppdts.cfg/php/enduser/std_adp.php?p_faqid=169
I'd also try reauthorizing with a small amount, but it should have given a different error if that was the problem.
Though it shouldn't make a difference if the auth succeeded, you haven't shown us the authorize transaction.

Resources