微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过主 ID 获取库存商品

如何解决如何通过主 ID 获取库存商品

url1 = "http://localhost:9000" xmlBody = "1EXPORTCOLLECTIONStockItems" xmlBody += "$$SysName:XML" xmlBody += "StockItemmaster ID" req = requests.post(url = url1,data=xmlBody.encode('utf-8')) res = req.text.strip().replace("&","and") ScrubbedXML = re.sub('&.+[0-9]+;','',res) 打印(scrubbedXML) 响应 = Et.fromstring(res) url='https://dev1.mo.vc' db='实习生5' 用户名='samiullah@xmedia.in' 密码='samiullah' common = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(url)) uid = common.authenticate(db,用户名,密码,{}) 模型 = xmlrpc.client.ServerProxy('{}/xmlrpc/2/object'.format(url)) 对于 response.findall('./BODY/DATA/COLLECTION/STOCKITEM') 中的数据: namei=dat.get('NAME') 打印(名称) number=dat.find('MASTERID').text 打印(编号) 打印(“名称:”) 打印(名称) 有效载荷=""" 1 出口 目的 库存项目 """ +namei+ """ 我需要通过主 ID 检索库存项目(搜索

    </HEADER>
    <BODY>
    <DESC>
    <STATICVARIABLES>
    <sveXPORTFORMAT>$$SysName:XML</sveXPORTFORMAT>
    </STATICVARIABLES>
    <FETCHLIST>
    <FETCH>openingValue</FETCH>
    <FETCH>openingRate</FETCH>
    <FETCH>openingBalance</FETCH>
    <FETCH>ClosingBalance</FETCH> 
    <FETCH>ClosingRate</FETCH> 
    <FETCH>Parent</FETCH>
    <FETCH>STANDARDPRICELIST.RATE</FETCH>
    </FETCHLIST>
    <TDL>
    <TDLMESSAGE>
    <OBJECT ID="stock item name" ISINITIALIZE="Yes">
    </OBJECT>
    </TDLMESSAGE>
    </TDL>  
    </DESC>
    </BODY>
    </ENVELOPE>"""  
    request=requests.post(url = url1,data=payload.encode('utf-8'))
    response = request.text.strip().replace("&amp;","and")
    scrubbedXML = re.sub('&.+[0-9]+;',response)
    # print(scrubbedXML)
    try:
        respRoot = Et.fromstring(scrubbedXML)

    except:
        pass

    for data in respRoot.findall('./BODY/DATA/TALLYMESSAGE/STOCKITEM'):
        try:
            name=data.get('NAME')
            # print(name)
        except UnicodeEncodeError:
            name='naa'
            pass
        try:
            closing_ba= data.find('CLOSINGBALANCE').text
            closing_bal=(re.findall(r'-?\d+\.?\d*',closing_ba))
            for s in closing_bal:
                closing_balance=float(s)
                # print(closing_balance)
        except:
            closing_balance=0
            pass

        parent=data.find('PARENT').text
        # print(parent)
        try:
            openbal=data.find('openingBALANCE').text
            open_bal=(re.findall(r'-?\d+\.?\d*',openbal))
            for s_o in open_bal:
                opening_balance=float(s_o)
                # print(opening_balance)
        except:
            opening_balance=0
            pass
        try:
            openrate=data.find('openingRATE').text
            open_rat=(re.findall(r'-?\d+\.?\d*',openrate))
            for s_or in open_rat:
                opening_rate=float(s_or)

解决方法

您可以使用下面的xml通过masterID获取库存项目

<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>

您可以获取所有 xml 以与 Tally 通信 here

我想把所有的 xmls 放在一个地方

改进:

如果您使用的是 c#/VB

您可以使用TallyConnector Library

使用 Tally Connector API,您可以在 4 行代码中获取 StockItem

Using TallyConnector //Importing TallyConnector Library
Using TallyConnector.Models

public Tally Ctally = new Tally(); 
StockItem Item = await Ctally.GetStockItem(ItemName);

如果您使用的是 Python

您可以refer this guide了解如何在python中使用TallyConnector Library

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。