如何在使用带有 php 的 qbxml 添加销售收据时动态添加多个行项目 <SalesReceiptLineAdd>?
how to add multiple line items <SalesReceiptLineAdd> dynamically while adding sales receipt using qbxml with php?
我有自己的软件,想将我数据库中的销售收据添加到 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>.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;
}
您可以使用标准字符串连接和 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 文档:
我有自己的软件,想将我数据库中的销售收据添加到 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>.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;
}
您可以使用标准字符串连接和 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 文档: