How to export list of all ledgers which is under sundry debitors from tally using xml - tally

I want to export list of all ledgers which is under sundry debitors from tally using xml.

<ENVELOPE>
<HEADER>
<VERSION>1</VERSION>
<TALLYREQUEST>Export</TALLYREQUEST>
<TYPE>Collection</TYPE>
<ID>Ledgers</ID>
</HEADER>
<BODY>
<DESC>
<STATICVARIABLES>
<SVEXPORTFORMAT>SysName:XML</SVEXPORTFORMAT>
</STATICVARIABLES>
<TDL>
<TDLMESSAGE>
<COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="Ledgers">
<TYPE>Ledger</TYPE>
<CHILDOF>$$GroupSundryDebtors</CHILDOF>
<BELONGSTO>Yes</BELONGSTO>
<NATIVEMETHOD>*/NATIVEMETHOD>
</COLLECTION>
</TDLMESSAGE>
</TDL>
</DESC>
</BODY>
</ENVELOPE>

By mentioning type as Ledger:Group we can filter ledgers based on group by mentioning groupname in childof tag
<ENVELOPE>
<HEADER>
<VERSION>1</VERSION>
<TALLYREQUEST>Export</TALLYREQUEST>
<TYPE>Collection</TYPE>
<ID>Ledgers</ID>
</HEADER>
<BODY>
<DESC>
<STATICVARIABLES>
<SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT>
<!-- * Supports only xml format -->
<SVFROMDATE TYPE="Date">{{Fromdate}}</SVFROMDATE>
<SVTODATE TYPE="Date">{{ToDate}}</SVTODATE>
</STATICVARIABLES>
<TDL>
<TDLMESSAGE>
<COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="Ledgers">
<TYPE>Ledger:Group</TYPE>
<Childof>Sundry Debtors</Childof>
<NATIVEMETHOD>Address</NATIVEMETHOD>
<!-- * will fetch all fields if you want specific fields you can specify -->
<NATIVEMETHOD>Name,Parent,*</NATIVEMETHOD>
</COLLECTION>
</TDLMESSAGE>
</TDL>
</DESC>
</BODY>
</ENVELOPE>

Related

How to export group from tally in XML format?

How to export group from tally in XML format?
<ENVELOPE>
<HEADER>
<VERSION>1</VERSION>
<TALLYREQUEST>Export</TALLYREQUEST>
<TYPE>Collection</TYPE>
<ID>Groups</ID>
</HEADER>
<BODY>
<DESC>
<STATICVARIABLES>
<SVEXPORTFORMAT>SysName:XML</SVEXPORTFORMAT>
<SVCURRENTCOMPANY>TEST COMPANY</SVCURRENTCOMPANY>
</STATICVARIABLES>
<TDL>
<TDLMESSAGE>
<COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="Ledgers">
<TYPE>Group</TYPE>
<NATIVEMETHOD>*</NATIVEMETHOD>
</COLLECTION>
</TDLMESSAGE>
</TDL>
</DESC>
</BODY>
</ENVELOPE>
I tried by using above mentioned code. But its response looks like below:
<DATA><COLLECTION ISMSTDEPTYPE="Yes" MSTDEPTYPE="4"> </COLLECTION></DATA>
Your collection Name is wrong
<ID>Groups</ID>
should match with collection Name you are sending in TDLMESSAGE else that collection should exist in Tally
Since You are creating custom collection ,It must match with collection name in TDLMESSAGE
Change From
<COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="Ledgers">
To
<COLLECTION ISMODIFY="No" ISFIXED="No" ISINITIALIZE="No" ISOPTION="No" ISINTERNAL="No" NAME="Groups">

Add unicode character to Cognos Analytics expression data

