//nuove funzioni con aggancio a invoicex.jar
/*
TIPI DOCUMENTO INVOICEX
static public final String tipo_documento_fattura_vendita = "fattura_vendita";
static public final String tipo_documento_fattura_acquisto = "fattura_acquisto";
static public final String tipo_documento_ordine_vendita = "ordine_vendita";
static public final String tipo_documento_ordine_acquisto = "ordine_acquisto";
static public final String tipo_documento_ddt_vendita = "ddt_vendita";
static public final String tipo_documento_ddt_acquisto = "ddt_acquisto";
*/
$pathInvoicex = defined("INDI") ? "../../invoicex" : "../../../../invoicex";
function invoicexGetBaseUrl() {
return "https://localhost:9443/api";
//return "https://127.0.0.1:9443/api";
//return "https://www.tnx.it/";
}
function invoicexGetParamDef($tipo = "fattura") {
global $DB,$DATI,$pathInvoicex,$customInovicexDb;
// Lore 25/01/2023 aggiunta la possibilità di personalizzare il db nel caso non sia coincidente con quello del sito.
// Aggiungere $customInovicexDb sul sito prima di una qualsiasi chiamata ad una funzione di questa lib, passando solo le personalizzazioni rispetto a $DB.
// $customInovicexDb[server] = "";
// $customInovicexDb[user] = "";
// $customInovicexDb[pass] = "";
// $customInovicexDb[database] = "";
$param['param_prop'] = "json";
/* in cake non vanno bene, credo perchè non sente dove_sono
$param[db][server] = $DB[host];
$param[db][user] = $DB[username];
$param[db][pass] = $DB[password];
$param[db][database] = $DB[database];
*/
$param['db']['server'] = "localhost";
$param['db']['user'] = "root";
$param['db']['pass'] = "";
$param['db']['database'] = $DB['database'];
if (isset($DATI["db_invoicex"])) $param['db']['database'] = $DATI["db_invoicex"];
if (isset($_SESSION["invUserDb_db"])) $param['db']['database'] = $_SESSION["invUserDb_db"];
if ($_SERVER["SERVER_ADDR"] == "192.168.0.140"){
$param['db']['user'] = 'tnx';
$param['db']['pass'] = 'x9djh3mc0wj359';
} else if ($_SERVER["SERVER_ADDR"] != "192.168.0.105") {
$param['db']['user'] = 'tnx';
$param['db']['pass'] = '93kwjdjw91lw';
}
if($customInovicexDb){
$param['db'] = array_merge($param['db'], $customInovicexDb);
}
//altri param
// $param[param_pref_tipoStampa] = $tipo == "fattura" ? "fattura_mod6_fattura_labellatoscana.jrxml" : "fattura_mod5_ricevuta_labellatoscana.jrxml";
$param[param_pref_tipoStampa] = "fattura_mod7_default.jrxml";
$param[param_pref_tipoStampaFA] = "fattura_acc_mod6_default.jrxml";
$param[param_pref_tipoStampaDDT] = "ddt_mod6_default.jrxml";
$param[param_pref_tipoStampaOrdine] = "ordine_mod6_default.jrxml";
//$param[param_pref_tipoStampaOrdine] = "ordine_mod6_default_no_img.jrxml";
$param[param_pref_stampaEmail] = $DB["database"] == "shoppix_bacciromano_com" ? "true" : "false";
return $param;
}
function invoicexGetPdf($id, $tipo = "", $report = "", $param = null) {
$paramDef = invoicexGetParamDef($tipo);
if (is_array($param)) {
$param = array_merge($paramDef, $param);
} else {
$param = $paramDef;
}
//mail("mceccarelli@demo.tnx.it", "param mod invois invoicexGetPdf", "id:$id" . "\n\nid print:" . print_r($id, true) . "\n\n" . print_r($param, true), "From: cecca@tnx.it\r\n");
//ritorna il percorso al pdf generato da invoicex
$tipo_doc = "fattura_vendita";
if ($tipo != "") {
$tipo_doc = $tipo;
}
$url = invoicexGetBaseUrl() . "/pdf/$tipo_doc/$id";
if ($report) $url .= "/$report";
//mail("mceccarelli@demo.tnx.it", "param mod invois invoicexGetPdf", $url, "From: cecca@tnx.it\r\n");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$datipost = http_build_query(array("param" => $param));
curl_setopt($ch, CURLOPT_POSTFIELDS, $datipost);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$ret = curl_exec($ch);
if ($ret === FALSE) {
mailtnx("mceccarelli@demo.tnx.it", "mod_invoicex2.inc.php problema curl", "url: $url\n curl_errno:" . curl_errno($ch) . "\n" . curl_error($ch) . "\n\n" . print_r($param, true) . "\n\n" . print_r($DB, true), "From: cecca@tnx.it\r\n");
return array("errore" => "chiamata a invoicex server non riuscita: " . curl_errno($ch) . " " . curl_error($ch));
}
curl_close($ch);
//mailtnx("mceccarelli@demo.tnx.it", "mod_invoicex2.inc.php debug", "url: $url\n" . print_r($param, true) . "\n\n" . print_r($DB, true) . "\n\n" . print_r($ret, true), "From: cecca@tnx.it\r\n");
$retd = json_decode($ret, true);
if (is_array($retd) && $retd['esito'] == "ok") {
return $retd['file'];
} else {
return array("errore" => $ret);
}
}
function invoicexGetPdfBatch($id, $tipo = "") {
//OLD
$param = invoicexGetParamDef($tipo);
//ritorna il percorso al pdf generato da invoicex
$param['tipo_doc'] = "fattura_vendita";
if ($tipo != "") {
$param['tipo_doc'] = $tipo;
}
$param['id'] = $id;
$ret = invoicexExec("getPdf", $param);
if (is_array($ret) && $ret['esito'] == "ok") {
return $ret['file'];
} else {
return array("errore" => $ret);
}
}
function invoicexGeneraScadenze($id, $tipo = "", $inBackground = false) {
$param = invoicexGetParamDef($tipo);
$url = invoicexGetBaseUrl() . "/util/generaScadenze/$id/$tipo";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$datipost = http_build_query(array("param" => $param));
curl_setopt($ch, CURLOPT_POSTFIELDS, $datipost);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
if ($inBackground) {
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1);
}
$ret = curl_exec($ch);
curl_close($ch);
if ($inBackground) {
return true;
} else {
if ($ret === FALSE) {
mailtnx("mceccarelli@demo.tnx.it", "mod_invoicex2.inc.php problema curl", "url: $url\n curl_errno:" . curl_errno($ch) . "\n" . curl_error($ch) . "\n\n" . print_r($param, true) . "\n\n" . print_r($DB, true), "From: cecca@tnx.it\r\n");
return array("errore" => "chiamata a invoicex server non riuscita: " . curl_errno($ch) . " " . curl_error($ch));
}
$ret_raw = $ret;
$ret = json_decode($ret, true);
if (is_array($ret) && $ret['esito'] == "ok") {
return true;
} else {
return array("errore" => $ret_raw);
}
}
}
function invoicexGeneraProvvigioni($id_fattura, $tipo = "fattura_vendita", $inBackground = false) {
$param = invoicexGetParamDef($tipo);
$url = invoicexGetBaseUrl() . "/util/generaProvvigioni/$id_fattura";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$datipost = http_build_query(array("param" => $param));
curl_setopt($ch, CURLOPT_POSTFIELDS, $datipost);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
if ($inBackground) {
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1);
}
$ret = curl_exec($ch);
curl_close($ch);
if ($inBackground) {
return true;
} else {
if ($ret === FALSE) {
//mail("mceccarelli@demo.tnx.it", "mod_invoicex2.inc.php problema curl", curl_errno($ch) . "\n" . curl_error($ch) . "\n\n" . print_r($param, true) . "\n\n" . print_r($DB, true) . "\n\nglobals:\n" . print_r($GLOBALS, true), "From: cecca@tnx.it\r\n");
mailtnx("mceccarelli@demo.tnx.it", "mod_invoicex2.inc.php problema curl", curl_errno($ch) . "\n" . curl_error($ch) . "\n\n" . print_r($param, true) . "\n\n" . print_r($DB, true), "From: cecca@tnx.it\r\n");
}
$ret_raw = $ret;
$ret = json_decode($ret, true);
if (is_array($ret) && $ret['esito'] == "ok") {
return true;
} else {
return array("errore" => $ret_raw);
}
}
}
function invoicexGeneraProvvigioniBatch($id) {
$param = invoicexGetParamDef();
$param["id_fattura"] = $id;
$ret = invoicexExec("generaProvvigioni", $param);
return $ret;
}
function invoicexConvertiDoc($da_tipo, $da_id, $a_tipo) {
$param = invoicexGetParamDef($tipo);
$url = invoicexGetBaseUrl() . "/util/converti/$da_tipo/$da_id/$a_tipo";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$datipost = http_build_query(array("param" => $param));
curl_setopt($ch, CURLOPT_POSTFIELDS, $datipost);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$ret = curl_exec($ch);
if ($ret === FALSE) {
//mail("mceccarelli@demo.tnx.it", "mod_invoicex2.inc.php problema curl", "url: $url\n curl_errno:" . curl_errno($ch) . "\n" . curl_error($ch) . "\n\n" . print_r($param, true) . "\n\n" . print_r($DB, true) . "\n\nglobals:\n" . print_r($GLOBALS, true), "From: cecca@tnx.it\r\n");
mailtnx("mceccarelli@demo.tnx.it", "mod_invoicex2.inc.php problema curl", "url: $url\n curl_errno:" . curl_errno($ch) . "\n" . curl_error($ch) . "\n\n" . print_r($param, true) . "\n\n" . print_r($DB, true), "From: cecca@tnx.it\r\n");
return array("errore" => "chiamata a invoicex server non riuscita: " . curl_errno($ch) . " " . curl_error($ch));
}
curl_close($ch);
$ret_raw = $ret;
$ret = json_decode($ret, true);
if (is_array($ret) && $ret['esito'] == "ok") {
return $ret['id'];
} else {
return array("errore" => $ret_raw);
}
}
function invoicexCalcolaTotali($id, $tipo = "", $inBackground = false) {
global $DB;
$param = invoicexGetParamDef($tipo);
if ($inBackground) {
mail("mceccarelli@demo.tnx.it", "param mod invois invoicexCalcolaTotali $tipo $id $DB[database] $_REQUEST[url]", print_r($param, true) . "\n\n" . print_r($DB, true) . "\n\nrequest:\n" . print_r($_REQUEST, true), "From: cecca@tnx.it\r\n");
}
$param['tipo_doc'] = $tipo;
$param['id'] = $id;
$url = invoicexGetBaseUrl() . "/util/calcolaTotali/$tipo/$id";
$ch = curl_init();
$datipost = http_build_query(array("param" => $param));
myCurlInit($ch, $url, $datipost);
if ($inBackground) {
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1);
}
$ret = curl_exec($ch);
curl_close($ch);
if ($inBackground) {
return true;
} else {
if ($ret === FALSE) {
mailtnx("mceccarelli@demo.tnx.it", "mod_invoicex2.inc.php problema curl", "url: $url\n curl_errno:" . curl_errno($ch) . "\n" . curl_error($ch) . "\n\n" . print_r($param, true) . "\n\n" . print_r($DB, true), "From: cecca@tnx.it\r\n");
return array("errore" => "chiamata a invoicex server non riuscita: " . curl_errno($ch) . " " . curl_error($ch));
}
$rawRet = $ret;
$ret = json_decode($ret, true);
if (is_array($ret) && $ret['esito'] == "ok") {
return true;
} else {
mail("mceccarelli@demo.tnx.it", "mod_invoicex2.inc.php problema", print_r($param, true) . "\n\n" . print_r($DB, true) . "\n\nret\n" . print_r($ret, true) . "\n\nrawRet\n" . print_r($rawRet, true), "From: cecca@tnx.it\r\n");
return array("errore" => ($ret === NULL ? $rawRet : $ret));
}
}
}
function invoicexGeneraMovimenti($id, $tipo = "", $inBackground = false) {
global $DB;
$param = invoicexGetParamDef($tipo);
//mail("mceccarelli@demo.tnx.it", "param mod invois", print_r($param, true) . "\n\n" . print_r($DB, true) . "\n\nglobals:\n" . print_r($GLOBALS, true), "From: cecca@tnx.it\r\n");
$param['tipo_doc'] = $tipo;
$param['id'] = $id;
$url = invoicexGetBaseUrl() . "/util/generaMovimenti/$tipo/$id";
$ch = curl_init();
$datipost = http_build_query(array("param" => $param));
myCurlInit($ch, $url, $datipost);
if ($inBackground) {
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1);
}
$ret = curl_exec($ch);
curl_close($ch);
if ($inBackground) {
return true;
} else {
if ($ret === FALSE) {
mailtnx("mceccarelli@demo.tnx.it", "mod_invoicex2.inc.php problema curl", "url: $url\n curl_errno:" . curl_errno($ch) . "\n" . curl_error($ch) . "\n\n" . print_r($param, true) . "\n\n" . print_r($DB, true), "From: cecca@tnx.it\r\n");
return array("errore" => "chiamata a invoicex server non riuscita: " . curl_errno($ch) . " " . curl_error($ch));
}
$rawRet = $ret;
$ret = json_decode($ret, true);
if (is_array($ret) && $ret['esito'] == "ok") {
return true;
} else {
mail("mceccarelli@demo.tnx.it", "mod_invoicex2.inc.php problema", print_r($param, true) . "\n\n" . print_r($DB, true) . "\n\nret\n" . print_r($ret, true) . "\n\nrawRet\n" . print_r($rawRet, true), "From: cecca@tnx.it\r\n");
return array("errore" => ($ret === NULL ? $rawRet : $ret));
}
}
}
function myCurlInit($ch, $url, $datipost) {
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $datipost);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
}
function invoicexCalcolaTotaliBatch($id, $tipo = "") {
//OLD
$param = invoicexGetParamDef($tipo);
$param['tipo_doc'] = $tipo;
$param['id'] = $id;
$ret = invoicexExec("calcolaTotali", $param);
if (is_array($ret) && $ret['esito'] == "ok") {
return true;
} else {
return array("errore" => $ret);
}
}
function invoicexInviaSollecitoScadenza($id_scadenza, $indirizzo_cc = null, $indirizzo_ccn = null) {
$param = invoicexGetParamDef($tipo);
$url = invoicexGetBaseUrl() . "/util/inviaSollecitoScadenza/$id_scadenza/$indirizzo_cc/$indirizzo_ccn";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$datipost = http_build_query(array("param" => $param));
curl_setopt($ch, CURLOPT_POSTFIELDS, $datipost);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$ret = curl_exec($ch);
if ($ret === FALSE) {
//mail("mceccarelli@demo.tnx.it", "mod_invoicex2.inc.php problema curl", "url: $url\n curl_errno:" . curl_errno($ch) . "\n" . curl_error($ch) . "\n\n" . print_r($param, true) . "\n\n" . print_r($DB, true) . "\n\nglobals:\n" . print_r($GLOBALS, true), "From: cecca@tnx.it\r\n");
mailtnx("mceccarelli@demo.tnx.it", "mod_invoicex2.inc.php problema curl", "url: $url\n curl_errno:" . curl_errno($ch) . "\n" . curl_error($ch) . "\n\n" . print_r($param, true) . "\n\n" . print_r($DB, true), "From: cecca@tnx.it\r\n");
return array("errore" => "chiamata a invoicex server non riuscita: " . curl_errno($ch) . " " . curl_error($ch));
}
curl_close($ch);
$ret_raw = $ret;
$ret = json_decode($ret, true);
if (is_array($ret) && $ret['esito'] == "ok") {
return true;
} else {
return array("errore" => $ret_raw);
}
}
function invoicexExec($funzione, $param) {
global $pathInvoicex;
$debug = false;
if ($_GET["invoicex_debug"] == "1") {
$debug = true;
}
mt_srand(microtime(true));
$nomefilejson = "param-" . mt_rand(10000000,99999999) . ".json";
$fp = fopen("$pathInvoicex/$nomefilejson", 'w');
fwrite($fp, json_encode($param));
fclose($fp);
$cmd = "cd $pathInvoicex; java -Djava.awt.headless=true -jar Invoicex.jar -b $funzione $nomefilejson 2>&1";
$lastline = exec($cmd, $output , $return_var);
if ($debug) {
echo "lastline:$lastline
";
echo "
"; echo "output:\n" . print_r($output, true); echo ""; echo "return_var:$return_var