Sfoglia il codice sorgente

impersonificazione + soccorso istruttorio

master
Amerigo C. 2 settimane fa
parent
commit
95ba26027b
  1. 3579
      assets/wsdl/WSProtocolloDM.asmx_wsdl
  2. 2
      lib/app.config.php
  3. 11
      lib/classes/Affitti/DomandaSconti.php
  4. 116
      lib/classes/Impersonificazione.php
  5. 35
      lib/classes/ModuloPdf.php
  6. 19
      lib/classes/Utils/Date.php
  7. 31
      lib/classes/Utils/EmailSms.php
  8. 5
      lib/classes/Voli/Estrazioni.php
  9. 395
      lib/classes/Voli/RichiestaIntegrazione.php
  10. 58
      lib/config/avviso.config.php
  11. 1
      lib/config/upload.config.php
  12. 4
      lib/import/custom.php
  13. 44
      modules/private/domanda.php
  14. 19
      modules/private/domanda/include_anagrafica_richiedente.php
  15. 151
      modules/private/domanda/include_sconti.php
  16. 108
      modules/private/elenco_sconti.php
  17. 248
      modules/private/estrazioni.php
  18. 53
      webservice/domanda.php
  19. 540
      webservice/elenco_sconti.php
  20. 2
      webservice/generaMandato.php
  21. 29
      webservice/impersonificazione.php
  22. 535
      webservice/streamerFile.php

3579
assets/wsdl/WSProtocolloDM.asmx_wsdl

File diff soppresso perché troppo grande Load Diff

2
lib/app.config.php

@ -10,7 +10,7 @@ $config = array(
"FILE_UPLOAD" => true,
"FIREBASE" => true,
"CAPTCHA" => false,
"EMAIL" => false,
"EMAIL" => true,
"INFOCAMERE" => true,
"AVVISO" => true
);

11
lib/classes/Affitti/DomandaSconti.php

@ -518,7 +518,13 @@ GROUP BY T.STATO, T.LOTTO, T.DATA_ESPORTAZIONE,T.DATA_EROGAZIONE, T.DATA_ESITO,T
$result = array();
$res = array();
if (intval($lotto) > 0) {
$sql2 = "SELECT COUNT(V.ID) AS NUM, V.STATO, SUM(V.SCONTO_TOTALE) AS SCONTO, SUM(V.COSTO_TRATTA) AS COSTO, V.LOTTO,TO_CHAR(V.DATA_ESPORTAZIONE, 'dd/mm/YYYY') AS DATA_ESPORTAZIONE, TO_CHAR(V.DATA_EROGAZIONE, 'dd/mm/YYYY') AS DATA_EROGAZIONE, TO_CHAR(V.DATA_ESITO, 'dd/mm/YYYY') AS DATA_ESITO, PRIORITA FROM VIEW_EXPORT_SCONTI V WHERE V.LOTTO = " . $lotto . " AND STATO = 2 GROUP BY V.STATO, V.LOTTO, TO_CHAR(V.DATA_ESPORTAZIONE, 'dd/mm/YYYY'),TO_CHAR(V.DATA_EROGAZIONE, 'dd/mm/YYYY'), TO_CHAR(V.DATA_ESITO, 'dd/mm/YYYY'), PRIORITA ORDER BY V.STATO desc, V.LOTTO asc";
$sql2 = "SELECT COUNT(V.ID) AS NUM, "
. "V.STATO, SUM(V.SCONTO_TOTALE) AS SCONTO, SUM(V.COSTO_TRATTA) "
. "AS COSTO, V.LOTTO,TO_CHAR(V.DATA_ESPORTAZIONE, 'dd/mm/YYYY') AS DATA_ESPORTAZIONE, "
. "TO_CHAR(V.DATA_EROGAZIONE, 'dd/mm/YYYY') AS DATA_EROGAZIONE, TO_CHAR(V.DATA_ESITO, 'dd/mm/YYYY') AS DATA_ESITO "
. "FROM VIEW_EXPORT_SCONTI V WHERE V.LOTTO = " . $lotto . " AND STATO = 2 "
. "GROUP BY V.STATO, V.LOTTO, TO_CHAR(V.DATA_ESPORTAZIONE, 'dd/mm/YYYY'),TO_CHAR(V.DATA_EROGAZIONE, 'dd/mm/YYYY'),"
. " TO_CHAR(V.DATA_ESITO, 'dd/mm/YYYY') ORDER BY V.STATO desc, V.LOTTO asc";
$query = $con->prepare($sql2);
try {
$query->execute();
@ -979,13 +985,14 @@ LEFT JOIN ACCOUNT_ANAGRAFICA ON ACCOUNT_ANAGRAFICA.CODICE_FISCALE=VIEW_EXPORT_SC
V.DATA_NASCITA,
V.SCONTO_TOTALE
FROM VIEW_EXPORT_IBAN_AGGIORNATI V
WHERE V.LOTTO = :LOTTO AND V.STATO = 2
WHERE V.LOTTO = :LOTTO AND V.STATO = :STATO
) T
WHERE T.SCONTO_TOTALE > 0
ORDER BY T.\"ID Richiesta\" ASC
";
$query = $con->prepare($sql);
$query->bindParam(":LOTTO", $lotto);
$query->bindParam(":STATO", $stato);
try {
$query->execute();
$res = $query->fetchAll(PDO::FETCH_ASSOC);

116
lib/classes/Impersonificazione.php

@ -0,0 +1,116 @@
<?php
require_once ROOT . "/lib/classes/IDataClass.php";
class Impersonificazione extends DataClass {
const TABLE_NAME = "IMPERSONIFICAZIONE";
const SEQ_NAME = "IMPERSONIFICAZIONE_ID_SEQ";
public $ID = 0;
public $UID_FIREBASE_ADMIN = null;
public $CODICE_FISCALE = null;
public $USED = 0;
public function __construct($src = null) {
global $con;
if ($src == null) {
return;
}
$stripSlashes = 0;
if (is_array($src)) {
if (isset($src['ID']) && $src['ID'] > 0) {
$this->_loadAndFillObject($src['ID'], self::TABLE_NAME, $src);
} else {
$this->_loadByRow($src, $stripSlashes);
}
} elseif (intval($src)) {
$sql = "SELECT * FROM " . self::TABLE_NAME . " WHERE ID = :id";
$query = $con->prepare($sql);
$query->bindParam(":id", $src);
try {
$query->execute();
$it = $query->fetchAll(PDO::FETCH_ASSOC);
Utils::FillObjectFromRow($this, $it[0]);
} catch (Exception $exc) {
$exc->getMessage();
}
}
}
public static function Count($filter = null) {
return parent::_count(self::TABLE_NAME, $filter);
}
public static function LoadDataTable($searchQuery = "", $searchArray = array(), $columnName = array(), $columnSortOrder = array(), $start = 0, $offset = 0, $totCount = false) {
return parent::_loadDataTable(self::TABLE_NAME, $searchQuery, $searchArray, $columnName, $columnSortOrder, $start, $offset, $totCount);
}
/**
* Funzione di verifica dei dati POST prima del salvataggio
*/
public static function checkVerificaDatiPreSalvataggio() {
global $LoggedAccount;
$_POST['CODICE_FISCALE'] = Utils::get_filter_string_POST('CODICE_FISCALE');
}
public function checkDatiPreSave() {
global $LoggedAccount;
$response = array();
$controllValidita = true;
$dati_mancanti = '';
if ($this->UID_FIREBASE_ADMIN == "") {
$controllValidita = false;
$dati_mancanti .= " <br><b>GUID</b> ";
}
if ($this->CODICE_FISCALE == "") {
$controllValidita = false;
$dati_mancanti .= " <br><b>Codice Fiscale dell'utente da impersonificare</b> ";
}
$response['checkDati'] = $controllValidita;
$response['txt_dati_mancanti'] = $dati_mancanti;
return $response;
}
public function Save() {
global $con, $LoggedAccount;
$vars = get_object_vars($this);
// unset($vars["DATA_RICHIESTA"]);
$sql = Utils::prepareQuery(self::TABLE_NAME, $vars);
/* Utils::print_array($sql);
Utils::print_array($vars); */
$queryabi = $con->prepare($sql);
foreach ($vars as $k => $v) {
if ($k == "ID" && $v == 0) {
continue;
}
$queryabi->bindValue(":" . $k, $v);
}
try {
$it = parent::_Save($queryabi);
if (trim($it['erroreCode']) == 'HY000') {
$it['erroreDescrizione'] = '<b>Richiesta già inserita!</b><br/> Non è possibile inviare una richiesta di integrazione per la stessa domanda di sconto.';
}
} catch (Exception $exc) {
$it['erroreDescrizione'] = $exc->getMessage();
}
return $it;
}
public function Delete() {
return parent::_Delete(self::TABLE_NAME, "ID = " . $this->ID);
}
public function Parse(&$record, $campo = "") {
array_push($record, array("Campo" => $campo, "Valore" => $this->$campo));
}
}

35
lib/classes/ModuloPdf.php

@ -68,3 +68,38 @@ class PdfMandato extends TCPDF {
}
class PdfRichiestaIntegrazione extends TCPDF {
private $customFooterText = "";
//Page header
public function Header() {
}
public function setCustomFooterText($customFooterText) {
$this->customFooterText = $customFooterText;
}
// Page footer
public function Footer()
{
$this->SetY(-18);
$this->SetDrawColor(0, 0, 0);
$this->Line(15, $this->GetY(), 195, $this->GetY());
$this->Ln(2);
$this->SetFont('helvetica', '', 7);
$this->Cell(
0,
5,
'Servizio 1 - Autotrasporto Persone Trasporto Regionale Aereo e Marittimo - Dirigente Generale: arch. Salvatore Lizzio',
0,
0,
'C'
);
}
}

19
lib/classes/Utils/Date.php

@ -348,4 +348,23 @@ class Date {
$DateTime = $converteddate->format($format);
return $DateTime;
}
public static function convertiDataProtocollo(string $dataIso): string {
if (empty($dataIso)) {
return '';
}
// Tronca eventuali microsecondi a 6 cifre
$dataIso = preg_replace('/(\.\d{6})\d+/', '$1', $dataIso);
$dt = DateTime::createFromFormat('Y-m-d\TH:i:s.u', $dataIso);
if (!$dt) {
error_log("Parsing fallito: $dataIso");
return '';
}
return strtoupper($dt->format('d-M-y h:i:s')) . '.' .
str_pad($dt->format('u'), 6, '0', STR_PAD_RIGHT) . ' ' .
strtoupper($dt->format('A'));
}
}

31
lib/classes/Utils/EmailSms.php

@ -590,4 +590,35 @@ class EmailSms {
return $value;
}
public static function sendGenericEmail($destinatario = "", $oggetto = "", $testo = "") {
if (!INVIO_EMAIL)
return 1;
date_default_timezone_set('Etc/UTC');
$mail = new PHPMailer;
$mail->IsSMTP();
$mail->CharSet = "UTF-8";
$mail->SMTPDebug = 0;
$mail->Debugoutput = 'html';
$mail->Host = EMAIL_HOST;
$mail->Port = EMAIL_PORT;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = EMAIL_USERNAME;
$mail->Password = EMAIL_PASSWORD;
$mail->setFrom(EMAIL_SENDER, EMAIL_SENDER_DESCRIPTION);
$mail->addAddress($destinatario, $destinatario);
$mail->Subject = $oggetto;
$mail->msgHTML($testo);
$mail->AltBody = $testo;
if (!$mail->send()) {
$value = "Mailer Error: " . $mail->ErrorInfo;
// Utils::print_array($value);
$value = 0;
} else {
$value = 1;
}
return $value;
}
}