I've got a simple expression like this: ReportDate()
which will print out the timestamp when the report was executed.
I want to add an unicode character like the SUM SIGN (https://www.fileformat.info/info/unicode/char/2211/index.htm) to that data in that expression. It is not a text field, it needs to be a concatination to a data expression.
Any idea? A simple || ... (any HTML or text) doesn't work.
Version Cognos Analytics 11
Database is DB2 LUW
Edit: The expression looks like this:
case when
[Datasource].[D_FINRP_D_KONTRAHENT_K].[SL_KONTRAHENTENGRUPPE] like 'D%' then concat('D (Summe)';' ∑')
else [Datasource].[D_FINRP_D_KONTRAHENT_K].[SL_KONTRAHENTENGRUPPE]
end
The HTML in the Cognos report looks like this: D (Summe)
and then the SUM sign doesn't show up.
Provided you using a Report Expression aka a Layout calculation from the Insertable objects pane, you should be able to use the following expression:
timestamp2string (ReportDate ())+ '∑'
Rather than a Query calculation, try an HTML item using a Data item value. Your expression should look like:
[Sales (query)].[Branch].[City] + 'Σ'
Here's an example using the sample data.
<report xmlns="http://developer.cognos.com/schemas/report/14.3/" useStyleVersion="11.4" expressionLocale="en-us">
<drillBehavior/>
<layouts>
<layout>
<reportPages>
<page name="Page1">
<style>
<defaultStyles>
<defaultStyle refStyle="pg"/>
</defaultStyles>
</style>
<pageBody>
<style>
<defaultStyles>
<defaultStyle refStyle="pb"/>
</defaultStyles>
</style>
<contents>
<list horizontalPagination="true" name="List1" refQuery="Query1">
<noDataHandler>
<contents>
<block>
<contents>
<textItem>
<dataSource>
<staticValue>No Data Available</staticValue>
</dataSource>
<style>
<CSS value="padding:10px 18px;"/>
</style>
</textItem>
</contents>
</block>
</contents>
</noDataHandler>
<style>
<CSS value="border-collapse:collapse"/>
<defaultStyles>
<defaultStyle refStyle="ls"/>
</defaultStyles>
</style>
<listColumns>
<listColumn>
<listColumnTitle>
<style>
<defaultStyles>
<defaultStyle refStyle="lt"/>
</defaultStyles>
</style>
<contents>
<textItem>
<dataSource>
<staticValue>HTML item</staticValue>
</dataSource>
</textItem>
</contents>
</listColumnTitle>
<listColumnBody>
<style>
<defaultStyles>
<defaultStyle refStyle="lc"/>
</defaultStyles>
</style>
<contents>
<HTMLItem>
<dataSource>
<dataItemValue refDataItem="City"/>
</dataSource>
</HTMLItem>
</contents>
</listColumnBody>
</listColumn>
</listColumns>
</list>
</contents>
</pageBody>
</page>
</reportPages>
</layout>
</layouts>
<XMLAttributes>
<XMLAttribute output="no" name="RS_CreateExtendedDataItems" value="true"/>
<XMLAttribute output="no" name="RS_modelModificationTime" value="2015-11-25T21:38:24.820Z"/>
<XMLAttribute output="no" name="listSeparator" value=","/>
</XMLAttributes>
<modelPath>/content/folder[#name=&apos;Samples&apos;]/folder[#name=&apos;Models&apos;]/package[#name=&apos;GO sales (query)&apos;]/model[#name=&apos;model&apos;]</modelPath>
<queries>
<query name="Query1">
<source>
<model/>
</source>
<selection>
<dataItem aggregate="none" rollupAggregate="none" name="City">
<expression>[Sales (query)].[Branch].[City] + &apos;&Sigma;&apos;</expression>
<XMLAttributes>
<XMLAttribute output="no" name="RS_dataType" value="3"/>
<XMLAttribute output="no" name="RS_dataUsage" value="0"/>
</XMLAttributes>
</dataItem>
</selection>
</query>
</queries>
</report>

OBIEE 12c. Creating custom link in header with privilege in XML

<link id="l3" name="LInkName" description="Desc" src="URL" target="blank" iconSmall="common/info_ena.png" >
<locations>
<location name="header" insertBefore="home"/>
</locations>
</link>
I need to add here restriction by privilege, this link must be do not display if user have no BIServiceAdministrator role.
I checked this in Oracle help, but there just:
link: privilege
Optional
String
Specifies the name of privileges that a user must be granted to see the link. The privileges are indicated as an expression, as shown in the following example:
privileges.Access['Global Answers']&& privileges.Access['Global Delivers']
I tried to use some variants of this, but all of this don't work (without privilege - link work)
14
<link id="l2" name="LinkName" description="LinkDesc" src="URL" target="blank" iconSmall="common/info_ena.png" >
<privileges>
<privilege.Access['Global Answers']/>
</privileges>
<locations>
<location name="header" insertBefore="home"/>
</locations>
</link>
13
<link id="l2" name="LinkName" description="LinkDesc" src="URL" target="blank" iconSmall="common/info_ena.png" >
<privileges>
<privilege.Access['Global Answers']="true"/>
</privileges>
<locations>
<location name="header" insertBefore="home"/>
</locations>
</link>
12
<link id="l2" name="LinkName" description="LinkDesc" src="URL" target="blank" iconSmall="common/info_ena.png" privileges.Access['Global Answers']="true">
<locations>
<location name="header" insertBefore="home"/>
</locations>
</link>
11
<link id="l2" name="LinkName" description="LinkDesc" src="URL" target="blank" iconSmall="common/info_ena.png" >
<privilege>
<privileges.Access['Global Answers']="true"/>
</privilege>
<locations>
<location name="header" insertBefore="home"/>
</locations>
</link>
9
<link id="l2" name="LinkName" description="LinkDesc"
src="URL" target="blank" iconSmall="common/info_ena.png" privileges.isAdmin = true>
<locations>
<location name="getstarted" />
</locations>
</link>
1.) Don't repeat your link IDs. It's an ID and is supposed to be unique.
2.) The solution is
Privileges is an attribute of the link element. If you have any doubt it's always best to look into the .xsd for the xml file!
And now I have right decision:
<link id="l3" name="LinkName" description="Desc" src="URL" target="blank" iconSmall="common/info_ena.png" privilege = "privileges.Access['Global Admin']">
<locations>
<location name="header" insertBefore="home"/>
</locations>
</link>

