验证从登台表集成到理货单中的凭证

时间:2019-06-03 01:23:02

标签: integration tally

如果我在SQL Server数据库登台表中有5张凭单,并且我使用tally XML API将所有5张凭单导入了tally。

如何仅使用凭证编号来验证和交叉检查理货和SQL之间的凭证?

我是否必须从理货中读取整个凭证摘要,然后从XML数据中提取凭证编号?提取凭证编号后,我可以将其与登台表进行比较。

我如何只从凭证中导出一份凭证号或一个特定字段?

2 个答案:

答案 0 :(得分:1)

导入Tally后,您知道凭证编号吗?根据答案,我将更新答案。

案例1::如果您确实知道凭证编号,则可以使用Tally XML来请求该特定凭证编号,并且如果得到肯定的响应,则该凭证存在于计数中。无需阅读凭证摘要。您只需要在XML响应中查找特定的元素标签-如果该元素存在=凭证存在。

情况2:,但是我认为您不知道导入期间创建的凭证编号。在这种情况下。会比较棘手。让我知道,我将提供我所拥有的解决方案。

-更新-

讨论(请参阅评论)之后,我将根据案例1更新答案。 XML请求结构-

<ENVELOPE>
  <HEADER>
    <VERSION>1</VERSION>
    <TALLYREQUEST>EXPORT</TALLYREQUEST>
    <TYPE>COLLECTION</TYPE>
    <ID>FindParticularVoucher</ID>
  </HEADER>
  <BODY>
    <DESC>
      <STATICVARIABLES>
        <SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT>
        <SVCURRENTCOMPANY>FOO COMPANY</SVCURRENTCOMPANY>
        <VCHNO>ABC1234</VCHNO>
      </STATICVARIABLES>
      <TDL>
        <TDLMESSAGE>
          <COLLECTION NAME="FindParticularVoucher" ISINITIALIZE="YES">
            <TYPE>Voucher</TYPE>
            <FILTER>GetInvoiceVoucher</FILTER>
          </COLLECTION>
          <VARIABLE NAME="VCHNO">
            <TYPE>String</TYPE>
          </VARIABLE>
          <SYSTEM TYPE="FORMULAE" NAME="GetInvoiceVoucher">$VoucherNumber = $$String:##VCHNO</SYSTEM>
        </TDLMESSAGE>
      </TDL>
    </DESC>
  </BODY>
</ENVELOPE>

请记住在 SVCURRENTCOMPANY VCHNO Xml标签中更改公司名称和凭证编号。

您可能会得到一个复杂的XML响应。您需要做的就是在“集合节点”中查找名为“凭证”的XML节点-信封/正文/数据/集合/凭证。如果此VoucherNode存在=您的凭证存在于理货中。在这种情况下,您无需导出任何数据或凭证编号。

答案 1 :(得分:0)

在Tally中使用XML创建凭证时,成功创建时将得到XML响应。该响应具有一个标签,其中包括您所提供的凭单编号以及LASTVCHID的标签。这就像提示中的主ID。然后,仅请求该主ID并检查响应就更容易了。如果找不到该主ID,则会产生错误(最重要的是,该错误只是一行XML响应,因此不需要解析)。

查看此stackoverflow链接以了解更多详细信息-how to filter tally xml response based on voucher number?