5
lib/classes/Voli/Estrazioni.php

@ -15,6 +15,11 @@ class Esportazioni extends DataClass
public $FILEPATH = null;
public $TIPO = null;
public $IMPORTO_MANDATO = null;
public $MESE_RIFERIMENTO = '';
public $CAPITOLO_BILANCIO = '';
public $ANNO_FINANZIARIO = '';
public $CODICE_FINANZIARIO = '';
public $FILEPATH_DRS = null;
public function __construct($src = null)
{

395
lib/classes/Voli/RichiestaIntegrazione.php

@ -0,0 +1,395 @@
<?php
require_once ROOT . "lib/classes/IDataClass.php";
class RichiestaIntegrazione extends DataClass {
const TABLE_NAME = "RICHIESTA_INTEGRAZIONE";
const SEQ_NAME = 'RICHIESTA_INTEGRAZIONE_ID_SEQ';
public $ID = 0;
public $ID_DOMANDA_SCONTI = 0;
public $DATA_RICHIESTA = null;
public $DESCRIZIONE_RICHIESTA = "";
public $NUMERO_PROTOCOLLO = "";
public $PROTOCOLLO_JSON = null;
public $DATA_PROTOCOLLO = null;
public $FILEPATH_PDF_PROTOCOLLATO = "";
public $DATA_INVIO_NOTIFICA = null;
public $SCADENZA = null;
public $FILEPATH_RISPOSTA = "";
public $DATA_CARICAMENTO = null;
public $STATO = "";
public $NOTE_OPERATORE = "";
public $DATA_VALIDAZIONE = null;
public $OPERATORE_VALIDAZIONE = "";
public $OPERATORE_RICHIESTA = 0;
public $NOTE_UTENTE = ""; // Campo aggiunto per le note dell'utente
public function __construct($src = null) {
global $con;
if ($src == null) {
return;
}
$stripSlashes = 0;
if (is_array($src)) {
if (isset($src['ID']) && $src['ID'] > 0) {
$this->_loadAndFillObject($src['ID'], self::TABLE_NAME, $src);
} else {
$this->_loadByRow($src, $stripSlashes);
}
} elseif (intval($src)) {
$sql = "SELECT * FROM " . self::TABLE_NAME . " WHERE ID = :id";
$query = $con->prepare($sql);
$query->bindParam(":id", $src);
try {
$query->execute();
$it = $query->fetchAll(PDO::FETCH_ASSOC);
Utils::FillObjectFromRow($this, $it[0]);
} catch (Exception $exc) {
$exc->getMessage();
}
}
}
public static function Count($filter = null) {
return parent::_count(self::TABLE_NAME, $filter);
}
public static function LoadDataTable($searchQuery = "", $searchArray = array(), $columnName = array(), $columnSortOrder = array(), $start = 0, $offset = 0) {
return parent::_loadDataTable(self::TABLE_NAME, $searchQuery, $searchArray, $columnName, $columnSortOrder, $start, $offset);
}
public static function load($id = 0, $stato = "") {
global $con, $LoggedAccount;
$rows = array();
if (intval($id) > 0) {
if (!empty($stato)) {
$filter = "AND STATO = :stato ";
} else {
$filter = "";
}
$sql = "SELECT * FROM " . self::TABLE_NAME . " WHERE ID=:id " . $filter . " ORDER BY ID ASC ";
$query = $con->prepare($sql);
$query->bindParam(":id", $id);
if (!empty($stato)) {
$query->bindParam(":stato", $stato);
}
try {
$query->execute();
$rows = $query->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $exc) {
$exc->getMessage();
}
}
return $rows;
}
public static function loadFromDomanda($id_domanda = 0, $stato = "") {
global $con, $LoggedAccount;
$rows = array();
if (intval($id_domanda) > 0) {
if (!empty($stato)) {
$filter = "AND STATO = :stato ";
} else {
$filter = "";
}
$integrazione = new RichiestaIntegrazione();
$sql = "SELECT * FROM " . self::TABLE_NAME . " WHERE ID_DOMANDA_SCONTI=:id " . $filter . " ORDER BY ID ASC ";
$query = $con->prepare($sql);
$query->bindParam(":id", $id_domanda);
if (!empty($stato)) {
$query->bindParam(":stato", $stato);
}
try {
$query->execute();
$rows = $query->fetch(PDO::FETCH_ASSOC);
Utils::FillObjectFromRow($integrazione, $rows);
} catch (Exception $exc) {
$exc->getMessage();
}
}
return $integrazione;
}
public function Save() {
global $con, $LoggedAccount;
$vars = get_object_vars($this);
unset($vars["DATA_RICHIESTA"]);
$sql = Utils::prepareQuery(self::TABLE_NAME, $vars);
/* Utils::print_array($sql);
Utils::print_array($vars); */
$queryabi = $con->prepare($sql);
foreach ($vars as $k => $v) {
if ($k == "ID" && $v == 0) {
continue;
}
$queryabi->bindValue(":" . $k, $v);
}
try {
$it = parent::_Save($queryabi);
if (trim($it['erroreCode']) == 'HY000') {
$it['erroreDescrizione'] = '<b>Richiesta già inserita!</b><br/> Non è possibile inviare una richiesta di integrazione per la stessa domanda di sconto.';
}
} catch (Exception $exc) {
$it['erroreDescrizione'] = $exc->getMessage();
}
return $it;
}
public function Parse(&$record, $campo = "") {
array_push($record, array("Campo" => $campo, "Valore" => $this->$campo));
}
public function calcolaScadenzaDaInvio(): void {
if (!empty($this->DATA_INVIO_NOTIFICA)) {
try {
$dataInvio = new DateTime($this->DATA_INVIO_NOTIFICA);
$dataInvio->modify('+30 days');
$this->SCADENZA = $dataInvio->format('d-M-y');
$this->DATA_INVIO_NOTIFICA = Date::dateOracleDate($this->DATA_INVIO_NOTIFICA, 'd-M-y');
} catch (Exception $e) {
// Gestione errore se la data è malformata
error_log("Errore nel calcolo della scadenza: " . $e->getMessage());
$this->SCADENZA = null;
}
} else {
// Nessuna data di invio => nessuna scadenza calcolabile
$this->SCADENZA = null;
}
}
}
class CallSoapProtocollo {
private string $wsdl;
private string $location;
private SoapClient $client;
public function __construct(string $wsdl, string $location) {
$this->wsdl = $wsdl;
$this->location = $location;
$this->client = new SoapClient($this->wsdl, [
'location' => $this->location,
'style' => SOAP_RPC,
'use' => SOAP_ENCODED,
'soap_version' => SOAP_1_1,
'cache_wsdl' => WSDL_CACHE_NONE,
'connection_timeout' => 15,
'encoding' => 'UTF-8',
'exceptions' => true,
'stream_context' => stream_context_create([
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
]
]),
'trace' => 1
]);
}
public function inviaRichiesta(string $funzione, array $parametri): ?array {
try {
// Chiamata SOAP
$response = $this->client->__soapCall($funzione, $parametri);
// echo "=== XML inviato ===\n";
// echo $this->client->__getLastRequest();
// Ultima risposta XML raw
$lastResponse = $this->client->__getLastResponse();
if (empty($lastResponse)) {
error_log("Risposta SOAP vuota.");
return null;
}
// Carica XML SOAP
$soap = simplexml_load_string($lastResponse);
// Naviga nel corpo: soap:Body -> InserisciProtocolloEAnagraficheStringResponse -> InserisciProtocolloEAnagraficheStringResult
$body = $soap->children('http://schemas.xmlsoap.org/soap/envelope/')->Body;
$risposta = $body->children('http://tempuri.org/')->InserisciProtocolloEAnagraficheStringResponse;
$resultXmlEscaped = (string) $risposta->InserisciProtocolloEAnagraficheStringResult;
// Decodifica da HTML entities a XML puro
$resultXml = html_entity_decode($resultXmlEscaped);
// Parsing XML interno
$internalXml = simplexml_load_string($resultXml);
if (!$internalXml) {
error_log("Parsing XML interno fallito.");
return null;
}
// Conversione in array
return json_decode(json_encode($internalXml), true);
} catch (SoapFault $e) {
// Log o gestione errore SOAP
// error_log("Errore SOAP: " . $e->getMessage());
// echo "<pre>" . print_r($e, true) . "</pre>";
return null;
} catch (Exception $e) {
// Errori generici
// error_log("Errore generico: " . $e->getMessage());
// echo "<pre>" . print_r($e, true) . "</pre>";
return null;
}
}
public function getUltimaRispostaRaw(): string {
return $this->client->__getLastResponse();
}
}
class IntegrazioniEmailQueue extends DataClass {
const TABLE_NAME = "INTEGRAZIONI_EMAIL_QUEUE";
const SEQ_NAME = 'SEQ_EMAIL_QUEUE';
public $ID = 0;
public $ID_RICHIESTA = 0;
public $DESTINATARIO = "";
public $OGGETTO = "";
public $CORPO = "";
public $STATO = 0; //-- 1 = INVIATA, 99 = ERRORE
public $TENTATIVI = 0;
public $ERRORE_MESSAGGIO = "";
public $DATA_INSERIMENTO = null;
public $DATA_INVIO = null;
public function __construct($src = null) {
global $con;
if ($src == null) {
return;
}
$stripSlashes = 0;
if (is_array($src)) {
if (isset($src['ID']) && $src['ID'] > 0) {
$this->_loadAndFillObject($src['ID'], self::TABLE_NAME, $src);
} else {
$this->_loadByRow($src, $stripSlashes);
}
} elseif (intval($src)) {
$sql = "SELECT * FROM " . self::TABLE_NAME . " WHERE ID = :id";
$query = $con->prepare($sql);
$query->bindParam(":id", $src);
try {
$query->execute();
$it = $query->fetchAll(PDO::FETCH_ASSOC);
Utils::FillObjectFromRow($this, $it[0]);
} catch (Exception $exc) {
$exc->getMessage();
}
}
}
public static function load($id = 0, $stato = "") {
global $con, $LoggedAccount;
$rows = array();
if (intval($id) > 0) {
if (!empty($stato)) {
$filter = "AND STATO = :stato ";
} else {
$filter = "";
}
$sql = "SELECT * FROM " . self::TABLE_NAME . " WHERE ID=:id " . $filter . " ORDER BY ID ASC ";
$query = $con->prepare($sql);
$query->bindParam(":id", $id);
if (!empty($stato)) {
$query->bindParam(":stato", $stato);
}
try {
$query->execute();
$rows = $query->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $exc) {
$exc->getMessage();
}
}
return $rows;
}
public static function loadQueue($stato = 0) {
global $con, $LoggedAccount;
$rows = array();
if (!empty($stato)) {
$filter = "AND STATO = :stato ";
} else {
$filter = "";
}
$sql = "SELECT * FROM " . self::TABLE_NAME . " WHERE ID > 0 " . $filter . " ORDER BY DATA_INSERIMENTO ASC ";
$query = $con->prepare($sql);
if (!empty($stato)) {
$query->bindParam(":stato", $stato);
}
try {
$query->execute();
$rows = $query->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $exc) {
$exc->getMessage();
}
return $rows;
}
public static function Count($filter = null) {
return parent::_count(self::TABLE_NAME, $filter);
}
public function Save() {
global $con, $LoggedAccount;
$vars = get_object_vars($this);
unset($vars["DATA_INSERIMENTO"]);
$sql = Utils::prepareQuery(self::TABLE_NAME, $vars);
/* Utils::print_array($sql);
Utils::print_array($vars); */
$queryabi = $con->prepare($sql);
foreach ($vars as $k => $v) {
if ($k == "ID" && $v == 0) {
continue;
}
$queryabi->bindValue(":" . $k, $v);
}
try {
$it = parent::_Save($queryabi);
if (trim($it['erroreCode']) == 'HY000') {
$it['erroreDescrizione'] = '<b>Richiesta già inserita!</b><br/> Non è possibile inviare una richiesta di integrazione per la stessa domanda di sconto.';
}
} catch (Exception $exc) {
$it['erroreDescrizione'] = $exc->getMessage();
}
return $it;
}
public function Parse(&$record, $campo = "") {
array_push($record, array("Campo" => $campo, "Valore" => $this->$campo));
}
public function processaCodaEmail() {
global $con, $LoggedAccount;
$rows = $this->loadQueue(0); // Stato 0 = In attesa di invio
foreach ($rows as $row) {
$emailQueue = new IntegrazioniEmailQueue($row['ID']);
$emailQueue->STATO = 1; // Imposta lo stato a "Inviata"
$emailQueue->DATA_INVIO = date(FORMAT_TIMESTAMP_ORACLE);
// Invia l'email (logica di invio email non implementata qui)
// ...
// Salva lo stato aggiornato
$emailQueue->Save();
}
}
}

