如何解决如何通过主 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("&","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
使用 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 举报,一经查实,本站将立刻删除。