0

我必须使用 php 代码从理货服务器的特定表列表中获取产品项目列表。所以在我的理货服务器中,我的库存主数据中有几个表,如库存项目、库存组、库存类别。在我的库存项目表中列表中有大约 3000 多个项目以及产品详细信息,为此我还使用 curl 方法获得了 php 代码,但该列表不是来自库存项目表,而是来自其他地方。请帮助我如何实现这一点.

<?php

$res_str =<<<XML
 <ENVELOPE>
 <HEADER>
 <TALLYREQUEST>Export Data</TALLYREQUEST>
 </HEADER>
 <BODY>
 <EXPORTDATA>
 <REQUESTDESC>
 <REPORTNAME>stock category summary</REPORTNAME>
 </REQUESTDESC>
 </EXPORTDATA>
 </BODY>
 </ENVELOPE>
XML;


$url = "http://localhost:9000/";

        //setting the curl parameters.
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
// Following line is compulsary to add as it is:
        curl_setopt($ch, CURLOPT_POSTFIELDS,
                    "xmlRequest=" . $res_str);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300);
        $data = curl_exec($ch);
        //echo '<pre>';
        //var_dump($data);die;

        curl_close($ch);
        // get the xml object 
    $object = simplexml_load_string( $data );
    
    echo "<pre>";
    print_r($object);die;
    
?>
4

1 回答 1

0

首先,一次从 Tally 获取所有项目不是一个好习惯,除非你有超快的服务器,因为它会减慢甚至关闭 Tally

首先获取您想要的对象的ID列表并遍历列表并逐个获取对象

您可以使用下面的 xml 来获取库存项目列表 - MasterID 和 GUID

如果您想要一次所有数据,只需添加<NATIVEMETHOD>*</NATIVEMETHOD>

如果您希望 StockCategory 和 StockGroup 相应地更改类型

例如:对于 StockCategory -<TYPE>StockCategory</TYPE>

<ENVELOPE>
<HEADER>
    <VERSION>1</VERSION>
    <TALLYREQUEST>Export</TALLYREQUEST>
    <TYPE>Collection</TYPE>
    <ID>Custom List of StockItems</ID>
</HEADER>
<BODY>
    <DESC>
        <STATICVARIABLES />
        <TDL>
            <TDLMESSAGE>
                <COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="Yes" ISOPTION="No" ISINTERNAL="No" NAME="Custom List of StockItems">
                    <TYPE>StockItem</TYPE>
                    <NATIVEMETHOD>MasterID</NATIVEMETHOD>
                    <NATIVEMETHOD>GUID</NATIVEMETHOD>
                </COLLECTION>
            </TDLMESSAGE>
        </TDL>
    </DESC>
</BODY>

要通过 MasterID 获取 StockItem 或任何 master - 使用下面的 xml,

如果您想通过 GUID 获取,您可以相应地更改过滤器

<ENVELOPE>
<HEADER>
    <VERSION>1</VERSION>
    <TALLYREQUEST>Export</TALLYREQUEST>
    <TYPE>Collection</TYPE>
    <ID>CustColl</ID>
</HEADER>
<BODY>
    <DESC>
        <STATICVARIABLES>
             <!-- * Static variables like scfrom,svto,svexport format will not work -->
         
        </STATICVARIABLES>
        <TDL>
            <TDLMESSAGE>
                <COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="CustColl">
                    <TYPE>masters</TYPE>
                    <!-- * will fetch all fields if you want specific fields you can specify -->
                    <NATIVEMETHOD>*</NATIVEMETHOD>
                    <FILTERS>filter</FILTERS>
                </COLLECTION>
                 <!-- You can  change filter to other than name also -->
                <!--to get any Master based on name  replace $Masterid with $Name  -->
                <!--Replace 1122 with Masterid you want to search -->
                <SYSTEM TYPE="Formulae" NAME="filter">$Masterid=1122</SYSTEM>
            </TDLMESSAGE>
        </TDL>
    </DESC>
</BODY>
于 2021-12-14T13:20:58.273 回答