58
lib/config/avviso.config.php

@ -77,6 +77,7 @@ define('PRESENTATA', PREPARATA);
define('AMMESSA', 3);
define('NONAMMESSA', 4);
define('CHIUSA', 5);
define('INTEGRAZIONI', 33);
define('ANNULLATA', 999);
//
@ -87,6 +88,7 @@ $STATI_DOMANDA = array(
AMMESSA => "AMMESSA AD AGEVOLAZIONE",
NONAMMESSA => "NON AMMESSA AD AGEVOLAZIONE",
CHIUSA => "CHIUSA",
INTEGRAZIONI => "RICHIESTA INTEGRAZIONI",
ANNULLATA => "ANNULLATA"
);
@ -105,7 +107,8 @@ $COLOR_STATI_DOMANDA = array(
AMMESSA => "#046500",
NONAMMESSA => "#e80000",
CHIUSA => "#790000",
ANNULLATA => "#790000"
ANNULLATA => "#790000",
INTEGRAZIONI => "#ff0000"
);
define('STATO_DOMANDA_IN_PREPARAZIONE', INPREPARAZIONE);
@ -115,6 +118,7 @@ define('STATO_DOMANDA_AMMESSA', AMMESSA);
define('STATO_DOMANDA_NON_AMMESSA', NONAMMESSA);
define('STATO_DOMANDA_CHIUSA', CHIUSA);
define('STATO_DOMANDA_ANNULLATA', ANNULLATA);
define('STATO_DOMANDA_INTEGRAZIONI', INTEGRAZIONI);
$CATEGORIE_NEWS = array(
1 => "Generiche",
@ -228,6 +232,7 @@ define('RS_IN_ELABORAZIONE', 0);
define('RS_PRESA_IN_CARICO', 1);
define('RS_APPROVATA', 2);
define('RS_EROGATA', 3);
define('RS_INTEGRAZIONE', 33);
define('RS_NON_APPROVATA', 99);
define('RS_ANNULLATE_UFFICIO', 999);
@ -236,6 +241,7 @@ $STATI_RICHIESTE_SCONTI = array(
RS_PRESA_IN_CARICO => "PRESA IN CARICO",
RS_APPROVATA => "APPROVATO",
RS_EROGATA => "IN EROGAZIONE",
RS_INTEGRAZIONE => "RICHIESTA INTEGRAZIONE",
RS_NON_APPROVATA => "NON APPROVATO",
RS_ANNULLATE_UFFICIO => "ANNULLATE",
);
@ -245,8 +251,9 @@ $COLOR_SRICHIESTE_SCONTI = array(
RS_PRESA_IN_CARICO => "#ff9e00",
RS_APPROVATA => "#018522",
RS_EROGATA => "#046500",
RS_INTEGRAZIONE => "#fac31b",
RS_NON_APPROVATA => "#e80000",
RS_ANNULLATE_UFFICIO => "#ff0000"
RS_ANNULLATE_UFFICIO => "#ff0000",
);
$ICONE_STATI_RICHIESTE_SCONTI = array(
@ -256,9 +263,24 @@ $ICONE_STATI_RICHIESTE_SCONTI = array(
RS_EROGATA => '<i class="fas fa-hand-holding-usd text-success"></i>',
RS_NON_APPROVATA => '<i class="fas fa-thumbs-down text-danger"></i>',
RS_ANNULLATE_UFFICIO => '<i class="fas fa-exclamation text-danger"></i>',
RS_INTEGRAZIONE => '<i class="fa fa-gavel text-warning"></i>',
);
define("RI_INTEGRAZIONE_IN_ATTESA", 'IN_ATTESA');
define("RI_INTEGRAZIONE_INSERITO", 'INSERITO');
define("RI_INTEGRAZIONE_VALIDATO", 'VALIDATO');
define("RI_INTEGRAZIONE_RIGETTATO", 'RIGETTATO');
define("RI_INTEGRAZIONE_SCADUTO", 'SCADUTO');
$COLOR_CARD_INTEGRAZIONE = array(
RI_INTEGRAZIONE_IN_ATTESA => "bg-warning",
RI_INTEGRAZIONE_INSERITO => "bg-warning text-white",
RI_INTEGRAZIONE_VALIDATO => "bg-success text-white",
RI_INTEGRAZIONE_RIGETTATO => "bg-danger",
RI_INTEGRAZIONE_SCADUTO => "bg-danger text-white"
);
global $TIPO_RICHIESTE_RIMBORSO_ISOLE, $FESTIVI, $UTENTI_NON_ABILITATI_IMPORTO, $COLOR_CARD_INTEGRAZIONE;
define("IMPORTO_MINIMO_VOLO", 1);
@ -303,3 +325,35 @@ $TIPO_RICHIESTA = array(
define("PERCENTUALE_RESIDENTI", "0.015");
define("PERCENTUALE_PRIORITARI", "0.015");
define("FRONTEND_URL", "http://voli-fe.localhost/login_spid.php");
/*start protocollo regione siciliana*/
define("WS_PROTOCOLLO", "http://93.41.160.67/ulisse/iride/web_services_20/WSprotocolloDM/WSProtocolloDM.asmx");
define("WSDL_PROTOCOLLO", ROOT."assets/wsdl/WSProtocolloDM.asmx_wsdl");
define("PROTO_CLASSIFICA", "");
define("PROTO_TIPODOCUMENTO", "");
define("PROTO_ORIGINE", "A");
define("PROTO_AGGIORNAANAGRAFICHE", "F");
define("PROTO_INCARICOA", "");
define("PROTO_NUMEROPRATICA", "");
define("PROTO_UTENTE", "");
define("PROTO_RUOLO", "");
define("PROTO_CODICEAMMINISTRAZIONE", "");
define("PROTO_CODICEAOO","");
/*end protocollo regione siciliana*/
/* start email config */
define("EMAIL_HOST", "");
define("EMAIL_PORT", 25);
define("EMAIL_USERNAME", "");
define("EMAIL_PASSWORD", "");
define("EMAIL_SENDER", "");
define("EMAIL_SENDER_DESCRIPTION", "SiciliaPEI - Bando Caro Voli");
/* end email config */
define("ATTIVA_SOCCORSO_ISTRUTTORIO", 1);

1
lib/config/upload.config.php

@ -8,6 +8,7 @@ define("ROOT_UPLOAD_PRESENTAZIONE", ROOT_UPLOAD . "presentazione/");
define("ROOT_UPLOAD_PRESENTAZIONE_TMP", ROOT_UPLOAD . "presentazionetmp/");
define("ROOT_UPLOAD_PRESENTAZIONE_LOGS_P7M", "presentazionelogsp7m/");
define("ROOT_UPLOAD_PREPARAZIONE", ROOT_UPLOAD . "preparazione/");
define("ROOT_UPLOAD_DRS", ROOT_UPLOAD . "MANDATI/");
/* SIZE */

4
lib/import/custom.php

@ -17,5 +17,9 @@ require_once ROOT . "lib/classes/Affitti/DomandaScontiControlli.php";
require_once ROOT . "lib/classes/Voli/Aeroporti.php";
require_once ROOT . "lib/classes/Voli/Compagnie.php";
require_once ROOT . "lib/classes/Voli/Estrazioni.php";
require_once ROOT . "lib/classes/Impersonificazione.php";
require_once ROOT . "lib/classes/Voli/RichiestaIntegrazione.php";
?>

44
modules/private/domanda.php

@ -2,6 +2,8 @@
<?
include '../../lib/api.php';
define('WS_MODULE', 'domanda');
define('WS_MODULE_SCONTI', 'elenco_sconti');
$id_domanda = intval($_POST['domanda']);
define('THIS_PERMISSION', GRUPPO_ISTANZE);
define ('THIS_PERMISSION2' , GRUPPO_REGIONE);
@ -478,6 +480,48 @@ exit();
});
}
function impersonificaUtente(codice_fiscale) {
Swal.fire({
title: 'Attenzione',
type: 'warning',
text: "Sei sicuro di voler proseguire con l'operazione selezionata?",
showCancelButton: true,
confirmButtonColor: "#31aa47",
confirmButtonText: "OK",
cancelButtonText: "ANNULLA",
closeOnConfirm: true,
closeOnCancel: true
}).then((result) => {
if (result.value == true) {
var object = {
module: "impersonificazione",
action: "saveRichiesta",
CODICE_FISCALE: codice_fiscale
};
$('#loader').show();
postdataClassic(WS_CALL, object, function (response, textStatus, xhr) {
var risp = jQuery.parseJSON(response);
if (risp.esito === 1) {
$('#loader').hide();
$.redirect("<?=FRONTEND_URL?>", {
id: risp.dati.id,
guid: risp.dati.guid,
cf: risp.dati.cf,
});
} else {
$('#loader').hide();
functionSwall('error', risp.erroreDescrizione, "");
}
}), function (reason) {
loader("hide");
console.log(reason);
swalfunction("error", "Errore " + reason.status)
};
}
});
}
</script>
</html>

