Are you looking for finding out ways to connect your application with Tally database. Well if so then this is the right page which will introduce you to Tally's Web Service Architecture which is the best way to integrate Tally with outside technology.
Alternate link
The following is a working java code which sends a payment voucher to Tally database through SOAP request into the Web Service Architecture of Tally and fetches a response from Tally indicating the action taken by Tally for the request in XML format.
Check it out.
1: Go to "Gateway of Tally >> F12 Configure >> Advanced Configuration" settings (Some initial settings needed to be done inside Tally)
2: Request by the Java application code
package tallyrequest;
import java.io.*;
import java.net.*;
/**
*
* @author SUNEET
*/
public class TallyRequest{
public String CreateRequest()
{
String TXML = null;
TXML = "<ENVELOPE>"
+ "<HEADER><TALLYREQUEST>Import Data</TALLYREQUEST></HEADER>"
+ "<BODY>"
+ "<IMPORTDATA>"
+ "<REQUESTDESC><REPORTNAME>Vouchers</REPORTNAME><STATICVARIABLES><SVCURRENTCOMPANY>Company</SVCURRENTCOMPANY></STATICVARIABLES></REQUESTDESC>"
+ "<REQUESTDATA>"
+ "<TALLYMESSAGE xmlns:UDF=\"TallyUDF\">"
+ "<VOUCHER REMOTEID=\"00000001\" VCHTYPE=\"Receipt\" ACTION=\"Create\" OBJVIEW=\"Accounting Voucher View\">"
+ "<DATE>20140401</DATE>"
+ "<VOUCHERTYPENAME>Receipt</VOUCHERTYPENAME>"
+ "<VOUCHERNUMBER>1</VOUCHERNUMBER>"
+ "<PARTYLEDGERNAME>Cash</PARTYLEDGERNAME>"
+ "<PERSISTEDVIEW>Accounting Voucher View</PERSISTEDVIEW>"
+ "<ALLLEDGERENTRIES.LIST>"
+ "<LEDGERNAME>Capital Account</LEDGERNAME>"
+ "<ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>"
+ "<AMOUNT>50000.00</AMOUNT>"
+ "</ALLLEDGERENTRIES.LIST>"
+ "<ALLLEDGERENTRIES.LIST>"
+ "<LEDGERNAME>Cash</LEDGERNAME>"
+ "<ISDEEMEDPOSITIVE>Yes</ISDEEMEDPOSITIVE>"
+ "<AMOUNT>-50000.00</AMOUNT>"
+ "</ALLLEDGERENTRIES.LIST>"
+ "</VOUCHER>"
+ "</TALLYMESSAGE>"
+ "</REQUESTDATA>"
+ "</IMPORTDATA>"
+ "</BODY>"
+ "</ENVELOPE>";
return TXML;
}
public void SendToTally() throws Exception{
String Url = "http://127.0.0.1:9000/";
String SOAPAction = "";
String Voucher = this.CreateRequest();
// Create the connection where we're going to send the file.
URL url = new URL(Url);
URLConnection connection = url.openConnection();
HttpURLConnection httpConn = (HttpURLConnection) connection;
ByteArrayInputStream bin = new ByteArrayInputStream(Voucher.getBytes());
ByteArrayOutputStream bout = new ByteArrayOutputStream();
// Copy the SOAP file to the open connection.
copy(bin, bout);
byte[] b = bout.toByteArray();
// Set the appropriate HTTP parameters.
httpConn.setRequestProperty("Content-Length", String.valueOf(b.length));
httpConn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
httpConn.setRequestProperty("SOAPAction", SOAPAction);
httpConn.setRequestMethod("POST");
httpConn.setDoOutput(true);
httpConn.setDoInput(true);
// Everything's set up; send the XML that was read in to b.
OutputStream out = httpConn.getOutputStream();
out.write(b);
out.close();
// Read the response and write it to standard out.
InputStreamReader isr =
new InputStreamReader(httpConn.getInputStream());
BufferedReader in = new BufferedReader(isr);
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
}
in.close();
}
public static void copy(InputStream in, OutputStream out)
throws IOException {
// do not allow other threads to read from the
// input or write to the output while copying is
// taking place
synchronized (in) {
synchronized (out) {
byte[] buffer = new byte[256];
while (true) {
int bytesRead = in.read(buffer);
if (bytesRead == -1) {
break;
}
out.write(buffer, 0, bytesRead);
}
}
}
}
public static void main(String[] args) throws Exception {
TallyRequest r = new TallyRequest();
r.SendToTally();
}
}