Intuit QBO Reports API -- What's the full qzurl URL?

The documentation for the Intuit Partner Platform (IPP) QBO v3 API for reports (such as this one for a Balance Sheet) refers to very promising-looking elements called Quick-Zoom URLs (discussed near the bottom of the doc page I linked to).
When you run the report, you get an href element like this (redacted) one:
{u'href': u'ProfitAndLossDetail?token=PANDL_DET&parenttoken=PANDL&crit=accounttype%3D10..14%3Bhigh_date%3D03%2F31%2F2015%3Bnopost%3Dfalse%3Baccount%3Dmx%2C3%2C8%2C20%2C19%2C10%2C36%2C24%2C6%2C21%2C34%2C15%2C193%2C51%2C32%2C26%2C33163%2C77%2C62%2%2C86%2C107%2C60%2C79%2C166%%2C82%2C186%2C108%2C54%2C190%2C101%2C95%2C136%2C71%2C64%3Blow_date%3D01%2F01%2F2015%000740743&groupby=%28Account%2FAccountTypeID%2CAccount%2FOrderName%2CKlass%2FOrderName', u'value': u'53.90'}
What's the full URL I'd construct to actually follow the link?
EDIT: To clarify, I am already able to run the balance sheet report with the qzurl links. What I need help with is building and following the Quick Zoom URLs themselves; the things in the response that are the qzruls...how do I follow those?
You can try all QBO V3 Reports using ApiExplorer.
https://developer.intuit.com/v2/apiexplorer?apiname=V3QBO#?id=Reports
If call these APIs programmatically please feel free to use IDG provided java/C#/php SDKs.
According docs,
Sandbox Base URL to use with development keys: https://sandbox-quickbooks.api.intuit.com/v3
Production Base URL to use with production keys: https://quickbooks.api.intuit.com/v3​
Operation: GET /company/companyId/reports/BalanceSheet?name=value[&...]
Edit Adding Request URL and response [ condition : qzurl=true ]
Request URI : https://quickbooks.api.intuit.com/v3/company/1368908040/reports/BalanceSheet?qzurl=true&requestid=3434534&minorversion=1&
Response -
<?xml version="1.0" encoding="UTF-8"?>
<Report xmlns="http://schema.intuit.com/finance/v3">
<Header>
<Time>2015-05-04T14:28:14-07:00</Time>
<ReportName>BalanceSheet</ReportName>
<ReportBasis>Accrual</ReportBasis>
<StartPeriod>2015-01-01</StartPeriod>
<EndPeriod>2015-05-05</EndPeriod>
<SummarizeColumnsBy>Total</SummarizeColumnsBy>
<Currency>INR</Currency>
<Option>
<Name>AccountingStandard</Name>
<Value>IFRS</Value>
</Option>
<Option>
<Name>NoReportData</Name>
<Value>false</Value>
</Option>
</Header>
<Columns>
<Column>
<ColTitle />
<ColType>Account</ColType>
</Column>
<Column>
<ColTitle>Total</ColTitle>
<ColType>Money</ColType>
</Column>
</Columns>
<Rows>
<Row type="Section" group="TotalAssets">
<Header>
<ColData value="Assets" />
<ColData value="" />
</Header>
<Rows>
<Row type="Section" group="OtherCurrentAssets">
<Header>
<ColData value="Current Assets" />
<ColData value="" />
</Header>
<Rows>
<Row type="Data">
<ColData value="Inventory Asset" id="83" />
<ColData value="0.00" href="QZReport?token=GENERIC_QZREPORT&crit=high_date%3D05%2F05%2F2015%3Bnopost%3Dfalse%3Baccount%3Dmx%2C83%3Blow_date%3D01%2F01%2F2015&parenttoken=BAL_SHEET&cumulative=yes&groupby=%28Account%2FAccountTypeID%2CAccount%2FOrderName" />
</Row>
<Row type="Section" group="AR">
<Header>
<ColData value="Accounts receivable (Debtors)" />
<ColData value="" />
</Header>
<Rows>
<Row type="Data">
<ColData value="Accounts Receivable (Debtors)" id="86" />
<ColData value="4299.00" href="QZReport?token=GENERIC_QZREPORT&crit=high_date%3D05%2F05%2F2015%3Bnopost%3Dfalse%3Baccount%3Dmx%2C86%3Blow_date%3D01%2F01%2F2015&parenttoken=BAL_SHEET&cumulative=yes&groupby=%28Account%2FAccountTypeID%2CAccount%2FOrderName" />
</Row>
</Rows>
<Summary>
<ColData value="Total Accounts receivable (Debtors)" />
<ColData value="4299.00" href="QZReport?token=GENERIC_QZREPORT&crit=high_date%3D05%2F05%2F2015%3Bnopost%3Dfalse%3Baccount%3D86%3Blow_date%3D01%2F01%2F2015&parenttoken=BAL_SHEET&cumulative=yes&groupby=%28Account%2FAccountTypeID%2CAccount%2FOrderName" />
</Summary>
</Row>
</Rows>
<Summary>
<ColData value="Total Current Assets" />
<ColData value="4299.00" href="QZReport?token=GENERIC_QZREPORT&crit=high_date%3D05%2F05%2F2015%3Bnopost%3Dfalse%3Baccount%3D78%2C66%2C83%2C12%2C79%2C4%2C59%2C85%2C7%2C86%3Blow_date%3D01%2F01%2F2015&parenttoken=BAL_SHEET&cumulative=yes&groupby=%28Account%2FAccountTypeID%2CAccount%2FOrderName" />
</Summary>
</Row>
</Rows>
<Summary>
<ColData value="Total Assets" />
<ColData value="4299.00" href="QZReport?token=GENERIC_QZREPORT&crit=high_date%3D05%2F05%2F2015%3Bnopost%3Dfalse%3Baccount%3D78%2C66%2C83%2C12%2C79%2C4%2C59%2C85%2C7%2C86%2C5%2C6%2C8%2C10%2C11%2C13%3Blow_date%3D01%2F01%2F2015&parenttoken=BAL_SHEET&cumulative=yes&groupby=%28Account%2FAccountTypeID%2CAccount%2FOrderName" />
</Summary>
</Row>
<Row type="Section" group="TotalLiabilitiesAndEquity">
<Header>
<ColData value="Liabilities and Equity" />
<ColData value="" />
</Header>
<Rows>
<Row type="Section" group="Equity">
<Header>
<ColData value="Equity" />
<ColData value="" />
</Header>
<Rows>
<Row type="Data">
<ColData value="Opening Balance Equity" id="84" />
<ColData value="0.00" href="QZReport?token=GENERIC_QZREPORT&crit=high_date%3D05%2F05%2F2015%3Bnopost%3Dfalse%3Baccount%3Dmx%2C84%3Blow_date%3D01%2F01%2F2015&parenttoken=BAL_SHEET&cumulative=yes&groupby=%28Account%2FAccountTypeID%2CAccount%2FOrderName" />
</Row>
<Row type="Data">
<ColData value="Retained Earnings" id="2" />
<ColData value="" />
</Row>
<Row type="Data" group="NetIncome">
<ColData value="Profit for the year" />
<ColData value="4299.00" href="ProfitAndLoss?token=PANDL&parenttoken=BAL_SHEET&crit=high_date%3D05%2F05%2F2015%3Bnopost%3Dfalse%3Baccount%3D*%3Blow_date%3D01%2F01%2F2015&cumulative=yes&groupby=%28Account%2FAccountTypeID%2CAccount%2FOrderName" />
</Row>
</Rows>
<Summary>
<ColData value="Total Equity" />
<ColData value="4299.00" />
</Summary>
</Row>
</Rows>
<Summary>
<ColData value="Total Liabilities and Equity" />
<ColData value="4299.00" />
</Summary>
</Row>
</Rows>
</Report>
Edit -
Add the qzURL at then end of the following BASE URL and use OAuth tokens to call this endpoint.
For ex -
https://quickbooks.api.intuit.com/v3/company//reports/QZReport?token=GENERIC_QZREPORT&crit=high_date%3D07%2F05%2F2015%3Bnopost%3Dfalse%3Baccount%3Dmx%2C86%3Blow_date%3D01%2F01%2F2015&parenttoken=BAL_SHEET&cumulative=yes&groupby=%28Account%2FAccountTypeID%2CAccount%2FOrderName
Assume the quickzoom url will be as follows-
"QZReport?token=GENERIC_QZREPORT&crit=high_date%3D07%2F14%2F2014%3Bnopost%3Dfalse%3Baccount%3Dmx%2C41%3Blow_date%3D01%2F01%2F2014&groupby=%28Account%2FAccountTypeID%2CAccount%2FOrderName"
1.Client will first send a request to know all the customization attributes supported for a QZReport .Request will also contain all the filtering criteria or attrobutes set.From above url the request will look like this.
https://quickbooks.api.intuit.com/v3/company/1368908040/customize?report=QZReport&high_date=07/14/2014&group_by=Acccount
Response of this request will be all customization attributes available for the QZReport or transaction report .
eg:{
reportName : "TranscationList"
params:
{
start_date:"",
end_date:"2014-07-14",
date_macro:"Today,YesterDay,ThisYear......"
account:"1,2,3,4,",
.... }
}