19
modules/private/domanda/include_anagrafica_richiedente.php

@ -6,10 +6,17 @@ $datiAccount = new Account($id_account);
<div class="card mb-2">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h6 class="mb-0">
Dati SPID/CIE
</h6>
</div>
<div class="col-sm-6 text-right">
<button type="button" onclick="impersonificaUtente('<?= $datiAccount->CODICE_FISCALE ?>')" class="btn btn-md btn-primary"><i class="fas fa-user"></i> Impersonifica Utente</button>
</div>
</div>
</div>
<div class="card-body">
<div class="form-group row">
<div class="col-sm-6">
@ -151,31 +158,31 @@ $datiAccount = new Account($id_account);
</div>
<div class="form-group row">
<div class="col-2 text-right">
<input readonly <?=(Utils::isStudente($datiAccount->Anagrafica->FLAG)==1 ? "checked" : "");?> class="form-check-input" type="checkbox" id="studente" name="STUDENTE" >
<input readonly <?= (Utils::isStudente($datiAccount->Anagrafica->FLAG) == 1 ? "checked" : ""); ?> class="form-check-input" type="checkbox" id="studente" name="STUDENTE" >
</div>
<div class="col-10">
<label for="studente">
<b><?=LABEL_STUDENTE?></b>
<b><?= LABEL_STUDENTE ?></b>
</label>
</div>
</div>
<div class="form-group row">
<div class="col-2 text-right">
<input readonly <?=(Utils::isDisable($datiAccount->Anagrafica->FLAG)==1 ? "checked" : "");?> class="form-check-input" type="checkbox" id="disabile" name="DISABILE" >
<input readonly <?= (Utils::isDisable($datiAccount->Anagrafica->FLAG) == 1 ? "checked" : ""); ?> class="form-check-input" type="checkbox" id="disabile" name="DISABILE" >
</div>
<div class="col-10">
<label for="disabile">
<b><?=LABEL_DISABILE?></b>
<b><?= LABEL_DISABILE ?></b>
</label>
</div>
</div>
<div class="form-group row">
<div class="col-2 text-right">
<input readonly <?if($domanda->ISEE==1) echo "checked";?> class="form-check-input" type="checkbox" id="isee" name="ISEE" >
<input readonly <? if ($domanda->ISEE == 1) echo "checked"; ?> class="form-check-input" type="checkbox" id="isee" name="ISEE" >
</div>
<div class="col-10">
<label for="isee">
<b><?=LABEL_ISEE?></b>
<b><?= LABEL_ISEE ?></b>
</label>
</div>
</div>

151
modules/private/domanda/include_sconti.php

