#!usr/bin/python import win32com.client import xml.etree.ElementTree as ET import json import xmltodict # Connect to Quickbooks sessionManager = win32com.client.Dispatch("QBXMLRP2.RequestProcessor") sessionManager.OpenConnection('', 'Test qbXML Request') ticket = sessionManager.BeginSession("C:\Quickbooks Bogor\qb test\distrindo bakti wutama.qbw", 0) # Send query and receive response qbxml_query = """ Contains TS-I502 QuantityOnHand """ qbxml_query = """ A B """ qbxml_query = """ AB""" qbxml_query1 = """ QuantityOnHand QuantityOnOrder QuantityOnSalesOrder FullName Name """ root = ET.Element("QBXML") root.tail = "\n " root.text = "\n " QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") QBXMLMsgsRq.set("onError", "stopOnError") QBXMLMsgsRq.tail = "\n" QBXMLMsgsRq.text = "\n " PriceLevelQueryRq = ET.SubElement(QBXMLMsgsRq, "PriceLevelQueryRq") #PriceLevelQueryRq.set("metaData", "MetaDataAndResponseData") PriceLevelQueryRq.set("metaData", "NoMetaData") PriceLevelQueryRq.tail = "\n " PriceLevelQueryRq.text = "\n " FullName = ET.SubElement(PriceLevelQueryRq, "FullName") FullName.text = "A" FullName.tail = "\n " FullName = ET.SubElement(PriceLevelQueryRq, "FullName") FullName.text = "C" FullName.tail = "\n " #mydata = ET.tostring(root, encoding = "unicode", method = "xml") mydata = ET.tostring(root, encoding = "unicode") #mydata = ET.tostring(root).decode() print (mydata,type(mydata)) qbxml_query1 = """""" qbxml_query1 = qbxml_query1 + """""" qbxml_query1 = qbxml_query1 + "\n" + mydata print("") print(qbxml_query1, type(qbxml_query1)) print("") #print(qbxml_query, type(qbxml_query)) tree = ET.ElementTree(root) print("test",tree) #response_string = sessionManager.ProcessRequest(ticket, qbxml_query1) # Disconnect from Quickbooks sessionManager.EndSession(ticket) # Close the company file sessionManager.CloseConnection() # Close the connection #print (response_string) # Parse the response into an Element Tree and peel away the layers of response #QBXML = xml.etree.ElementTree.fromstring(response_string) QBXML = ET.fromstring(response_string) print("") #print(QBXML) #print(QBXML) datadict=xmltodict.parse(response_string) #print(datadict) jsondata=json.dumps(datadict) #print(jsondata) ddict=json.loads(jsondata) #print(ddict) QBXMLMsgsRs = QBXML.find('QBXMLMsgsRs') #InventoryAdjustmentQueryRs = QBXMLMsgsRs.getiterator("InventoryAdjustmentRet") #InventoryAdjustmentQueryRs = QBXMLMsgsRs.iter("ItemInventoryRet") PriceLevelQueryRs = QBXMLMsgsRs.iter("PriceLevelRet") #print (PriceLevelQueryRs) PriceLevelRet = ddict["QBXML"]["QBXMLMsgsRs"]["PriceLevelQueryRs"]["PriceLevelRet"] #print (priceLevelPerItemRet) for priceLevelPerItemRetList in PriceLevelRet: #print(priceLevelPerItemRetList) #priceLevelPerItemRet = priceLevelPerItemRet["PriceLevelPerItemRet"] for PriceLevelPerItemRet in priceLevelPerItemRetList["PriceLevelPerItemRet"]: pass print(priceLevelPerItemRetList["Name"],PriceLevelPerItemRet["ItemRef"]["FullName"], PriceLevelPerItemRet["CustomPrice"]) # for PriceLevelRet in PriceLevelQueryRs: # print(PriceLevelRet) # # try: # PLT = PriceLevelRet.find('PriceLevelType').text # IsActive = PriceLevelRet.find('IsActive').text # #txnid = PriceLevelRet.find('ListID').text # name = PriceLevelRet.find('Name').text # PriceLevelPerItemRet = PriceLevelRet.iter("PriceLevelPerItemRet") # for ItemRef in PriceLevelPerItemRet: # print(ItemRef) # FullName = ItemRef.find('FullName').text # CustomPrice = PriceLevelRet.find('CustomPrice').text # print(FullName, name, PLT, CustomPrice) # # except AttributeError: # # print("attrib err") # # except: # # print("err")