Мне нужно получить информацию о балансе клиента из Quick Books для настольных компьютеров.

Я не уверен, что это лучший способ получить информацию о балансе клиента из Quick Books. Я пытался использовать TransactionQuery, но платежи клиентов отсутствовали (см. код ниже). Я также пытался использовать GeneralDetailReportQuery, но этот формат трудно читать непосредственно в SQL, так как он требует некоторых манипуляций. Каков наилучший способ получить подробную информацию о балансе клиента для выписки?

Код запроса транзакции:

Public Sub BuildCustomerStmtRq(ByRef inputXMLDoc As XmlDocument, ByRef qbXMLMsgsRq As XmlElement)
Dim TransactionQueryRq As XmlElement
TransactionQueryRq = inputXMLDoc.CreateElement("TransactionQueryRq")
qbXMLMsgsRq.AppendChild(TransactionQueryRq)
TransactionQueryRq.AppendChild(inputXMLDoc.CreateElement("IncludeRetElement")).InnerText = "TxnDate"
TransactionQueryRq.AppendChild(inputXMLDoc.CreateElement("IncludeRetElement")).InnerText = "Amount"
    TransactionQueryRq.AppendChild(inputXMLDoc.CreateElement("IncludeRetElement")).InnerText = "Memo"
    TransactionQueryRq.AppendChild(inputXMLDoc.CreateElement("IncludeRetElement")).InnerText = "EntityRef"
Dim TransactionAccountFilter As XmlElement
        TransactionAccountFilter = inputXMLDoc.CreateElement("TransactionAccountFilter")
        TransactionQueryRq.AppendChild(TransactionAccountFilter)
        TransactionAccountFilter.AppendChild(MakeSimpleElem(inputXMLDoc, "AccountTypeFilter", "AccountsReceivable"))

End Sub

    'Copied this function from Intuit example code
    Private Function MakeSimpleElem(doc As XmlDocument, tagName As String, tagVal As String) As XmlElement
        Dim elem As XmlElement
        elem = doc.CreateElement(tagName)
        elem.InnerText = tagVal
        Return elem
    End Function

person HeidiH    schedule 11.03.2016    source источник


Ответы (1)


CustomerBalanceDetail из GeneralDetailReport, вероятно, единственный запрос, который даст вам всю информацию. CustomerQuery даст вам итоговые данные только в том случае, если это сработает для того, что вам нужно.

person William Lorfing    schedule 11.03.2016
comment
Есть ли доступные образцы кода для преобразования этого обратно в дату, имя, сумму, памятку? - person HeidiH; 11.03.2016
comment
Этот SQL довольно близок: select col1=Rpt.Elm.value('(ColData[1]/@value)','varchar (50)'), col2=Rpt.Elm.value('(ColData[2]/ @value)','varchar (50)'), col3=Rpt.Elm.value('(ColData[3]/@value)','varchar (50)'), col4=Rpt.Elm.value(' (ColData[4]/@value)','varchar (50)'), name=Rpt.Elm.value('(RowData[1]/@value)','varchar (50)') из @QBResponse. nodes('/QBXML/QBXMLMsgsRs/GeneralDetailReportQueryRs/ReportRet/ReportData/DataRow') как Rpt(Elm) - person HeidiH; 11.03.2016
comment
Когда я указываю столбцы для возврата для CustomerBalanceDetail, он удаляет первую строку данных с именем и начальным балансом и заменяет ее TextRow с именем и без начального баланса. Как я могу указать столбцы, сохраняя данные начального баланса? - person HeidiH; 12.03.2016