XSLT1.0 Add child element only once if does not exist

I am trying to add an element called Stamping one time and only if it doesn't exist in the message.
<!-- Copy all other elements -->
<xsl:template match="#*|node()">
<xsl:copy>
<xsl:apply-templates select="#*|node()" />
</xsl:copy>
<xsl:template match="/*[local-name()='Envelope']/*[local-name()='Body']/*/*[not(*[local-name()='Stamping'])]">
<xsl:copy>
<xsl:apply-templates select="#*|node()" />
</xsl:copy>
<v1:Stamping>
<v2:UserData CityCode="NO Stamping" Role="User" SecurityId="55"/>
</v1:Stamping>
</xsl:template>
My problem occurs because the new v1:Stamping value is repeated for every child like this based on my existing match:
<envelope>
<body>
<operationName>
<child1 Catalog="1" />
<v1:Stamping>
<v2:UserData CityCode="NO Stamping" Role="User" SecurityId="55"/>
<v1:Stamping>
<child2 Catalog="2" />
<v1:Stamping>
<v2:UserData CityCode="NO Stamping" Role="User" SecurityId="55"/>
</v1:Stamping>
</operationName>
</body>
</envelope>
I need to see the result where stamping is only added one time as a child element of operationName. operationName is an element that will exist but this XSLT will be applied across many services and the value in operationName will be different depending on the service where this XSLT will be applied. This example below would be the needed output.
<envelope>
<body>
<operationName>
<child1 Catalog="1" />
<child2 Catalog="2" />
<v2:UserData CityCode="NO Stamping" Role="User" SecurityId="55"/>
</operationName>
</body>
</envelope>
I need to see the result where stamping is only added one time as a
child element of operationName.
Then write a template especially for operationName elements:
<xsl:template match="operationName">
and check whether v1:Stamping already exists as one of its children:
<xsl:if test="not(v1:Stamping)">
If it does not exist already, it is added to the output tree.
Assuming the following XML, where there is no v1:Stamping element, as input:
XML Input
<?xml version="1.0" encoding="UTF-8"?>
<envelope>
<body>
<operationName>
<child1 Catalog="1"/>
<child2 Catalog="2"/>
</operationName>
</body>
</envelope>
Stylesheet
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
xmlns:v1="http://www.v1.com" xmlns:v2="http://www.v2.com">
<xsl:output method="xml" encoding="UTF-8" indent="yes" />
<xsl:strip-space elements="*"/>
<xsl:template match="#*|node()">
<xsl:copy>
<xsl:apply-templates select="#*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="operationName">
<xsl:copy>
<xsl:apply-templates select="#*|node()"/>
<xsl:if test="not(v1:Stamping)">
<v1:Stamping>
<v2:UserData CityCode="NO Stamping" Role="User" SecurityId="55"/>
</v1:Stamping>
</xsl:if>
</xsl:copy>
</xsl:template>
</xsl:transform>
XML Output
<?xml version="1.0" encoding="UTF-8"?>
<envelope>
<body>
<operationName>
<child1 Catalog="1"/>
<child2 Catalog="2"/>
<v1:Stamping xmlns:v1="http://www.v1.com" xmlns:v2="http://www.v2.com">
<v2:UserData CityCode="NO Stamping" Role="User" SecurityId="55"/>
</v1:Stamping>
</operationName>
</body>
</envelope>