Как я могу подключить свой сервер к подсчету используя PHP - PullRequest
0 голосов
/ 15 июня 2019

Я хочу подключить свой сервер к подсчету.Проблема в том, что когда я запускаю этот код в 'LOCALHOST', он вставляет данные в счетчик, но когда я загружаю этот файл на сервер, он не вставляет данные, может кто-нибудь мне помочь.Я думаю, что проблема в URL. Я не знаю, какой URL я должен дать, чтобы запустить этот код. Я пробовал «Domain_name.com» или «IP-адрес веб-сайта», он не работает.Может кто-нибудь мне помочь?


if(count($_POST)) {

    $group_name = strtoupper($_POST['group_name']);
    $item_name = $_POST['item_name'];
    /*$opening_balance = $_POST['opening_balance'];
    $opening_value = $_POST['opening_value'];
    $opening_rate = $opening_value * $opening_balance;*/

    $res_str =<<<XML
    <ENVELOPE>
<HEADER>
<TALLYREQUEST>Import Data</TALLYREQUEST>
</HEADER>
<BODY>
<IMPORTDATA>
<REQUESTDESC>
<REPORTNAME>All Masters</REPORTNAME>
</REQUESTDESC>
<REQUESTDATA>

<!-- Create Stock Group named "$group_name" -->
<TALLYMESSAGE xmlns:UDF="TallyUDF">
<STOCKGROUP NAME="{$group_name}" ACTION="Create">
<NAME.LIST>
<NAME>{$group_name}</NAME>
</NAME.LIST>
<PARENT/>
<ISADDABLE>Yes</ISADDABLE>
</STOCKGROUP>
</TALLYMESSAGE>

<!-- Create Stock Item named "$item_name" -->
<TALLYMESSAGE xmlns:UDF="TallyUDF">
<STOCKITEM NAME="{$item_name}" ACTION="Create">
<NAME.LIST>
<NAME>{$item_name}</NAME>
</NAME.LIST>
<PARENT>{$group_name}</PARENT>


<BATCHALLOCATIONS.LIST>
<NAME>Primary Batch</NAME>
<BATCHNAME>Primary Batch</BATCHNAME>
<GODOWNNAME>Main Location</GODOWNNAME>
<MFDON>20190120</MFDON>
<OPENINGBALANCE>0.000 NOS</OPENINGBALANCE>
<OPENINGVALUE>0.000</OPENINGVALUE>
<OPENINGRATE>0.000/NOS</OPENINGRATE>
</BATCHALLOCATIONS.LIST>
</STOCKITEM>
</TALLYMESSAGE>
</REQUESTDATA>
</IMPORTDATA>
</BODY>
</ENVELOPE>
XML;

    //var_dump($res_str);die;

    $url = "localhost:8000/";

        //setting the curl parameters.
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
// Following line is compulsary to add as it is:
        curl_setopt($ch, CURLOPT_POSTFIELDS,
                    "xmlRequest=" . $res_str);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300);
        $data = curl_exec($ch);

        if(curl_errno($ch)){
            var_dump($data);
        } else {
            $msg = $data;
        }
        curl_close($ch);


}

?>

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <title>Tally</title>

    <!-- Bootstrap -->
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>


    <div class="container">

        <div class="col-md-6 col-md-offset-3" style="margin-top:20px">
            <?php if(isset($msg) && $msg) :?>
            <div class="alert alert-success" role="alert"><?=$msg?></div>
            <?php endif;?>
             <div class="pull-left"><a href="export.php">Item List</a> &nbsp;|&nbsp;</div>
              <div class="pull-left"><a href="stockGroupItem.php">Create StockGroup Item</a>&nbsp;|&nbsp;</div>
               <div class="pull-left"><a href="ledger.php">Create Ledger</a>&nbsp;|&nbsp;</div>
            <hr>

            <form class="form-horizontal" method="post" action="">
              <div class="form-group">
                <label for="group-name" class="col-sm-4 control-label">Stock Group name</label>
                <div class="col-sm-6">
                  <input type="text" class="form-control" id="group-name" placeholder="Stock Group name" name="group_name">
                </div>
              </div>
              <div class="form-group">
                <label for="item-name" class="col-sm-4 control-label">Stock Item name</label>
                <div class="col-sm-6">
                  <input type="text" class="form-control" id="item-name" placeholder="Stock Item name" name="item_name" required>
                </div>
              </div>

             <!--  <div class="form-group">
                <label for="opening_balance" class="col-sm-4 control-label">Quantity</label>
                <div class="col-sm-6">
                  <input type="text" class="form-control" id="opening_balance" placeholder="Item Quantity" name="opening_balance" required>
                </div>
              </div>

              <div class="form-group">
                <label for="opening_value" class="col-sm-4 control-label">Unit Price</label>
                <div class="col-sm-6">
                  <input type="text" class="form-control" id="opening_value" placeholder="Item Unit Price" name="opening_value" required>
                </div>
              </div> -->


              <div class="form-group">
                <div class="col-sm-offset-4 col-sm-6">
                  <button type="submit" class="btn btn-primary">Insert</button>
                </div>
              </div>
            </form>
        </div>
    </div>

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  </body>
</html>```

1 Ответ

0 голосов
/ 25 июня 2019

Тот факт, что он работает с вашим локальным URL-адресом, означает, что вы запускаете этот HTML-файл на локальном компьютере, где установлен Tally. Что произойдет, если вы поместите его на сервер? Ваш экземпляр подсчета работает на вашем локальном компьютере, а ваш HTML-файл находится на сервере. Теперь ваш локальный компьютер имеет IP-адрес локальной сети (скажем, IP 192.x), который скрыт за вашим основным IP-адресом (скажем, A), который назначен вашему маршрутизатору. Однако ваш сервер находится на другом IP (скажем, B).

Как html-файл (на IP B) узнает, как проверить связь с Tally? Даже если вы указали IP-адрес своего маршрутизатора (на IP-адресе A) вместо URL-адреса локального хоста, как маршрутизатор узнает, на какой машине в вашей локальной сети фактически установлен Tally?

Я запустил этот тест, используя http://localhost.run/, где я позволил открыть порт на маршрутизаторе (в частности, localhost: 9000 на моей локальной машине, где работал Tally), а затем я отправил команду Tally с сервера заменив локальный URL-адрес URL-адресом, созданным этим веб-сайтом.

Вы можете попробовать его в целях тестирования, хотя в производственной среде вам, вероятно, понадобится более надежное решение (либо через SSH, либо путем размещения самого Tally на сервере).

...