【问题标题】:How to get column names in a Sales Order from Quickbooks using QBXML如何使用 QBXML 从 Quickbooks 获取销售订单中的列名
【发布时间】:2023-12-26 10:18:02
【问题描述】:

我是 QuickbooksWeb Connector 的新手,我在 Quickbooks 中使用 PHP SDK

我知道如何使用 QBXML request 从 Quickbooks 中获取 Sales Orders

但我想从 Quickbooks 获取销售订单中的列名

有什么方法或有任何QBXML request 可以让我从销售订单中获取这些列名吗?

谢谢

【问题讨论】:

    标签: quickbooks qbxml


    【解决方案1】:

    大多数版本的 QuickBooks 根本不是基于 SQL 的。此外,没有允许您直接访问 SQL 表的 QuickBooks 版本。

    相反,所有 QuickBooks API 都是基于 XML 的 API。

    XML 没有“列”。

    太好了……你的问题:

    但我想从 Quickbooks 获取销售订单中的列名。

    真的没有任何意义/无法回答。

    QuickBooks 没有列。销售订单没有列

    如果您只是想找出可用的数据,您应该使用QuickBooks OSR documentation

    这是一个关于如何使用它的QuickBooks integration wiki 链接。

    以下是可用的 XML 字段:

    <SalesOrderRet> <!-- optional, may repeat -->
     <TxnID >IDTYPE</TxnID> <!-- required -->
     <TimeCreated >DATETIMETYPE</TimeCreated> <!-- required -->
     <TimeModified >DATETIMETYPE</TimeModified> <!-- required -->
     <EditSequence >STRTYPE</EditSequence> <!-- required -->
     <TxnNumber >INTTYPE</TxnNumber> <!-- optional -->
     <CustomerRef> <!-- required -->
      <ListID >IDTYPE</ListID> <!-- optional -->
      <FullName >STRTYPE</FullName> <!-- optional -->
     </CustomerRef>
     <ClassRef> <!-- optional -->
      <ListID >IDTYPE</ListID> <!-- optional -->
      <FullName >STRTYPE</FullName> <!-- optional -->
     </ClassRef>
     <TemplateRef> <!-- optional -->
      <ListID >IDTYPE</ListID> <!-- optional -->
      <FullName >STRTYPE</FullName> <!-- optional -->
     </TemplateRef>
     <TxnDate >DATETYPE</TxnDate> <!-- required -->
     <RefNumber >STRTYPE</RefNumber> <!-- optional -->
     <BillAddress> <!-- optional -->
      <Addr1 >STRTYPE</Addr1> <!-- optional -->
      <Addr2 >STRTYPE</Addr2> <!-- optional -->
      <Addr3 >STRTYPE</Addr3> <!-- optional -->
      <Addr4 >STRTYPE</Addr4> <!-- optional -->
      <Addr5 >STRTYPE</Addr5> <!-- optional -->
      <City >STRTYPE</City> <!-- optional -->
      <State >STRTYPE</State> <!-- optional -->
      <PostalCode >STRTYPE</PostalCode> <!-- optional -->
      <Country >STRTYPE</Country> <!-- optional -->
      <Note >STRTYPE</Note> <!-- optional -->
     </BillAddress>
     <BillAddressBlock> <!-- optional -->
      <Addr1 >STRTYPE</Addr1> <!-- optional -->
      <Addr2 >STRTYPE</Addr2> <!-- optional -->
      <Addr3 >STRTYPE</Addr3> <!-- optional -->
      <Addr4 >STRTYPE</Addr4> <!-- optional -->
      <Addr5 >STRTYPE</Addr5> <!-- optional -->
     </BillAddressBlock>
     <ShipAddress> <!-- optional -->
      <Addr1 >STRTYPE</Addr1> <!-- optional -->
      <Addr2 >STRTYPE</Addr2> <!-- optional -->
      <Addr3 >STRTYPE</Addr3> <!-- optional -->
      <Addr4 >STRTYPE</Addr4> <!-- optional -->
      <Addr5 >STRTYPE</Addr5> <!-- optional -->
      <City >STRTYPE</City> <!-- optional -->
      <State >STRTYPE</State> <!-- optional -->
      <PostalCode >STRTYPE</PostalCode> <!-- optional -->
      <Country >STRTYPE</Country> <!-- optional -->
      <Note >STRTYPE</Note> <!-- optional -->
     </ShipAddress>
     <ShipAddressBlock> <!-- optional -->
      <Addr1 >STRTYPE</Addr1> <!-- optional -->
      <Addr2 >STRTYPE</Addr2> <!-- optional -->
      <Addr3 >STRTYPE</Addr3> <!-- optional -->
      <Addr4 >STRTYPE</Addr4> <!-- optional -->
      <Addr5 >STRTYPE</Addr5> <!-- optional -->
     </ShipAddressBlock>
     <PONumber >STRTYPE</PONumber> <!-- optional -->
     <TermsRef> <!-- optional -->
      <ListID >IDTYPE</ListID> <!-- optional -->
      <FullName >STRTYPE</FullName> <!-- optional -->
     </TermsRef>
     <DueDate >DATETYPE</DueDate> <!-- optional -->
     <SalesRepRef> <!-- optional -->
      <ListID >IDTYPE</ListID> <!-- optional -->
      <FullName >STRTYPE</FullName> <!-- optional -->
     </SalesRepRef>
     <FOB >STRTYPE</FOB> <!-- optional -->
     <ShipDate >DATETYPE</ShipDate> <!-- optional -->
     <ShipMethodRef> <!-- optional -->
      <ListID >IDTYPE</ListID> <!-- optional -->
      <FullName >STRTYPE</FullName> <!-- optional -->
     </ShipMethodRef>
     <Subtotal >AMTTYPE</Subtotal> <!-- optional -->
     <ItemSalesTaxRef> <!-- optional -->
      <ListID >IDTYPE</ListID> <!-- optional -->
      <FullName >STRTYPE</FullName> <!-- optional -->
     </ItemSalesTaxRef>
     <SalesTaxPercentage >PERCENTTYPE</SalesTaxPercentage> <!-- optional -->
     <SalesTaxTotal >AMTTYPE</SalesTaxTotal> <!-- optional -->
     <TotalAmount >AMTTYPE</TotalAmount> <!-- optional -->
    <CurrencyRef> <!-- optional -->
    <ListID >IDTYPE</ListID> <!-- optional -->
    <FullName >STRTYPE</FullName> <!-- optional -->
    </CurrencyRef>
    <ExchangeRate >FLOATTYPE</ExchangeRate> <!-- optional -->
    <TotalAmountInHomeCurrency >AMTTYPE</TotalAmountInHomeCurrency> <!-- optional -->
    <IsManuallyClosed >BOOLTYPE</IsManuallyClosed> <!-- optional -->
    <IsFullyInvoiced >BOOLTYPE</IsFullyInvoiced> <!-- optional -->
    <Memo >STRTYPE</Memo> <!-- optional -->
    <CustomerMsgRef> <!-- optional -->
    <ListID >IDTYPE</ListID> <!-- optional -->
    <FullName >STRTYPE</FullName> <!-- optional -->
    </CustomerMsgRef>
    <IsToBePrinted >BOOLTYPE</IsToBePrinted> <!-- optional -->
    <IsToBeEmailed >BOOLTYPE</IsToBeEmailed> <!-- optional -->
    <CustomerSalesTaxCodeRef> <!-- optional -->
    <ListID >IDTYPE</ListID> <!-- optional -->
    <FullName >STRTYPE</FullName> <!-- optional -->
    </CustomerSalesTaxCodeRef>
    <Other >STRTYPE</Other> <!-- optional -->
    <ExternalGUID >GUIDTYPE</ExternalGUID> <!-- optional -->
    <LinkedTxn> <!-- optional, may repeat -->
    <TxnID >IDTYPE</TxnID> <!-- required -->
    <!-- TxnType may have one of the following values: ARRefundCreditCard, Bill, BillPaymentCheck, BillPaymentCreditCard, BuildAssembly, Charge, Check, CreditCardCharge, CreditCardCredit, CreditMemo, Deposit, Estimate, InventoryAdjustment, Invoice, ItemReceipt, JournalEntry, LiabilityAdjustment, Paycheck, PayrollLiabilityCheck, PurchaseOrder, ReceivePayment, SalesOrder, SalesReceipt, SalesTaxPaymentCheck, Transfer, VendorCredit, YTDAdjustment -->
    <TxnType >ENUMTYPE</TxnType> <!-- required -->
    <TxnDate >DATETYPE</TxnDate> <!-- required -->
    <RefNumber >STRTYPE</RefNumber> <!-- optional -->
    <!-- LinkType may have one of the following values: AMTTYPE, QUANTYPE -->
    <LinkType >ENUMTYPE</LinkType> <!-- optional -->
    <Amount >AMTTYPE</Amount> <!-- required -->
    </LinkedTxn>
    <!-- BEGIN OR -->
    <SalesOrderLineRet> <!-- optional -->
    <TxnLineID >IDTYPE</TxnLineID> <!-- required -->
    <ItemRef> <!-- optional -->
    <ListID >IDTYPE</ListID> <!-- optional -->
    <FullName >STRTYPE</FullName> <!-- optional -->
    </ItemRef>
    <Desc >STRTYPE</Desc> <!-- optional -->
    <Quantity >QUANTYPE</Quantity> <!-- optional -->
    <UnitOfMeasure >STRTYPE</UnitOfMeasure> <!-- optional -->
    <OverrideUOMSetRef> <!-- optional -->
    <ListID >IDTYPE</ListID> <!-- optional -->
    <FullName >STRTYPE</FullName> <!-- optional -->
    </OverrideUOMSetRef>
    <!-- BEGIN OR -->
    <Rate >PRICETYPE</Rate> <!-- optional -->
    <!-- OR -->
    <RatePercent >PERCENTTYPE</RatePercent> <!-- optional -->
    <!-- END OR -->
    <ClassRef> <!-- optional -->
    <ListID >IDTYPE</ListID> <!-- optional -->
    <FullName >STRTYPE</FullName> <!-- optional -->
    </ClassRef>
    <Amount >AMTTYPE</Amount> <!-- optional -->
    <InventorySiteRef> <!-- optional -->
    <ListID >IDTYPE</ListID> <!-- optional -->
    <FullName >STRTYPE</FullName> <!-- optional -->
    </InventorySiteRef>
    <InventorySiteLocationRef> <!-- optional -->
    <ListID >IDTYPE</ListID> <!-- optional -->
    <FullName >STRTYPE</FullName> <!-- optional -->
    </InventorySiteLocationRef>
    <!-- BEGIN OR -->
    <SerialNumber >STRTYPE</SerialNumber> <!-- optional -->
    <!-- OR -->
    <LotNumber >STRTYPE</LotNumber> <!-- optional -->
    <!-- END OR -->
    <SalesTaxCodeRef> <!-- optional -->
    <ListID >IDTYPE</ListID> <!-- optional -->
    <FullName >STRTYPE</FullName> <!-- optional -->
    </SalesTaxCodeRef>
    <Invoiced >QUANTYPE</Invoiced> <!-- optional -->
    <IsManuallyClosed >BOOLTYPE</IsManuallyClosed> <!-- optional -->
    <Other1 >STRTYPE</Other1> <!-- optional -->
    <Other2 >STRTYPE</Other2> <!-- optional -->
    <DataExtRet> <!-- optional, may repeat -->
    <OwnerID >GUIDTYPE</OwnerID> <!-- optional -->
    <DataExtName >STRTYPE</DataExtName> <!-- required -->
    <!-- DataExtType may have one of the following values: AMTTYPE, DATETIMETYPE, INTTYPE, PERCENTTYPE, PRICETYPE, QUANTYPE, STR1024TYPE, STR255TYPE -->
    <DataExtType >ENUMTYPE</DataExtType> <!-- required -->
    <DataExtValue >STRTYPE</DataExtValue> <!-- required -->
    </DataExtRet>
    </SalesOrderLineRet>
    <!-- OR -->
    <SalesOrderLineGroupRet> <!-- optional -->
    <TxnLineID >IDTYPE</TxnLineID> <!-- required -->
    <ItemGroupRef> <!-- required -->
    <ListID >IDTYPE</ListID> <!-- optional -->
    <FullName >STRTYPE</FullName> <!-- optional -->
    </ItemGroupRef>
    <Desc >STRTYPE</Desc> <!-- optional -->
    <Quantity >QUANTYPE</Quantity> <!-- optional -->
    <UnitOfMeasure >STRTYPE</UnitOfMeasure> <!-- optional -->
    <OverrideUOMSetRef> <!-- optional -->
    <ListID >IDTYPE</ListID> <!-- optional -->
    <FullName >STRTYPE</FullName> <!-- optional -->
    </OverrideUOMSetRef>
    <IsPrintItemsInGroup >BOOLTYPE</IsPrintItemsInGroup> <!-- required -->
    <TotalAmount >AMTTYPE</TotalAmount> <!-- required -->
    <SalesOrderLineRet> <!-- optional, may repeat -->
    <TxnLineID >IDTYPE</TxnLineID> <!-- required -->
    <ItemRef> <!-- optional -->
    <ListID >IDTYPE</ListID> <!-- optional -->
    <FullName >STRTYPE</FullName> <!-- optional -->
    </ItemRef>
    <Desc >STRTYPE</Desc> <!-- optional -->
    <Quantity >QUANTYPE</Quantity> <!-- optional -->
    <UnitOfMeasure >STRTYPE</UnitOfMeasure> <!-- optional -->
    <OverrideUOMSetRef> <!-- optional -->
    <ListID >IDTYPE</ListID> <!-- optional -->
    <FullName >STRTYPE</FullName> <!-- optional -->
    </OverrideUOMSetRef>
    <!-- BEGIN OR -->
    <Rate >PRICETYPE</Rate> <!-- optional -->
    <!-- OR -->
    <RatePercent >PERCENTTYPE</RatePercent> <!-- optional -->
    <!-- END OR -->
    <ClassRef> <!-- optional -->
    <ListID >IDTYPE</ListID> <!-- optional -->
    <FullName >STRTYPE</FullName> <!-- optional -->
    </ClassRef>
    <Amount >AMTTYPE</Amount> <!-- optional -->
    <InventorySiteRef> <!-- optional -->
    <ListID >IDTYPE</ListID> <!-- optional -->
    <FullName >STRTYPE</FullName> <!-- optional -->
    </InventorySiteRef>
    <InventorySiteLocationRef> <!-- optional -->
    <ListID >IDTYPE</ListID> <!-- optional -->
    <FullName >STRTYPE</FullName> <!-- optional -->
    </InventorySiteLocationRef>
    <!-- BEGIN OR -->
    <SerialNumber >STRTYPE</SerialNumber> <!-- optional -->
    <!-- OR -->
    <LotNumber >STRTYPE</LotNumber> <!-- optional -->
    <!-- END OR -->
    <SalesTaxCodeRef> <!-- optional -->
    <ListID >IDTYPE</ListID> <!-- optional -->
    <FullName >STRTYPE</FullName> <!-- optional -->
    </SalesTaxCodeRef>
    <Invoiced >QUANTYPE</Invoiced> <!-- optional -->
    <IsManuallyClosed >BOOLTYPE</IsManuallyClosed> <!-- optional -->
    <Other1 >STRTYPE</Other1> <!-- optional -->
    <Other2 >STRTYPE</Other2> <!-- optional -->
    <DataExtRet> <!-- optional, may repeat -->
    <OwnerID >GUIDTYPE</OwnerID> <!-- optional -->
    <DataExtName >STRTYPE</DataExtName> <!-- required -->
    <!-- DataExtType may have one of the following values: AMTTYPE, DATETIMETYPE, INTTYPE, PERCENTTYPE, PRICETYPE, QUANTYPE, STR1024TYPE, STR255TYPE -->
    <DataExtType >ENUMTYPE</DataExtType> <!-- required -->
    <DataExtValue >STRTYPE</DataExtValue> <!-- required -->
    </DataExtRet>
    </SalesOrderLineRet>
    <DataExtRet> <!-- optional, may repeat -->
    <OwnerID >GUIDTYPE</OwnerID> <!-- optional -->
    <DataExtName >STRTYPE</DataExtName> <!-- required -->
    <!-- DataExtType may have one of the following values: AMTTYPE, DATETIMETYPE, INTTYPE, PERCENTTYPE, PRICETYPE, QUANTYPE, STR1024TYPE, STR255TYPE -->
    <DataExtType >ENUMTYPE</DataExtType> <!-- required -->
    <DataExtValue >STRTYPE</DataExtValue> <!-- required -->
    </DataExtRet>
    </SalesOrderLineGroupRet>
    <!-- END OR -->
    <DataExtRet> <!-- optional, may repeat -->
    <OwnerID >GUIDTYPE</OwnerID> <!-- optional -->
    <DataExtName >STRTYPE</DataExtName> <!-- required -->
    <!-- DataExtType may have one of the following values: AMTTYPE, DATETIMETYPE, INTTYPE, PERCENTTYPE, PRICETYPE, QUANTYPE, STR1024TYPE, STR255TYPE -->
    <DataExtType >ENUMTYPE</DataExtType> <!-- required -->
    <DataExtValue >STRTYPE</DataExtValue> <!-- required -->
    </DataExtRet>
    </SalesOrderRet>
    

    【讨论】:

    • 嗯...说销售订单列我的意思是我们在 Quickbooks 软件中看到的列名称,如项目、商店、价格等。我也想要这些名称,因为销售订单使用一些模板,这样模板可能有一些自定义字段,所以无法获取?
    • @Pratik 无法从模板中获取标签,否。
    • @Pratik 还值得注意的是,自定义字段与模板中的标签完全分开。自定义字段名称将在 DataExt 元素中返回。不会返回模板标签。
    【解决方案2】:

    我最近遇到了QODBCOpenSync。两者都将 QB 数据模型转换为 SQL 表/列模型。

    QODBC 通过实现 ODBC 驱动程序并将您的查询实时转换为 QB API 调用来工作。它还具有缓存功能,以加快查询速度。我了解驱动程序的某些变体可以在 Linux 下运行。该驱动程序有两种主要形式:一个允许您连接到本地 QB 实例并对其进行查询的本地驱动程序,以及一个用于查询托管在其他地方的 QB 数据库的远程服务器/驱动程序(对于 64 位开发,建议使用远程驱动程序,即使您将其循环回同一系统)。它的只读版本包含在 QB Enterprise 中。有关How to use QODBC with PHP 的更多信息。

    OpenSync 以一种更不连贯的方式工作:您将 QB 数据库的副本复制到您首选的数据库引擎/服务器中,因此您可以立即查询数据,并通过在副本中设置控制字段来提交更改重新运行同步。虽然您无法查询实时数据,但它非常易于使用和入门(包括获取数据定义,了解反映 XML 的数据结构)。该公司还有其他产品可以帮助您处理 QB API。

    两者都有评估版,您也可以下载OpenSync sample Access MDB

    【讨论】:

      【解决方案3】:

      我想你可能想看看https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services 你需要一个 Intuit 登录(免费),但这实际上似乎是我能找到的最接近他们表上真实列的东西。 向下滚动到交易实体和名单实体和支持实体。

      【讨论】:

        最近更新 更多