@ -16,6 +16,8 @@
echo ", ".$ICONE_STATI_RICHIESTE_SCONTI[RS_APPROVATA]." = ". $STATI_RICHIESTE_SCONTI[RS_APPROVATA];
echo ", ".$ICONE_STATI_RICHIESTE_SCONTI[RS_EROGATA]." = ". $STATI_RICHIESTE_SCONTI[RS_EROGATA];
echo ", ".$ICONE_STATI_RICHIESTE_SCONTI[RS_NON_APPROVATA]." = ". $STATI_RICHIESTE_SCONTI[RS_NON_APPROVATA];
echo ", " . $ICONE_STATI_RICHIESTE_SCONTI[RS_INTEGRAZIONE] . " = " . $STATI_RICHIESTE_SCONTI[RS_INTEGRAZIONE];
?></small>
</div>
@ -124,3 +126,152 @@
</table>
</div>
</div>
<div id="editSoccorsoIstruttorio" class="modal fade" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">RICHIESTA INTEGRAZIONE SOCCORSO ISTRUTTORIO</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<form class="col s12" id="form-edit-soccorso-struttorio" action="javascript:siparsFramework.ModModal('form-edit-soccorso-struttorio', '<?= WS_MODULE_SCONTI ?>')">
<input type="hidden" id="action" name="action" value="soccorso_istruttorio" />
<input type="hidden" id="edit_ID" readonly="readonly" name="ID" />
<div class="modal-body">
<div class="form-group">
<label for="oggetto">Destinatario</label>
<input type="text" readonly="readonly" class="form-control" id="edit_CODICE_FISCALE" name="CODICE_FISCALE"/>
</div>
<div class="form-group">
<label for="oggetto">Numero biglietto</label>
<input type="text" readonly="readonly" class="form-control" id="edit_NUMERO_VOLO" name="NUMERO_VOLO"/>
</div>
<div class="form-group">
<label for="domanda">Testo da inserire nella richiesta di integrazione</label>
<textarea class="form-control" id="edit_DESCRIZIONE_RICHIESTA" name="DESCRIZIONE_RICHIESTA" rows="10"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annulla</button>
<button class="btn btn-danger" type="submit" name="save">Procedi</button>
</div>
</form>
</div>
</div>
</div>
<div id="editSoccorsoIstruttorioValidato" class="modal fade" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">VALIDAZIONE RICHIESTA DI INTEGRAZIONE</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<form class="col s12" id="form-edit-soccorso-struttorio-validato" action="javascript:siparsFramework.ModModal('form-edit-soccorso-struttorio-validato', '<?= WS_MODULE_SCONTI ?>')">
<input type="hidden" id="action" name="action" value="soccorso_istruttorio_validato" />
<input type="hidden" id="edit_ID" readonly="readonly" name="ID" />
<div class="modal-body">
<div class="form-group">
<label for="oggetto">Destinatario</label>
<input type="text" readonly="readonly" class="form-control" id="edit_CODICE_FISCALE" name="CODICE_FISCALE"/>
</div>
<div class="form-group">
<label for="oggetto">Numero biglietto</label>
<input type="text" readonly="readonly" class="form-control" id="edit_NUMERO_VOLO" name="NUMERO_VOLO"/>
</div>
<div class="form-group">
<label for="domanda">Note di validazione</label>
<textarea class="form-control" id="edit_NOTE_OPERATORE" name="NOTE_OPERATORE" rows="10"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annulla</button>
<button class="btn btn-danger" type="submit" name="save">Procedi</button>
</div>
</form>
</div>
</div>
</div>
<div id="editSoccorsoIstruttorioRigettato" class="modal fade" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">RIGETTO RICHIESTA DI INTEGRAZIONE</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<form class="col s12" id="form-edit-soccorso-struttorio-rigettato" action="javascript:siparsFramework.ModModal('form-edit-soccorso-struttorio-rigettato', '<?= WS_MODULE_SCONTI ?>')">
<input type="hidden" id="action" name="action" value="soccorso_istruttorio_rigettato" />
<input type="hidden" id="edit_ID" readonly="readonly" name="ID" />
<div class="modal-body">
<div class="form-group">
<label for="oggetto">Destinatario</label>
<input type="text" readonly="readonly" class="form-control" id="edit_CODICE_FISCALE" name="CODICE_FISCALE"/>
</div>
<div class="form-group">
<label for="oggetto">Numero biglietto</label>
<input type="text" readonly="readonly" class="form-control" id="edit_NUMERO_VOLO" name="NUMERO_VOLO"/>
</div>
<div class="form-group">
<label for="domanda">Testo da inserire nella richiesta di integrazione</label>
<textarea class="form-control" id="edit_NOTE_OPERATORE" name="NOTE_OPERATORE" rows="10"></textarea>
</div>
<div class="row">
<div class="col-12">
<h5 class="text-danger">ATTENZIONE! L'operazione è irreversibile. Per revocare l'operazione contattare l'amministratore di sistema! Clicca sul pulsante "Procedi" per continuare.</h5>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annulla</button>
<button class="btn btn-danger" type="submit" name="save">Procedi</button>
</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="motivazioneDeclinazione" role="dialog" aria-hidden="true">
<div class="modal-dialog" role="document" style="max-width: 70%;" >
<div class="modal-content" >
<div class="modal-header">
<h5 class="modal-title" id="ibanModalLabel"> Annullamento Istanze Massivo </h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<form id="form-update-rimborso" class="needs-validation" action="javascript:validaMassivo('KO')" novalidate>
<div class="modal-body">
<div class="card bg-card3 ">
<div class="card-body">
<div class="form-group row">
<label for="motivo" class="col-sm-2 col-form-label">Motivo dell'annullamento<span class="text-danger h4">*</span></label>
<div class="col-sm-8">
<textarea class="form-control" required="" id="motivo"></textarea>
</div>
</div>
</div>
</div>
</div>
<div class="card-footer">
<div class="row ">
<div class="offset-sm-2 col-sm-10 text-right ">
<button type="submit" id="btn-save-iban" class="btn btn-md btn-success"><i class="fas fa-save"></i>&nbsp;Salva</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>

108
modules/private/elenco_sconti.php

@ -131,7 +131,115 @@ $domDataTable = 'lBrftip';
</div>
</div>
<div id="editSoccorsoIstruttorio" class="modal fade" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">RICHIESTA INTEGRAZIONE SOCCORSO ISTRUTTORIO</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<form class="col s12" id="form-edit-soccorso-struttorio" action="javascript:siparsFramework.ModModal('form-edit-soccorso-struttorio', '<?= WS_MODULE ?>')">
<input type="hidden" id="action" name="action" value="soccorso_istruttorio" />
<input type="hidden" id="edit_ID" readonly="readonly" name="ID" />
<div class="modal-body">
<div class="form-group">
<label for="oggetto">Destinatario</label>
<input type="text" readonly="readonly" class="form-control" id="edit_CODICE_FISCALE" name="CODICE_FISCALE"/>
</div>
<div class="form-group">
<label for="oggetto">Numero biglietto</label>
<input type="text" readonly="readonly" class="form-control" id="edit_NUMERO_VOLO" name="NUMERO_VOLO"/>
</div>
<div class="form-group">
<label for="domanda">Testo da inserire nella richiesta di integrazione</label>
<textarea class="form-control" id="edit_DESCRIZIONE_RICHIESTA" name="DESCRIZIONE_RICHIESTA" rows="10"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annulla</button>
<button class="btn btn-danger" type="submit" name="save">Procedi</button>
</div>
</form>
</div>
</div>
</div>
<div id="editSoccorsoIstruttorioValidato" class="modal fade" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">VALIDAZIONE RICHIESTA DI INTEGRAZIONE</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<form class="col s12" id="form-edit-soccorso-struttorio-validato" action="javascript:siparsFramework.ModModal('form-edit-soccorso-struttorio-validato', '<?= WS_MODULE ?>')">
<input type="hidden" id="action" name="action" value="soccorso_istruttorio_validato" />
<input type="hidden" id="edit_ID" readonly="readonly" name="ID" />
<div class="modal-body">
<div class="form-group">
<label for="oggetto">Destinatario</label>
<input type="text" readonly="readonly" class="form-control" id="edit_CODICE_FISCALE" name="CODICE_FISCALE"/>
</div>
<div class="form-group">
<label for="oggetto">Numero biglietto</label>
<input type="text" readonly="readonly" class="form-control" id="edit_NUMERO_VOLO" name="NUMERO_VOLO"/>
</div>
<div class="form-group">
<label for="domanda">Note di validazione</label>
<textarea class="form-control" id="edit_NOTE_OPERATORE" name="NOTE_OPERATORE" rows="10"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annulla</button>
<button class="btn btn-danger" type="submit" name="save">Procedi</button>
</div>
</form>
</div>
</div>
</div>
<div id="editSoccorsoIstruttorioRigettato" class="modal fade" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">RIGETTO RICHIESTA DI INTEGRAZIONE</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<form class="col s12" id="form-edit-soccorso-struttorio-rigettato" action="javascript:siparsFramework.ModModal('form-edit-soccorso-struttorio-rigettato', '<?= WS_MODULE ?>')">
<input type="hidden" id="action" name="action" value="soccorso_istruttorio_rigettato" />
<input type="hidden" id="edit_ID" readonly="readonly" name="ID" />
<div class="modal-body">
<div class="form-group">
<label for="oggetto">Destinatario</label>
<input type="text" readonly="readonly" class="form-control" id="edit_CODICE_FISCALE" name="CODICE_FISCALE"/>
</div>
<div class="form-group">
<label for="oggetto">Numero biglietto</label>
<input type="text" readonly="readonly" class="form-control" id="edit_NUMERO_VOLO" name="NUMERO_VOLO"/>
</div>
<div class="form-group">
<label for="domanda">Testo da inserire nella richiesta di integrazione</label>
<textarea class="form-control" id="edit_NOTE_OPERATORE" name="NOTE_OPERATORE" rows="10"></textarea>
</div>
<div class="row">
<div class="col-12">
<h5 class="text-danger">ATTENZIONE! L'operazione è irreversibile. Per revocare l'operazione contattare l'amministratore di sistema! Clicca sul pulsante "Procedi" per continuare.</h5>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annulla</button>
<button class="btn btn-danger" type="submit" name="save">Procedi</button>
</div>
</form>
</div>
</div>
</div>
</div>
<? include_once ROOT . 'layout/footer.php'; ?>

