【问题标题】:how to add multiple line items <SalesReceiptLineAdd> dynamically while adding sales receipt using qbxml with php?如何在使用 qbxml 和 php 添加销售收据时动态添加多个行项目 <SalesReceiptLineAdd>?
【发布时间】:2019-11-15 14:13:30
【问题描述】:

我有自己的软件,想将数据库中的销售收据添加到 Quickbooks pro 2020。因此,我的销售收据中包含多个订单项。如何在返回 xml 请求时使用 PHP 在 qbXML 中传递更多行项目?

这是我的代码。我正在使用 Keith Palmer 的框架..

在此我为多个项目静态添加了 SalesReceiptLineAdd。但是如何动态创建呢?即如何多次循环 SalesReceiptLineAdd 标记?

function _quickbooks_salesreceipt_add_request($requestID, $user, $action, $ID, $extra, &$err, $last_action_time, $last_actionident_time, $version, $locale)
{
    /*
        <CustomerRef>
            <ListID>80003579-1231522938</ListID>
        </CustomerRef>  
    */

    $xml = '<?xml version="1.0" encoding="utf-8"?>
        <?qbxml version="7.0"?>
        <QBXML>
            <QBXMLMsgsRq onError="stopOnError">
                <SalesReceiptAddRq requestID="' . $requestID . '">
                    <SalesReceiptAdd>
                        <CustomerRef>
                            <ListID>80000020-1573225608</ListID>
                        </CustomerRef>
                        <TxnDate>2019-11-14</TxnDate>
                        <RefNumber>34</RefNumber>
                        <BillAddress>
                            <Addr1>Keith Palmer Jr.</Addr1>
                            <Addr3>134 Stonemill Road</Addr3>
                            <City>Storrs-Mansfield</City>
                            <State>CT</State>
                            <PostalCode>06268</PostalCode>
                            <Country>United States</Country>
                        </BillAddress>
                        <SalesReceiptLineAdd>
                            <ItemRef>
                                <ListID>80000030-1573662395</ListID>
                            </ItemRef>
                            <Desc>$25.00 gift certificate</Desc>
                            <Quantity>1</Quantity>
                            <Rate>25.00</Rate>
                            <SalesTaxCodeRef>
                                <FullName>tax</FullName>
                            </SalesTaxCodeRef>
                        </SalesReceiptLineAdd>
                        <SalesReceiptLineAdd>
                            <ItemRef>
                                <ListID>80000031-1573810312</ListID>
                            </ItemRef>
                            <Desc>The Hitchhiker\'s Guide to the Galaxy</Desc>
                            <Quantity>1</Quantity>
                            <Rate>25.00</Rate>
                            <SalesTaxCodeRef>
                                <FullName>tax</FullName>
                            </SalesTaxCodeRef>
                        </SalesReceiptLineAdd>
                    </SalesReceiptAdd>
                </SalesReceiptAddRq>
            </QBXMLMsgsRq>
        </QBXML>';

    return $xml;


}

【问题讨论】:

    标签: php sdk quickbooks qbxml


    【解决方案1】:

    您可以使用标准字符串连接和for 循环来执行此操作。

    例如,这样的事情会重复该订单项 5 次(共 5 行):

    function _quickbooks_salesreceipt_add_request($requestID, $user, $action, $ID, $extra, &$err, $last_action_time, $last_actionident_time, $version, $locale)
    {
        /*
            <CustomerRef>
                <ListID>80003579-1231522938</ListID>
            </CustomerRef>  
        */
    
        $xml = '<?xml version="1.0" encoding="utf-8"?>
            <?qbxml version="7.0"?>
            <QBXML>
                <QBXMLMsgsRq onError="stopOnError">
                    <SalesReceiptAddRq requestID="' . $requestID . '">
                        <SalesReceiptAdd>
                            <CustomerRef>
                                <ListID>80000020-1573225608</ListID>
                            </CustomerRef>
                            <TxnDate>2019-11-14</TxnDate>
                            <RefNumber>34</RefNumber>
                            <BillAddress>
                                <Addr1>Keith Palmer Jr.</Addr1>
                                <Addr3>134 Stonemill Road</Addr3>
                                <City>Storrs-Mansfield</City>
                                <State>CT</State>
                                <PostalCode>06268</PostalCode>
                                <Country>United States</Country>
                            </BillAddress>';
                
        for ($i = 0; $i <= 5; $i++)
        {
            $xml .= '
              <SalesReceiptLineAdd>
                                <ItemRef>
                                    <ListID>80000031-1573810312</ListID>
                                </ItemRef>
                                <Desc>The Hitchhiker\'s Guide to the Galaxy</Desc>
                                <Quantity>1</Quantity>
                                <Rate>25.00</Rate>
                                <SalesTaxCodeRef>
                                    <FullName>tax</FullName>
                                </SalesTaxCodeRef>
                            </SalesReceiptLineAdd>';
        }
                            
        $xml .= '
                        </SalesReceiptAdd>
                    </SalesReceiptAddRq>
                </QBXMLMsgsRq>
            </QBXML>';
    
        return $xml;
    
    
    }

    我还建议您参考有关这些基本主题的 PHP 文档:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多