Tally Integration with PHP

<?php

//public function getListOfAccount() {

    ini_set('display_errors', 1);

    $requestXML13 = '<ENVELOPE>
        <HEADER>
        <TALLYREQUEST>Export Data</TALLYREQUEST>
        </HEADER>
        <BODY>
        <EXPORTDATA>
        <REQUESTDESC>
        <REPORTNAME>List of Accounts</REPORTNAME>     
        <STATICVARIABLES>
        <SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT>     
        </STATICVARIABLES>
        </REQUESTDESC>
        </EXPORTDATA>
        </BODY>
        </ENVELOPE>';

    $requestXML = '<ENVELOPE>
                        <HEADER>
                        <VERSION>1</VERSION>
                        <TALLYREQUEST>Export</TALLYREQUEST>
                        <TYPE>Data</TYPE>
                        <ID>Balance Sheet</ID>
                        </HEADER>
                        <BODY>
                        <DESC>
                        <STATICVARIABLES>
                        <EXPLODEFLAG>Yes</EXPLODEFLAG>
                        <SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT>
                        </STATICVARIABLES>
                        </DESC>
                        </BODY>
                        </ENVELOPE>';

    $requestXML1 = '<ENVELOPE>
 <HEADER>
               <VERSION>1</VERSION>
               <TALLYREQUEST>EXPORT</TALLYREQUEST>
               <TYPE>COLLECTION</TYPE>
               <ID>Remote Ledger Coll</ID>
 </HEADER>
 <BODY>
               <DESC>
                     <STATICVARIABLES>
                           <SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT>
                     </STATICVARIABLES>
                     <TDL>
 <TDLMESSAGE>
                                 <COLLECTION NAME="Remote Ledger Coll"
ISINITIALIZE="Yes">
                                       <TYPE>Ledger</TYPE>
                                       <NATIVEMETHOD>Name</NATIVEMETHOD>
                                       <NATIVEMETHOD>OpeningBalance
</NATIVEMETHOD>
 </COLLECTION>
 </TDLMESSAGE>
                     </TDL>
               </DESC>
</BODY>
</ENVELOPE>';


    $arr1 = array();
    $DSPDISPNAME = '';
    $BSSUBAMT = '';
    $BSMAINAMT = '';

    //$server = 'http://xxx.xxx.xxx.xxx:9000';  
    $server = 'LOCALHOST:9000';   // working for local
//    $server = '127.0.0.1:9000';   // workign for local
  //  $server = '10.0.0.155:9000';
    //$server='http://127.0.0.1:3306';
    $headers = array("Content-type: text/xml;charset=UTF-8", "Content-length: " . strlen($requestXML), "Connection: close");
    //ini_set('memory_limit', '-1'); // for extending memory limit
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $server);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 100);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXML);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $data = curl_exec($ch);

    if (curl_errno($ch)) {
        print curl_error($ch);
    } else {
        //echo "<pre>";
        //print_r($data);
        $myfile = fopen("Trial Balance.xml", "w") or die("Unable to open file!");
        $fw = fwrite($myfile, $data);
        fclose($myfile);
        //die;
        //$data=htmlentities($data);

        /* My Code */

        $p = xml_parser_create();
        xml_parse_into_struct($p, $data, $vals, $index);
        xml_parser_free($p);

        //  echo "<pre>";
        //  print_r($vals);
        //  die;

        $val_length = count($vals);

        $i = 0;
        $f1 = 0;
        $f2 = 0;
        $f3 = 0;

        while ($val_length > $i) {



            if ($vals[$i]['tag'] == 'DSPDISPNAME') {

                $f1 = 1;
                foreach ($vals[$i] as $key => $value) {

                    if ($key == 'value') {
                        $DSPDISPNAME = '';

                        if ($value != '') {
                            $DSPDISPNAME = $value;
                        }
                    } else {
                        $DSPDISPNAME = '';
                    }
                }
            } else if ($vals[$i]['tag'] == 'BSSUBAMT') {
                $f2 = 1;
                foreach ($vals[$i] as $key => $value1) {

                    if ($key == 'value') {
                        $BSSUBAMT = '';

                        if ($value1 != '') {
                            $BSSUBAMT = $value1;
                        }
                    } else {
                        $BSSUBAMT = '';
                    }
                    //$BSSUBAMT = '';
                }
            } else if ($vals[$i]['tag'] == 'BSMAINAMT') {
                $f3 = 1;
                foreach ($vals[$i] as $key => $value2) {

                    if ($key == 'value') {
                        $BSMAINAMT = '';
                        if ($value2 != '') {
                            $BSMAINAMT = $value2;
                        }
                    } else {
                        $BSMAINAMT = '';
                    }
                }
            }


            if ($f1 == 1 && $f2 == 1 && $f3 == 1) {
                array_push($arr1, array('DSPDISPNAME' => $DSPDISPNAME, 'BSSUAMT' => $BSSUBAMT, 'BSMAINAMT' => $BSMAINAMT));
                $f1 = 0;
                $f2 = 0;
                $f3 = 0;
            }
            $i++;
        }

        /* end My Code */

        //var_dump($arr1);
      
        echo "<pre>";
        print_r($arr1);      
        //$data1['balace_sheet'] = $arr1;
        //$this->load->view('account/list_of_account', $data1);
        curl_close($ch);
    }
//}
//$data = getListOfAccount();
//echo $data;
?>

Comments

  1. Hello, please can u explain the code i'm new to tally integration. while I'm executing above script i'm getting a Null Array

    ReplyDelete

Post a Comment

Popular posts from this blog