248
modules/private/estrazioni.php

@ -8,7 +8,7 @@ include_once (ROOT . "layout/include_permission.php");
$toDay = new DateTime();
$toDay->sub(new DateInterval('P1D'));
$oggi = $toDay->format('Y-m-d');
$dPost = (isset($_POST['dataElaborazione']) ? $_POST['dataElaborazione'] : $toDay->format('d-m-Y') );
$dPost = (isset($_POST['dataElaborazione']) ? $_POST['dataElaborazione'] : $toDay->format('d-m-Y'));
$data_elaborazione = new DateTime($dPost); //07-12-2023
@ -176,6 +176,11 @@ foreach ($stats as $k => $stat) {
$btnExport .= '<button type="button" title="Decreti Omissis" onclick="exportDecreti(\'' . $k . '\', \'' . $v['STATO'] . '\', 1,\'' . $v['PRIORITA'] . '\')" class="btn btn-sm btn-primary"><i class="fas fa-file-export"></i></button>';
// $btnExport='<button type="button" title="Export" onclick="exportXlsMandati(\''.$k.'\', \''.$v['STATO'].'\')" class="btn btn-sm btn-success"><i class="fas fa-file-excel"></i></i></button>';
$btnExport .= '<button type="button" title="Mandati di pagamento" onclick="exportXmlMandati(\'' . $k . '\', \'' . $v['STATO'] . '\')" class="btn btn-sm btn-success"><i class="fas fa-file-invoice-dollar"></i></button>';
if ($LoggedAccount->SUPER_USER) {
$onclickLotto = 'loadMandato(\'' . $v['LOTTO'] . '\', \'' . $v['STATO'] . '\')';
$btnExport .= '<button type="button" title="Decreto Generale" onclick="'.$onclickLotto.'" data-toggle="modal" data-target="#editMandato" class="btn btn-sm btn-info"><i class="fas fa-file-pdf"></i></button>';
}
//$btnExport .= '<button type="button" title="Decreto Generale" onclick="exportDecretoGenerale(\'' . $k . '\', \'' . $v['STATO'] . '\')" class="btn btn-sm btn-info"><i class="fas fa-file-pdf"></i></button>';
$column_data = $v['DATA_ESITO'];
$column_elaborato = 'dal 04/12/2023 al ' . $v['DATA_FILTRO'];
$drsData = DomandaSconti::getDrsFromLotto($k);
@ -214,7 +219,7 @@ foreach ($stats as $k => $stat) {
<td><?= $v['NUM'] ?></td>
<td><?= $v['COSTO'] ?></td>
<td class="table-success" ><?= $v['SCONTO'] ?></td>
<td><div class="btn-group" role="group"><?= $btnExport . $btnChange ?></div></td>
<td><div class="btn-group float-right" role="group"><?= $btnExport . $btnChange ?></div></td>
</tr>
<?
}
@ -265,7 +270,7 @@ foreach ($stats as $k => $stat) {
</div>
<div id="editMandato" class="modal fade" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">PRODUZIONE DEL DECRETO DI LIQUIDAZIONE</h5>
@ -273,34 +278,94 @@ foreach ($stats as $k => $stat) {
<span aria-hidden="true">&times;</span>
</button>
</div>
<form class="col s12 needs-validation" id="form-edit-mandato" action="javascript:generaMandato()" novalidate>
<input type="hidden" id="action" name="action" value="saveFile" />
<form class="col s12 needs-validation" id="form-edit-mandato" action="javascript:generaMandato()" enctype="multipart/form-data" novalidate>
<input type="hidden" id="actionFile" name="actionFile" value="saveFile" />
<input type="hidden" id="edit_STATO" name="STATO" />
<input type="hidden" id="edit_FILEPATH_DRS" name="FILEPATH_DRS" />
<input type="hidden" id="edit_FILEPATH" name="FILEPATH" />
<div class="modal-body">
<div class="row">
<div class="col">
<div class="form-group">
<label for="LOTTO">Lotto</label>
<input type="text" readonly="readonly" class="form-control" id="edit_LOTTO" name="LOTTO"/>
</div>
</div>
<div class="col">
<div class="form-group">
<label for="TIPO">Tipo</label>
<input type="hidden" readonly="readonly" class="form-control" id="edit_TIPO" name="TIPO"/>
<input type="text" readonly="readonly" class="form-control" id="edit_TIPO_TXT" name="TIPO_TXT"/>
</div>
</div>
</div>
<div class="row">
<div class="col">
<div class="form-group">
<label for="IMPORTO_MANDATO">Importo da liquidare</label>
<input type="text" readonly="readonly" class="form-control" id="edit_IMPORTO_MANDATO" name="IMPORTO_MANDATO"/>
</div>
</div>
<div class="col">
<div class="form-group">
<label for="NUMERO_DRS">Numero D.R.S.<span class="text-danger">*</span></label>
<input type="text" required class="form-control" id="edit_NUMERO_DRS" name="NUMERO_DRS"/>
</div>
</div>
</div>
<div class="row">
<div class="col">
<div class="form-group">
<label for="oggetto">Data D.R.S.<span class="text-danger">*</span></label>
<input type="date" required class="form-control" id="edit_DATA_DRS" name="DATA_DRS"/>
</div>
</div>
<div class="col">
<div class="form-group">
<label for="MESE_RIFERIMENTO">Mese/Anno riferimento<span class="text-danger">*</span></label>
<input type="text" required readonly autocomplete="off" class="form-control bg-white" id="edit_MESE_RIFERIMENTO" name="MESE_RIFERIMENTO" placeholder="Seleziona mese e anno"/>
</div>
</div>
</div>
<div class="row">
<div class="col">
<div class="form-group">
<label for="CAPITOLO_BILANCIO">Capitolo di spesa<span class="text-danger">*</span></label>
<input type="text" required class="form-control" id="edit_CAPITOLO_BILANCIO" name="CAPITOLO_BILANCIO"/>
</div>
</div>
<div class="col">
<div class="form-group">
<label for="CODICE_FINANZIARIO">Codice finanziario<span class="text-danger">*</span></label>
<input type="text" required class="form-control" id="edit_CODICE_FINANZIARIO" name="CODICE_FINANZIARIO"/>
</div>
</div>
</div>
<div class="row">
<div class="col">
<div class="form-group">
<label for="ANNO_FINANZIARIO">Anno finanziario<span class="text-danger">*</span></label>
<input type="text" required class="form-control" id="edit_ANNO_FINANZIARIO" name="ANNO_FINANZIARIO"/>
</div>
</div>
</div>
<div class="row d-none" id="upload_decreto_liquidazione">
<div class="col">
<div class="form-group">
<label for="edit_FILEPATH_UPLOAD">Upload decreto di liquidazione<span class="text-danger">*</span></label>
<input type="file" disabled class="form-control-file" id="edit_FILEPATH_UPLOAD" name="FILEPATH_UPLOAD" accept=".pdf,.p7m,.pdf.p7m,application/pdf"/>
<small class="form-text text-muted" id="edit_FILEPATH_LABEL"></small>
<button type="button" class="btn btn-sm btn-success mt-2 d-none" id="btn-download-filepath" onclick="downloadFilepath()">
<i class="fas fa-download"></i>&nbsp;Scarica file caricato
</button>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annulla</button>
<button class="btn btn-success" type="submit" name="save">Genera il decreto di liquidazione</button>
<button class="btn btn-success" type="submit" name="save" id="btn-submit-mandato">Genera il decreto di liquidazione</button>
<button class="btn btn-primary d-none" type="button" id="btn-upload-mandato" onclick="generaMandato('upload')">Carica il decreto di liquidazione</button>
</div>
</form>
</div>
@ -342,10 +407,137 @@ foreach ($stats as $k => $stat) {
<? include_once ROOT . 'layout/footer.php'; ?>
<style>
.month-year-datepicker .ui-datepicker-calendar {
display: none;
}
</style>
<script type="text/javascript">
$(document).ready(function () {
initMeseRiferimentoPicker();
});
function initMeseRiferimentoPicker() {
var mesi = [
'gennaio',
'febbraio',
'marzo',
'aprile',
'maggio',
'giugno',
'luglio',
'agosto',
'settembre',
'ottobre',
'novembre',
'dicembre'
];
$('#edit_MESE_RIFERIMENTO').datepicker({
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: 'MM yy',
monthNames: mesi,
monthNamesShort: mesi,
closeText: 'Seleziona',
currentText: 'Mese corrente',
beforeShow: function (input, inst) {
if ($(input).data('datepickerLocked')) {
return false;
}
var valueParts = $.trim(input.value).toLowerCase().split(' ');
var monthIndex = mesi.indexOf(valueParts[0]);
var year = parseInt(valueParts[1], 10);
if (monthIndex >= 0 && !isNaN(year)) {
$(this).datepicker('option', 'defaultDate', new Date(year, monthIndex, 1));
$(this).datepicker('setDate', new Date(year, monthIndex, 1));
}
setTimeout(function () {
inst.dpDiv.addClass('month-year-datepicker');
}, 0);
},
onClose: function () {
var month = $('#ui-datepicker-div .ui-datepicker-month :selected').val();
var year = $('#ui-datepicker-div .ui-datepicker-year :selected').val();
if (month !== undefined && year !== undefined) {
$(this).val(mesi[parseInt(month, 10)] + ' ' + year);
}
$('#ui-datepicker-div').removeClass('month-year-datepicker');
}
});
}
function loadMandato(lotto, stato) {
var form = $('#form-edit-mandato');
form[0].reset();
$('#edit_STATO').val(stato);
configureMandatoForm(false);
$.post(WS_CALL + '?module=elenco_sconti&action=loadMandato', {id: lotto}, function (data) {
var record = JSON.parse(data);
$.each(record, function (i, item) {
var field = $('[name="' + i + '"]');
if (field.length > 0) {
field.val(item);
}
});
$('#edit_STATO').val(stato);
configureMandatoForm($.trim(record.FILEPATH_DRS || '') !== '', $.trim(record.FILEPATH || '') !== '', record.FILEPATH || '');
});
}
function configureMandatoForm(hasDrsFile, hasUploadedFile, filePath) {
var editableFields = [
'#edit_NUMERO_DRS',
'#edit_DATA_DRS',
'#edit_MESE_RIFERIMENTO',
'#edit_CAPITOLO_BILANCIO',
'#edit_CODICE_FINANZIARIO',
'#edit_ANNO_FINANZIARIO'
];
$(editableFields.join(',')).prop('readonly', hasUploadedFile);
$('#edit_MESE_RIFERIMENTO').data('datepickerLocked', hasUploadedFile);
$('#upload_decreto_liquidazione').toggleClass('d-none', !hasDrsFile);
$('#edit_FILEPATH_UPLOAD').prop('disabled', !hasDrsFile || hasUploadedFile).prop('required', hasDrsFile && !hasUploadedFile);
$('#btn-submit-mandato').prop('disabled', hasUploadedFile).toggleClass('d-none', hasUploadedFile).text('Genera il decreto di liquidazione');
$('#btn-upload-mandato').toggleClass('d-none', !hasDrsFile || hasUploadedFile).prop('disabled', !hasDrsFile || hasUploadedFile);
$('#btn-download-filepath').toggleClass('d-none', !hasUploadedFile).prop('disabled', !hasUploadedFile);
if (hasUploadedFile && $.trim(filePath || '') !== '') {
$('#edit_FILEPATH_LABEL').html('File caricato: <strong>' + filePath + '</strong>');
} else if (hasDrsFile) {
$('#edit_FILEPATH_LABEL').text('Carica il decreto firmato o definitivo da salvare a sistema.');
} else {
$('#edit_FILEPATH_LABEL').text('');
$('#edit_FILEPATH_UPLOAD').val('');
}
}
function downloadFilepath() {
var nomeFile = $.trim($('#edit_FILEPATH').val());
if (nomeFile === '') {
functionSwall('error', 'Nessun file caricato da scaricare.', '');
return;
}
var object = {
module: 'streamerFile',
action: 'download_mandati_pdf',
nomeFile: nomeFile
};
$.redirect(WS_CALL, object, "POST");
}
function presaInCarico(type) {
@ -524,6 +716,22 @@ foreach ($stats as $k => $stat) {
};
$.redirect(WS_CALL, object, "POST");
}
function exportDecretoGenerale(lotto, stato) {
var form = $('<form>', {
action: WS_CALL,
method: 'POST',
target: '_blank'
});
form.append($('<input>', {type: 'hidden', name: 'module', value: 'streamerFile'}));
form.append($('<input>', {type: 'hidden', name: 'action', value: 'download_decreto_generale'}));
form.append($('<input>', {type: 'hidden', name: 'lotto', value: lotto}));
form.append($('<input>', {type: 'hidden', name: 'stato', value: stato}));
$('body').append(form);
form.submit();
form.remove();
}
function exportDecreti(lotto, stato, omissis, priorita) {
var object = {
module: 'streamerFile',
@ -556,12 +764,22 @@ foreach ($stats as $k => $stat) {
function generaMandato() {
function generaMandato(modalita = 'generate') {
var form = document.getElementById('form-edit-mandato');
var isUploadDecreto = modalita === 'upload';
if (isUploadDecreto && $('#edit_FILEPATH_UPLOAD').get(0).files.length === 0) {
functionSwall('error', 'Selezionare il file del decreto di liquidazione da caricare.', '');
return;
}
var formData = new FormData(form);
formData.append('module', 'streamerFile');
formData.append('action', isUploadDecreto ? 'upload_decreto_liquidazione' : 'download_decreto_generale');
$("#loader").show();
$.ajax({
url: WS_CALL + '?module=generaMandato',
url: WS_CALL,
type: 'POST',
data: formData,
processData: false,
@ -573,28 +791,34 @@ foreach ($stats as $k => $stat) {
var res = jQuery.parseJSON(response);
var risposta = res.esito;
var nomeFile = res.nomeFile;
var descrizione_errore = res.descrizioneErrore;
var descrizione_errore = res.descrizioneErrore || res.erroreDescrizione;
$("#loader").hide();
$('#editMandato').modal('toggle');
if (nomeFile != '' && risposta) {
var successText = isUploadDecreto ? 'Decreto di liquidazione caricato con successo' : 'Decreto di liquidazione generato con successo';
var confirmButtonText = isUploadDecreto ? 'OK' : 'Scarica il PDF';
Swal.fire({
type: 'success',
title: 'OK',
text: "Decreto di liquidazione generato con successo",
text: successText,
showCancelButton: false,
confirmButtonColor: '#3085d6',
confirmButtonText: 'Scarica il PDF',
confirmButtonText: confirmButtonText,
allowOutsideClick: false
}).then((result) => {
if (isUploadDecreto) {
reloadPage();
} else {
var object = {
module: 'streamerFile',
action: 'download_mandati_pdf', //download_mandati_xml
action: 'download_drs_pdf',
nomeFile: nomeFile
};
$.redirect(WS_CALL, object, "POST");
setTimeout(reloadPage, 1000);
}
});

53
webservice/domanda.php

@ -303,7 +303,7 @@ function saveCambioIban() {
}
function listSconti() {
global $LoggedAccount, $STATI_RICHIESTE_SCONTI, $ICONE_STATI_RICHIESTE_SCONTI;
global $LoggedAccount, $STATI_RICHIESTE_SCONTI, $ICONE_STATI_RICHIESTE_SCONTI, $COLOR_CARD_INTEGRAZIONE;
$response = array();
$id = intval($_REQUEST['id']);
@ -339,8 +339,12 @@ function listSconti() {
//Utils::print_array($res);exit();
foreach ($res['empRecords'] as $row) {
if (ATTIVA_SOCCORSO_ISTRUTTORIO) {
$integrazione = RichiestaIntegrazione::loadFromDomanda($row['ID']);
}
$btn_Downloads = '';
$btn_OP = '';
$btn_Soccorso = '';
$data_richiesta = '';
if ($row['FILEPATH_BIGLIETTO'] != "") {
$btn_Downloads .= '<button type="button" data-toggle="tooltip" data-placement="top" title="Scarica il biglietto elettronico" onclick="openStreamer(\'' . $row['ID'] . '\', \'biglietto\' )" class="btn btn-sm btn-success"><i class="fas fa-download"></i>&nbsp;Biglietto elettronico</button>';
@ -358,7 +362,12 @@ function listSconti() {
if ($row['STATO'] == RS_PRESA_IN_CARICO) {
$onclick = 'siparsFramework.takeChargeFromName(\'' . $row['ID'] . '\',\'elenco_sconti\', \'load\', \'\', \'form-edit-sconto-valida\' )';
$onclickSoccorso = 'siparsFramework.takeChargeFromName(\'' . $row['ID'] . '\',\'elenco_sconti\', \'load\', \'\', \'form-edit-sconto-valida\' )';
$btn_OP .= '<button type="button" data-toggle="modal" data-target="#editValidaRichiesta" onclick="' . $onclick . '" title="Valida la singola richiesta" class="btn btn-sm btn-info"><i class="far fa-check-square"></i></button>';
if ($integrazione->ID <= 0)
if (ATTIVA_SOCCORSO_ISTRUTTORIO) {
$btn_Soccorso = '<button type="button" data-toggle="modal" data-target="#editSoccorsoIstruttorio" onclick="' . $onclickSoccorso . '" title="Richiedi integrazione" class="btn btn-sm btn-success"><i class="fa fa-gavel"></i></button>';
}
}
$note_esclusione = "";
if ($row['NOTE'] != "") {
@ -406,10 +415,15 @@ function listSconti() {
//$fnVisualizza = '<button type="button" data-toggle="tooltip" data-placement="top" title="Visualizza l\'istanza del dichiarante" class="btn btn-sm btn-primary" onclick=\'redirectDomanda("' . $row['ID_DOMANDA'] . '")\'><i class="fas fa-file-alt"></i></button>';
$gruopDowuloads = '<div class="btn-group" role="group" aria-label="Basic example">' . $btn_Downloads . '</div>';
$gruopDowuloads = '<br/><div class="btn-group" role="group" aria-label="Basic example">' . $btn_Downloads . '</div>';
$gruopOP = "";
//if (SUPER_USER == $LoggedAccount->SUPER_USER) {
if (SUPER_USER == $LoggedAccount->SUPER_USER || $LoggedAccount->GROUP_ID == GRUPPO_REGIONE) {
$gruopOP = '<div class="btn-group" role="group" aria-label="Basic example">' . $btn_OP . $btn_Soccorso . '</div>';
} else {
$gruopOP = '<div class="btn-group" role="group" aria-label="Basic example">' . $btn_OP . '</div>';
}
//}
$tipoVolo = "";
$controlloVolo = Utils::isPeriodoNativita($row['DATA_VOLO']);
@ -437,19 +451,50 @@ function listSconti() {
}
}
$note_integrazione = '';
if ($row['STATO'] == RS_INTEGRAZIONE || $integrazione->ID > 0 && ATTIVA_SOCCORSO_ISTRUTTORIO) {
$btn_integrazione = '';
$bgCardIntegrazione = $COLOR_CARD_INTEGRAZIONE[$integrazione->STATO];
$note_integrazione .= '<div class="card ' . $bgCardIntegrazione . ' mt-3">';
$note_integrazione .= '<div class="card-header">Richiesta integrazione in data ' . Date::dateOracleTimeStamp($integrazione->DATA_RICHIESTA, 'd-m-Y') . ' <small class="h6 float-right">' . preg_replace("/_/", " ", $integrazione->STATO) . '</small></div>';
$note_integrazione .= '<div class="card-body">';
$note_integrazione .= '<small class="h6"><b>N. Protocollo:</b> ' . $integrazione->NUMERO_PROTOCOLLO . '</small><br/>';
$note_integrazione .= '<p class="card-text">' . $integrazione->DESCRIZIONE_RICHIESTA . '</p>';
if ($integrazione->FILEPATH_RISPOSTA != '') {
$btn_integrazione = '<button type="button" data-toggle="tooltip" data-placement="top" title="Scarica il documento integrato" onclick="openStreamer(\'' . $row['ID'] . '\', \'integrazione\' )" class="btn btn-sm btn-info"><i class="fas fa-download"></i>&nbsp;Documento integrativo</button>';
}
if ($integrazione->STATO == RI_INTEGRAZIONE_INSERITO) {
$onclickValida = 'siparsFramework.takeChargeFromName(\'' . $row['ID'] . '\',\'elenco_sconti\', \'load\', \'\', \'form-edit-soccorso-struttorio-validato\' )';
$onclickRigetta = 'siparsFramework.takeChargeFromName(\'' . $row['ID'] . '\',\'elenco_sconti\', \'load\', \'\', \'form-edit-soccorso-struttorio-rigettato\' )';
$note_integrazione .= ($integrazione->NOTE_UTENTE != '' ? 'Note utente:<p class="card-text">' . $integrazione->NOTE_UTENTE . '</p>' : '');
$note_integrazione .= '<div class="btn-group btn-group-sm" role="group">';
$note_integrazione .= $btn_integrazione;
$note_integrazione .= '<button type="button" data-toggle="modal" data-target="#editSoccorsoIstruttorioValidato" onclick="' . $onclickValida . '" class="btn btn-success"><i class="fa fa-thumbs-up" aria-hidden="true"></i>&nbsp;Valida</button>';
$note_integrazione .= '<button type="button" data-toggle="modal" data-target="#editSoccorsoIstruttorioRigettato" onclick="' . $onclickRigetta . '" class="btn btn-danger"><i class="fa fa-thumbs-down" aria-hidden="true"></i>&nbsp;Rigetta</button>';
$note_integrazione .= '</div>';
} else {
$note_integrazione .= $btn_integrazione;
}
$note_integrazione .= '</div>';
$note_integrazione .= '<div class="card-footer"><small class="h6">Notificata in data <b>' . Date::dateOracleDate($integrazione->DATA_INVIO_NOTIFICA, 'd-m-Y') . '</b> con scadenza il <b>' . Date::dateOracleDate($integrazione->SCADENZA, 'd-m-Y') . '</b></small></div>';
$note_integrazione .= '</div>';
}
$data[] = array(
"ID" => $row['ID'],
"DATA_RICHIESTA" => $data_richiesta,
"TIPO_RICHIESTA" => $tipoVolo,
"BENEFICIARIO" => "<small>[" . $row['CODICE_FISCALE'] . "]</small>&nbsp;" . $row['COGNOME'] . "&nbsp;" . $row['NOME'] . '<br/>' . $gruopDowuloads . $note_esclusione,
"BENEFICIARIO" => "<small>[" . $row['CODICE_FISCALE'] . "]</small>&nbsp;" . $row['COGNOME'] . "&nbsp;" . $row['NOME'] . '<br/>' .
$gruopDowuloads . $note_esclusione.$note_integrazione,
"DATA_ACQUISTO" => $data_acquisto,
"DATA_VOLO" => $data_volo,
"NUMERO_VOLO" => $numero_volo,
"TRATTA" => $tratta,
"COSTO_TRATTA" => number_format($row['COSTO_TRATTA'], 2, ',', '.'),
"SCONTO_TOTALE" => number_format($row['SCONTO_TOTALE'], 2, ',', '.'),
"STATO" => $ICONE_STATI_RICHIESTE_SCONTI[$row['STATO']] . (intval($row['LOTTO']) > 0 ? '&nbsp;<small>Lotto n.' . $row['LOTTO'] . '</small>' : '' ) . $drs,
"STATO" => $ICONE_STATI_RICHIESTE_SCONTI[$row['STATO']] . (intval($row['LOTTO']) > 0 ? '&nbsp;<small>Lotto n.' . $row['LOTTO'] . '</small>' : '') . $drs,
"OP" => $gruopOP, //($domanda->STATO > STATO_DOMANDA_IN_PREPARAZIONE ? '' : $btn_genera . $btn)
"IBAN_RICHIESTA" => $iban_richiesta,
);

540
webservice/elenco_sconti.php

File diff suppressed because one or more lines are too long

2
webservice/generaMandato.php

@ -25,7 +25,7 @@ if($lotto>0 && $numero_drs !="" && $data_drs !=""){
$esportazione = new Esportazioni($lotto);
//$esportazione->TIPO = $_POST['TIPO'];
$esportazione->NUMERO_DRS = $numero_drs;
$esportazione->DATA_DRS = Date::dateOracleDateNascita($data_drs, "d-M-Y");;
$esportazione->DATA_DRS = Date::dateOracleDateNascita($data_drs, "d-M-Y");
$esportazione->IMPORTO_MANDATO = $totaliEsportazione['SCONTO'];
$data_filtro = new DateTime($esportazione->DATA_FILTRO);//07-12-2023
$dataFiltro = $data_filtro->format('d/m/Y');

29
webservice/impersonificazione.php

@ -0,0 +1,29 @@
<?php
$mode = $_REQUEST['action'];
switch ($mode) {
case 'saveRichiesta':
saveRichiesta();
break;
}
function saveRichiesta() {
global $con, $LoggedAccount;
$response = Utils::initDefaultResponse(-999, '');
Impersonificazione::checkVerificaDatiPreSalvataggio();
$impersonificazione = new Impersonificazione();
$impersonificazione->UID_FIREBASE_ADMIN = $LoggedAccount->GUID;
$impersonificazione->CODICE_FISCALE = $_POST['CODICE_FISCALE'];
$verifica = $impersonificazione->checkDatiPreSave();
if ($verifica['checkDati']) {
$response = $impersonificazione->Save();
if ($response['esito'] == 1) {
$response['dati']['cf'] = $_POST['CODICE_FISCALE'];
$response['dati']['guid'] = $LoggedAccount->GUID;
$response['dati']['id'] = $response['lastId'];
}
} else {
$response['erroreDescrizione'] = ("<b>" . $controlliDomanda['txt_dati_mancanti'] . "</b>");
}
exit(json_encode($response));
}

535
webservice/streamerFile.php

File diff suppressed because one or more lines are too long
Caricamento…
Annulla
Salva