Exemplo n.º 1
0
  public function import()
  {
      foreach (glob($this->db->config->logBaseDir . '/stat_oper*') as $statFile) {
          $statHandler = fopen($statFile, 'r');
          echo $statFile . PHP_EOL;
          $rawData = fgetcsv($statHandler, 100, ';');
          $data = $this->parseData($rawData);
          do {
              if (isset($data) && $data['time'] != '') {
                  try {
                      $this->db->query('
 INSERT IGNORE INTO
 aps_stat.operaz 
 (datetime, operaz, time) VALUES (
 "' . $data['datetime'] . '",
 "' . $data['operaz'] . '",
 ' . $data['time'] . ')', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
                  } catch (\Exception $e) {
                      var_dump($data);
                      die;
                  }
              }
              $rawData = fgetcsv($statHandler, 100, ';');
              $data = $this->parseData($rawData);
          } while (is_array($rawData));
          fclose($statHandler);
      }
  }
Exemplo n.º 2
0
 /**
  * Creates and populates the DataSource
  *
  * @access public
  * @return void
  **/
 public function setup()
 {
     $select = $this->getSelect();
     if ($this->paginate) {
         $sql = $this->getSelectCountSql();
         $this->totalRows = (int) $this->_db->fetchOne($sql);
         list($start, $total) = $this->limit;
         $select->reset(Zend_Db_Select::LIMIT_COUNT);
         $select->reset(Zend_Db_Select::LIMIT_OFFSET);
         $select->limit($total, $start);
     } else {
         $this->totalRows = 0;
     }
     $select->reset(Zend_Db_Select::ORDER);
     if (count($this->order) > 0) {
         $select->order($this->order);
     }
     // Fetch Select Columns
     $rawColumns = $select->getPart(Zend_Db_Select::COLUMNS);
     $columns = array();
     // Get columns and Force casting as strings
     foreach ($rawColumns as $col) {
         $columns[] = (string) $col[1];
     }
     $this->cols = $columns;
     $this->totalColumns = count($columns);
     // Fetch
     $stmt = $this->_db->query($select);
     $rows = $stmt->fetchAll(Zend_Db::FETCH_ASSOC);
     $total = count($rows);
     $this->totalRowset = $total;
     $this->rows = $rows;
 }
Exemplo n.º 3
0
 /**
  * Attach
  *
  * Attaches a given SQLite database file into this connection.
  *
  * @param string $dbFile Database file to attach
  * @param string $dbName Alias to give attached database file
  * @return void
  */
 public function attach($dbFile, $dbName)
 {
     $this->_db->query('ATTACH DATABASE "' . $dbFile . '" AS "' . $dbName . '"');
     $tableNames = $this->_db->fetchCol("SELECT name FROM " . $dbName . ".sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'");
     foreach ($tableNames as $tableName) {
         if (in_array($tableName, $this->_tableNames)) {
             continue;
         }
         $this->_tableNames[] = $tableName;
     }
     $this->_saveTableNamesCache();
 }
Exemplo n.º 4
0
 /**
  * Make a query into the module table.
  * The function make the query directly for avoid caches.
  *
  * @param string $module Name of the module.
  * @param string $field  Name of the field for get.
  *
  * @return mix
  */
 private function _moduleRow($module, $field = 'id')
 {
     $select = $this->_db->select()->from('module')->where('name = ?', $module);
     $stmt = $this->_db->query($select);
     $rows = $stmt->fetchAll();
     switch ($field) {
         case 'id':
             $default = 0;
             break;
         case 'version':
         default:
             $default = null;
             break;
     }
     if (isset($rows[0])) {
         return $rows[0][$field];
     } else {
         return $default;
     }
 }
Exemplo n.º 5
0
    public function import($statOnly = '')
    {
        $dateFilter = '`data_ora_rich` > CURDATE() - INTERVAL 1 MONTH';
        if ($statOnly != '') {
            $config = clone $this->db->config;
            $configDb = $this->db->config->database->toArray();
            $configDb['options']['buffer_results'] = false;
            $this->db = new \Zend\Db\Adapter\Adapter($configDb);
            $this->db->config = $config;
            $dateFilter = 'TRUE';
            if ($this->db->config->storeExpiryStatFile->VisSintRep != '') {
                $statHandler = fopen($this->db->config->storeExpiryStatFile->VisSintRep, 'w');
            }
            $manager = new \MongoDB\Driver\Manager("mongodb://localhost:27017");
            $bulk = new \MongoDB\Driver\BulkWrite();
        }
        $this->db->query('ALTER TABLE company DISABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE company_to_company DISABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE person DISABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE person_to_company DISABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $archiviRichieste = array(array('dir' => 'risposteBaseDirMass', 'sql' => '
SELECT aps_prod_backup.eps_richiesta_mass.id_richiesta,
aps_prod_backup.eps_richiesta_mass.id_mov_contab,
aps_prod_backup.eps_richiesta_mass.id_richiesta_cache,
aps_prod_backup.eps_richiesta_mass.stringa_richiesta,
aps_prod_backup.eps_richiesta_mass.data_ora_rich,
aps_prod_backup.eps_richiesta_mass.data_ora_evas,
aps_prod.eps_operazione.cod_operazione as cod_operazione ,
aps_prod_backup.eps_mov_contab_mass.cod_causale as cod_causale ,
aps_prod_backup.eps_mov_contab_mass.importo as importo ,
aps_prod_backup.eps_mov_contab_mass.id_mov_contab_gen as id_mov_contab_gen ,
aps_prod.eps_prodotto.cod_prodotto as cod_prodotto ,
aps_prod.eps_cliente.cod_cliente as cod_cliente ,
aps_prod.eps_istanza.cod_istanza as cod_istanza
FROM aps_prod_backup.eps_richiesta_mass
LEFT JOIN aps_prod.eps_operazione ON aps_prod.eps_operazione.id_operazione=aps_prod_backup.eps_richiesta_mass.id_operazione
LEFT JOIN aps_prod_backup.eps_mov_contab_mass ON aps_prod_backup.eps_mov_contab_mass.id_mov_contab=aps_prod_backup.eps_richiesta_mass.id_mov_contab
LEFT JOIN aps_prod.eps_prodotto ON aps_prod.eps_prodotto.id_prodotto =aps_prod_backup.eps_mov_contab_mass.id_prodotto
LEFT JOIN aps_prod.eps_cliente ON aps_prod.eps_cliente.id_cliente=aps_prod_backup.eps_mov_contab_mass.id_cliente
LEFT JOIN aps_prod.eps_istanza ON aps_prod.eps_istanza.id_istanza=aps_prod.eps_cliente.id_istanza
WHERE
' . $dateFilter . ' AND
aps_prod.eps_operazione.cod_operazione = "vissintrep"
                    ', 'sqlp' => '
SELECT aps_prod_backup.eps_richiesta.id_richiesta,
aps_prod_backup.eps_richiesta.id_mov_contab,
aps_prod_backup.eps_richiesta.id_richiesta_cache,
aps_prod_backup.eps_richiesta.stringa_richiesta,
aps_prod_backup.eps_richiesta.data_ora_rich,
aps_prod_backup.eps_richiesta.data_ora_evas,
aps_prod.eps_operazione.cod_operazione as cod_operazione ,
aps_prod_backup.eps_mov_contab.cod_causale as cod_causale ,
aps_prod_backup.eps_mov_contab.importo as importo ,
aps_prod.eps_prodotto.cod_prodotto as cod_prodotto ,
aps_prod.eps_cliente.cod_cliente as cod_cliente ,
aps_prod.eps_istanza.cod_istanza as cod_istanza

FROM aps_prod_backup.eps_richiesta
LEFT JOIN aps_prod.eps_operazione ON aps_prod.eps_operazione.id_operazione=aps_prod_backup.eps_richiesta.id_operazione
LEFT JOIN aps_prod_backup.eps_mov_contab ON aps_prod_backup.eps_mov_contab.id_mov_contab=aps_prod_backup.eps_richiesta.id_mov_contab
LEFT JOIN aps_prod.eps_prodotto ON aps_prod.eps_prodotto.id_prodotto =aps_prod_backup.eps_mov_contab.id_prodotto
LEFT JOIN aps_prod.eps_cliente ON aps_prod.eps_cliente.id_cliente=aps_prod_backup.eps_mov_contab.id_cliente
LEFT JOIN aps_prod.eps_istanza ON aps_prod.eps_istanza.id_istanza=aps_prod.eps_cliente.id_istanza
WHERE  
aps_prod_backup.eps_mov_contab.id_mov_contab = %d
'), array('dir' => 'risposteBaseDir', 'sql' => '
SELECT aps_prod_backup.eps_richiesta.id_richiesta,
aps_prod_backup.eps_richiesta.id_mov_contab,
aps_prod_backup.eps_richiesta.id_richiesta_cache,
aps_prod_backup.eps_richiesta.stringa_richiesta,
aps_prod_backup.eps_richiesta.data_ora_rich,
aps_prod_backup.eps_richiesta.data_ora_evas,
aps_prod.eps_operazione.cod_operazione as cod_operazione ,
aps_prod_backup.eps_mov_contab.cod_causale as cod_causale ,
aps_prod_backup.eps_mov_contab.importo as importo ,
aps_prod_backup.eps_mov_contab.id_mov_contab_gen as id_mov_contab_gen ,
aps_prod.eps_prodotto.cod_prodotto as cod_prodotto ,
aps_prod.eps_cliente.cod_cliente as cod_cliente ,
aps_prod.eps_istanza.cod_istanza as cod_istanza

FROM aps_prod_backup.eps_richiesta
LEFT JOIN aps_prod.eps_operazione ON aps_prod.eps_operazione.id_operazione=aps_prod_backup.eps_richiesta.id_operazione
LEFT JOIN aps_prod_backup.eps_mov_contab ON aps_prod_backup.eps_mov_contab.id_mov_contab=aps_prod_backup.eps_richiesta.id_mov_contab
LEFT JOIN aps_prod.eps_prodotto ON aps_prod.eps_prodotto.id_prodotto =aps_prod_backup.eps_mov_contab.id_prodotto
LEFT JOIN aps_prod.eps_cliente ON aps_prod.eps_cliente.id_cliente=aps_prod_backup.eps_mov_contab.id_cliente
LEFT JOIN aps_prod.eps_istanza ON aps_prod.eps_istanza.id_istanza=aps_prod.eps_cliente.id_istanza
WHERE  
' . $dateFilter . ' AND
aps_prod.eps_operazione.cod_operazione = "vissintrep"
                    ', 'sqlp' => '
SELECT aps_prod_backup.eps_richiesta.id_richiesta,
aps_prod_backup.eps_richiesta.id_mov_contab,
aps_prod_backup.eps_richiesta.id_richiesta_cache,
aps_prod_backup.eps_richiesta.stringa_richiesta,
aps_prod_backup.eps_richiesta.data_ora_rich,
aps_prod_backup.eps_richiesta.data_ora_evas,
aps_prod.eps_operazione.cod_operazione as cod_operazione ,
aps_prod_backup.eps_mov_contab.cod_causale as cod_causale ,
aps_prod_backup.eps_mov_contab.importo as importo ,
aps_prod.eps_prodotto.cod_prodotto as cod_prodotto ,
aps_prod.eps_cliente.cod_cliente as cod_cliente ,
aps_prod.eps_istanza.cod_istanza as cod_istanza

FROM aps_prod_backup.eps_richiesta
LEFT JOIN aps_prod.eps_operazione ON aps_prod.eps_operazione.id_operazione=aps_prod_backup.eps_richiesta.id_operazione
LEFT JOIN aps_prod_backup.eps_mov_contab ON aps_prod_backup.eps_mov_contab.id_mov_contab=aps_prod_backup.eps_richiesta.id_mov_contab
LEFT JOIN aps_prod.eps_prodotto ON aps_prod.eps_prodotto.id_prodotto =aps_prod_backup.eps_mov_contab.id_prodotto
LEFT JOIN aps_prod.eps_cliente ON aps_prod.eps_cliente.id_cliente=aps_prod_backup.eps_mov_contab.id_cliente
LEFT JOIN aps_prod.eps_istanza ON aps_prod.eps_istanza.id_istanza=aps_prod.eps_cliente.id_istanza
WHERE  
aps_prod_backup.eps_mov_contab.id_mov_contab = %d
'));
        $totalCount = 0;
        $asXML = array();
        foreach ($archiviRichieste as $archivioRichieste) {
            $richieste = $this->db->query($archivioRichieste['sql'], \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
            $count = 0;
            $groupCount = 0;
            $company = new \crm\Company($this->db);
            $rCompany = new \crm\Company($this->db);
            $person = new \crm\Person($this->db);
            while (is_object($richiesta = $richieste->current())) {
                echo "\r" . $count++ . '/' . ($richieste->count() - 1) . str_repeat(' ', 5);
                $dati = array();
                $imprese = array();
                $esponenti = array();
                $sId = str_pad($richiesta->id_richiesta, 9, '0', STR_PAD_LEFT);
                $dM = 'M' . substr($sId, 0, 3);
                $dK = 'K' . substr($sId, 3, 3);
                $nomeFile = $this->db->config->{$archivioRichieste['dir']} . "/{$dM}/{$dK}/F{$sId}.xml";
                if (!is_file($nomeFile)) {
                    $richieste->next();
                    continue;
                }
                $dati['id_mov_contab'] = $richiesta->id_mov_contab;
                $dati['massiva'] = $archivioRichieste['dir'] == 'risposteBaseDir' ? 0 : 1;
                $dati['id_richiesta'] = $richiesta->id_richiesta;
                $dati['test_nome_file'] = "\"" . str_replace('"', '\\"', basename($nomeFile)) . "\"";
                $dati['errore'] = '';
                $dati['data_ora_rich'] = $richiesta->data_ora_rich;
                $dati['data_ora_evas'] = $richiesta->data_ora_evas;
                $dati['cod_operazione'] = $richiesta->cod_operazione;
                $dati['cod_prodotto'] = $richiesta->cod_prodotto;
                $dati['cod_cliente'] = $richiesta->cod_cliente;
                $dati['cod_istanza'] = $richiesta->cod_istanza;
                $dati['importo'] = $richiesta->importo;
                $dati['differita'] = 1;
                if ($richiesta->importo == 0 && $richiesta->id_richiesta_cache == 0) {
                    $richieste->next();
                    continue;
                }
                $richiestaGen = $this->db->query(sprintf($archivioRichieste['sqlp'], $richiesta->id_mov_contab_gen), \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
                $richiestaGen = $richiestaGen->current();
                $nomeFileGen = null;
                if (is_object($richiestaGen)) {
                    $sIdGen = str_pad($richiestaGen->id_richiesta, 9, '0', STR_PAD_LEFT);
                    $dMG = 'M' . substr($sIdGen, 0, 3);
                    $dKG = 'K' . substr($sIdGen, 3, 3);
                    $nomeFileGen = $this->db->config->{$archivioRichieste['dir']} . "/{$dMG}/{$dKG}/F{$sIdGen}.xml";
                }
                $content = file_get_contents($nomeFile);
                preg_match('/\\-+=.*/', $content, $separator);
                if (sizeof($separator) == 0) {
                    $main = '';
                    $report = $content;
                } else {
                    $separator = trim($separator[0]);
                    $parts = explode($separator, $content);
                    $main = $parts[1];
                    $report = $parts[2];
                    $main = preg_replace('/.*\\r\\n\\r\\n/ms', '', $main);
                    $report = preg_replace('/.*\\r\\n\\r\\n/ms', '', $report);
                }
                set_error_handler(create_function('', ''));
                try {
                    $scXML = new \SimpleXMLElement($main);
                    $scXML->registerXPathNamespace('env', 'http://schemas.xmlsoap.org/soap/envelope/');
                    $scXML->registerXPathNamespace('ns2', 'http://www.lince.it/WSCorporate_1/RetrieveReportService');
                    $scXML->registerXPathNamespace('xsi', 'http://www.w3.org/2001/XMLSchema-instance');
                    $sXML = new \SimpleXMLElement($report);
                    $compmany = null;
                    if (is_file($nomeFileGen)) {
                        $sgXML = new \SimpleXMLElement($nomeFileGen, 0, true);
                        $sgXML->registerXPathNamespace('env', 'http://schemas.xmlsoap.org/soap/envelope/');
                        $sgXML->registerXPathNamespace('ns2', 'http://www.lince.it/WSCorporate_1/ThreeStepService');
                        $sgXML->registerXPathNamespace('xsi', 'http://www.w3.org/2001/XMLSchema-instance');
                        $companiesSearch = $sgXML->xpath('/env:Envelope/env:Body/ns2:searchCompanyResponse/searchResult/companies');
                        foreach ($companiesSearch as $companySearch) {
                            if ($companySearch->fiscalCode == (string) $sXML->xpath('/BasicAbbrevia/CompanyIdentificationSection/TaxCode')[0]) {
                                break;
                            }
                        }
                    }
                    /*$errore = $sXML->xpath('/env:Envelope/env:Body/env:Fault/faultstring');
                      if (is_array($errore)) {
                         $dati['errore'] = "\"".array_shift($errore)."\"";
                      }
                      $sContenuto = base64_decode($sXML->xpath('//document')[0]);
                      $sXML = new \SimpleXMLElement($sContenuto);*/
                } catch (\Exception $e) {
                }
                $companyData = $sXML->xpath('/BasicAbbrevia/CompanyIdentificationSection')[0];
                $companyAddress = $sXML->xpath('/BasicAbbrevia/CompanyIdentificationSection/RHOAddress')[0];
                $companyBusiness = $sXML->xpath('/BasicAbbrevia/CompanyIdentificationSection/RHOSlimActivityList/SlimBusinessActivity')[0];
                $dati['dataCerved'] = '';
                $dateObject = date_create_from_format('d/m/Y H:i:s.u', (string) $sXML->xpath('/BasicAbbrevia/Metadata/Response/Stats/ServiceResponseTime')[0]);
                if (!is_object($dateObject)) {
                    $dateObject = date_create_from_format('d/m/Y H:i:s,u', (string) $sXML->xpath('/BasicAbbrevia/Metadata/Response/Stats/ServiceResponseTime')[0]);
                }
                if (is_object($dateObject)) {
                    $dati['dataCerved'] = date_format($dateObject, 'Y-m-d H:i:s');
                }
                $dati['gruppo'] = '';
                $dati['gruppoRuolo'] = '';
                $dati['partIVA'] = (string) $companySearch->vatNumber;
                $dati['ragSoc'] = (string) $companyData->CompanyName;
                $dati['codFisc'] = (string) $companyData->TaxCode;
                $dati['provCCIAA'] = (string) $companyData->REAProvinceCode;
                $dati['nCCIAA'] = (string) $companyData->REANumber;
                $dati['prov'] = (string) $companyAddress->ProvinceCode;
                $dati['comune'] = (string) $companyAddress->City;
                $dati['indirizzo'] = (string) $companyAddress->StreetName . ' ' . (string) $companyAddress->StreetNo;
                $dati['CAP'] = (string) $companyAddress->PostCode;
                $dati['nazione'] = 'ITALIA';
                $dati['sitoWeb'] = '';
                $dati['email'] = (string) $companyData->CertifiedEmail;
                $dati['telefono'] = (string) $companySearch->phoneNumber;
                $dati['statoAttivita'] = (string) $companySearch->activityStatus;
                $dati['formaGiurid'] = (string) $companySearch->legalForm;
                $dati['tipoSoc'] = '';
                $dati['capitaleSociale'] = '';
                $dati['codISTAT'] = (string) $companyBusiness->Code;
                $dati['desISTAT'] = (string) $companySearch->cAtecoDescription;
                if (method_exists($companyBusiness->Code, 'attributes')) {
                    $dati['desISTAT'] = (string) $companyBusiness->Code->attributes()->description;
                }
                $dati['codNACE'] = '';
                $dati['dataInizioAtt'] = '';
                $dati['dataCostituzione'] = '';
                $dati['dataREA'] = date_format(date_create((string) $companySearch->registrationDate), 'Y-m-d H:i:s');
                if (strlen($dati['dataREA']) < 6) {
                    $dati['dataREA'] = '';
                }
                $dati['fidoAffidabilta'] = '';
                $dati['fidoAffidabiltaNote'] = '';
                $dati['fidoAccordabile'] = '';
                $dati['numUffSedi'] = '';
                $dati['desAttivita'] = '';
                $dati['eventi'] = '';
                $dati['protesti'] = '';
                $dati['fallimenti'] = '';
                $dati['pregiudizievoli'] = '';
                $dati['cassaIntegrazione'] = '';
                $dati['nDipendenti'] = '';
                $dati['fatturato'] = '';
                $dati['annoFatturato'] = '';
                $dati['trendFatturato'] = '';
                $dati['utilePerdita'] = '';
                $dati['patrimonioNetto'] = '';
                $dati['margineOperativoLordo'] = '';
                $dati['risultatoOperativoLordo'] = '';
                $dati['indiceIndebitamento'] = '';
                $dati['ROI'] = '';
                $dati['ROE'] = '';
                $dati['indiceLiquidita'] = '';
                $dati['dataChiusuraBilancio'] = '';
                foreach ($sXML->xpath('/BasicAbbrevia/RepresentativesSection/RepresentativeList/Representative') as $shareolder) {
                    if (property_exists($shareolder, 'Individual')) {
                        $esponente = array();
                        $esponente['nome'] = (string) $shareolder->Individual->FirstName;
                        $esponente['cognome'] = (string) $shareolder->Individual->LastName;
                        $esponente['codFisc'] = (string) $shareolder->TaxCode;
                        $esponente['dataNas'] = (string) date_format(date_create_from_format('d/m/Y', (string) $shareolder->Individual->Birth->BirthDate->Value), 'Y-m-d');
                        $esponente['luogoNas'] = (string) $shareolder->Individual->Birth->City;
                        $esponente['prov'] = (string) $shareolder->Individual->TaxDomicile->ProvinceCode;
                        $esponente['comune'] = (string) $shareolder->Individual->TaxDomicile->City;
                        $esponente['indirizzo'] = (string) $shareolder->Individual->TaxDomicile->StreetName . ' ' . (string) $shareolder->Individual->TaxDomicile->StreetNo;
                        $esponente['CAP'] = (string) $shareolder->Individual->TaxDomicile->PostCode;
                        $esponente['titolo'] = 'ESPONENTE';
                        $esponenti[] = $esponente;
                    } else {
                        if (property_exists($shareolder, 'CompanyEquivalent')) {
                            $impresa = array();
                            $impresa['ragSoc'] = (string) $shareolder->CompanyEquivalent->CompanyName;
                            $impresa['formaGiurid'] = '';
                            $impresa['partIVA'] = (string) $shareolder->TaxCode;
                            $impresa['capitaleSociale'] = '';
                            $impresa['statoAttivita'] = '';
                            $impresa['provCCIAA'] = (string) $shareolder->CompanyEquivalent->REAProvinceCode;
                            $impresa['nCCIAA'] = (string) $shareolder->CompanyEquivalent->REANo;
                            $impresa['prov'] = (string) $shareolder->CompanyEquivalent->Address->ProvinceCode;
                            $impresa['comune'] = (string) $shareolder->CompanyEquivalent->Address->City;
                            $impresa['indirizzo'] = (string) $shareolder->CompanyEquivalent->Address->StreetName . ' ' . (string) $shareolder->CompanyEquivalent->Address->StreetNo;
                            $impresa['CAP'] = (string) $shareolder->CompanyEquivalent->Address->PostCode;
                            $impresa['titolo'] = 'CORRELATA';
                            $imprese[] = $impresa;
                        }
                    }
                }
                restore_error_handler();
                if ($statOnly != '') {
                    array_walk($dati, create_function('&$item', '$item=str_replace("\\"","",$item);'));
                    if (isset($statHandler)) {
                        if (ftell($statHandler) == 0) {
                            fputcsv($statHandler, array_keys($dati));
                        }
                        fputcsv($statHandler, $dati);
                        fflush($statHandler);
                    }
                    $domXml = dom_import_simplexml($sXML);
                    $aXML = array('_id' => $dati['id_mov_contab']);
                    $this->xml2array($domXml, $aXML);
                    $this->singlexml2array($domXml, $asXML);
                    file_put_contents('/tmp/vissintrep.json', json_encode($asXML));
                    /*$xml = new \SimpleXMLElement('<root/>');
                    
                    
                                   $this->array_to_xml($aXML,$xml);*/
                    if (true || is_array($aXML) && $totalCount++ < 10000.0) {
                        $bulk->update(array('_id' => $dati['id_mov_contab']), $aXML, array('multi' => false, 'upsert' => true));
                    }
                }
                if ($dati['partIVA'] == '' || $dati['partIVA'] == 0 || $statOnly != '') {
                    $richieste->next();
                    continue;
                }
                $company->setData(array());
                $company->loadFromId($dati['partIVA']);
                $cDati = $company->getData();
                if (is_array($cDati) && count($cDati) > 0) {
                    $company->setData(array_merge($cDati, array_filter($dati)));
                    $company->update();
                } else {
                    $company->setData($dati);
                    $company->insert();
                }
                foreach ($imprese as $impresa) {
                    $rCompany->setData(array());
                    $rCompany->loadFromId($impresa['partIVA']);
                    $cDati = $rCompany->getData();
                    if (is_array($cDati) && count($cDati) > 0) {
                        $rCompany->setData(array_merge($cDati, array_filter($impresa)));
                        $rCompany->update();
                    } else {
                        $rCompany->setData($impresa);
                        $rCompany->insert();
                    }
                    $company->addRelatedCompany($rCompany);
                }
                foreach ($esponenti as $esponente) {
                    if (strlen($esponente['codFisc']) == 16) {
                        $person->setData(array());
                        $person->loadFromId($esponente['codFisc']);
                        $cDati = $person->getData();
                        if (is_array($cDati) && count($cDati) > 0) {
                            $person->setData(array_merge($cDati, array_filter($esponente)));
                            $person->update();
                        } else {
                            $person->setData($esponente);
                            $person->insert();
                        }
                        $company->addRelatedExponent($person);
                    } else {
                        $rCompany->setData(array());
                        $esponente['partIVA'] = $esponente['codFisc'];
                        $rCompany->loadFromId($esponente['partIVA']);
                        $cDati = $rCompany->getData();
                        if (is_array($cDati) && count($cDati) > 0) {
                            $rCompany->setData(array_merge($cDati, array_filter($esponente)));
                            $rCompany->update();
                        } else {
                            $rCompany->setData($esponente);
                            $rCompany->insert();
                        }
                        $company->addRelatedCompany($rCompany);
                    }
                }
                $richieste->next();
            }
        }
        $this->db->query('ALTER TABLE company ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE company_to_company ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE person ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE person_to_company ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        if (isset($statHandler)) {
            fclose($statHandler);
            if ($bulk->count() > 0) {
                $manager->executeBulkWrite('report_impresa.vissintrep', $bulk);
            }
        }
        echo PHP_EOL;
    }
Exemplo n.º 6
0
    public function import($statOnly = '')
    {
        $dateFilter = '`data_ora_rich` > CURDATE() - INTERVAL 2 MONTH';
        if ($statOnly != '') {
            $dateFilter = 'TRUE';
            if ($this->db->config->storeExpiryStatFile->Sksocio != '') {
                $statHandler = fopen($this->db->config->storeExpiryStatFile->Sksocio, 'w');
            }
        }
        $archiviRichieste = array(array('dir' => 'risposteBaseDirMass', 'sql' => '
SELECT aps_prod_backup.eps_richiesta_mass.id_richiesta,
aps_prod_backup.eps_richiesta_mass.id_mov_contab,
aps_prod_backup.eps_richiesta_mass.id_richiesta_cache,
aps_prod_backup.eps_richiesta_mass.stringa_richiesta,
aps_prod_backup.eps_richiesta_mass.data_ora_rich,
aps_prod_backup.eps_richiesta_mass.data_ora_evas,
aps_prod.eps_operazione.cod_operazione as cod_operazione ,
aps_prod_backup.eps_mov_contab_mass.cod_causale as cod_causale ,
aps_prod_backup.eps_mov_contab_mass.importo as importo ,
aps_prod_backup.eps_mov_contab_mass.id_mov_contab_gen as id_mov_contab_gen ,
aps_prod.eps_prodotto.cod_prodotto as cod_prodotto ,
aps_prod.eps_cliente.cod_cliente as cod_cliente ,
aps_prod.eps_istanza.cod_istanza as cod_istanza
FROM aps_prod_backup.eps_richiesta_mass
LEFT JOIN aps_prod.eps_operazione ON aps_prod.eps_operazione.id_operazione=aps_prod_backup.eps_richiesta_mass.id_operazione
LEFT JOIN aps_prod_backup.eps_mov_contab_mass ON aps_prod_backup.eps_mov_contab_mass.id_mov_contab=aps_prod_backup.eps_richiesta_mass.id_mov_contab
LEFT JOIN aps_prod.eps_prodotto ON aps_prod.eps_prodotto.id_prodotto =aps_prod_backup.eps_mov_contab_mass.id_prodotto
LEFT JOIN aps_prod.eps_cliente ON aps_prod.eps_cliente.id_cliente=aps_prod_backup.eps_mov_contab_mass.id_cliente
LEFT JOIN aps_prod.eps_istanza ON aps_prod.eps_istanza.id_istanza=aps_prod.eps_cliente.id_istanza
WHERE
' . $dateFilter . ' AND
aps_prod.eps_operazione.cod_operazione = "sksocio" OR aps_prod.eps_operazione.cod_operazione = "sksociosto"
                    '), array('dir' => 'risposteBaseDir', 'sql' => '
SELECT aps_prod_backup.eps_richiesta.id_richiesta,
aps_prod_backup.eps_richiesta.id_mov_contab,
aps_prod_backup.eps_richiesta.id_richiesta_cache,
aps_prod_backup.eps_richiesta.stringa_richiesta,
aps_prod_backup.eps_richiesta.data_ora_rich,
aps_prod_backup.eps_richiesta.data_ora_evas,
aps_prod.eps_operazione.cod_operazione as cod_operazione ,
aps_prod_backup.eps_mov_contab.cod_causale as cod_causale ,
aps_prod_backup.eps_mov_contab.importo as importo ,
aps_prod_backup.eps_mov_contab.id_mov_contab_gen as id_mov_contab_gen ,
aps_prod.eps_prodotto.cod_prodotto as cod_prodotto ,
aps_prod.eps_cliente.cod_cliente as cod_cliente ,
aps_prod.eps_istanza.cod_istanza as cod_istanza

FROM aps_prod_backup.eps_richiesta
LEFT JOIN aps_prod.eps_operazione ON aps_prod.eps_operazione.id_operazione=aps_prod_backup.eps_richiesta.id_operazione
LEFT JOIN aps_prod_backup.eps_mov_contab ON aps_prod_backup.eps_mov_contab.id_mov_contab=aps_prod_backup.eps_richiesta.id_mov_contab
LEFT JOIN aps_prod.eps_prodotto ON aps_prod.eps_prodotto.id_prodotto =aps_prod_backup.eps_mov_contab.id_prodotto
LEFT JOIN aps_prod.eps_cliente ON aps_prod.eps_cliente.id_cliente=aps_prod_backup.eps_mov_contab.id_cliente
LEFT JOIN aps_prod.eps_istanza ON aps_prod.eps_istanza.id_istanza=aps_prod.eps_cliente.id_istanza
WHERE
' . $dateFilter . ' AND
aps_prod.eps_operazione.cod_operazione = "sksocio" OR aps_prod.eps_operazione.cod_operazione = "sksociosto"
                    '));
        $totalCount = 0;
        foreach ($archiviRichieste as $archivioRichieste) {
            $richieste = $this->db->query($archivioRichieste['sql'], \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
            $count = 0;
            $groupCount = 0;
            $rCompany = new \crm\Company($this->db);
            $company = new \crm\Company($this->db);
            $person = new \crm\Person($this->db);
            while (is_object($richiesta = $richieste->current())) {
                echo "\r" . $count++ . '/' . ($richieste->count() - 1) . str_repeat(' ', 5);
                $dati = array();
                $imprese = array();
                $esponenti = array();
                $sId = str_pad($richiesta->id_richiesta, 9, '0', STR_PAD_LEFT);
                $dM = 'M' . substr($sId, 0, 3);
                $dK = 'K' . substr($sId, 3, 3);
                $nomeFile = $this->db->config->{$archivioRichieste['dir']} . "/{$dM}/{$dK}/F{$sId}.xml";
                if (!is_file($nomeFile)) {
                    $richieste->next();
                    continue;
                }
                $dati['id_mov_contab'] = $richiesta->id_mov_contab;
                $dati['massiva'] = $archivioRichieste['dir'] == 'risposteBaseDir' ? 0 : 1;
                $dati['id_richiesta'] = $richiesta->id_richiesta;
                $dati['test_nome_file'] = "\"" . str_replace('"', '\\"', basename($nomeFile)) . "\"";
                $dati['errore'] = '';
                $attesa = $this->db->query('
SELECT time FROM aps_stat.operaz WHERE
datetime="' . $richiesta->data_ora_evas . '" AND
operaz="daim.' . $richiesta->cod_operazione . '"
', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
                $attesa = $attesa->current();
                $dati['data_ora_rich'] = $richiesta->data_ora_rich;
                $dati['data_ora_evas'] = $richiesta->data_ora_evas;
                $dati['cod_operazione'] = $richiesta->cod_operazione;
                $dati['cod_prodotto'] = $richiesta->cod_prodotto;
                $dati['cod_cliente'] = $richiesta->cod_cliente;
                $dati['cod_istanza'] = $richiesta->cod_istanza;
                $dati['importo'] = $richiesta->importo;
                $dati['differita'] = 1;
                if ($richiesta->importo == 0 && $richiesta->id_richiesta_cache == 0) {
                    $richieste->next();
                    continue;
                }
                $sXML = new \SimpleXMLElement($nomeFile, 0, true);
                $dati['dataCerved'] = '';
                $dateObject = date_create_from_format('Y m d H:i:s', (string) $sXML->xpath('/s2xResponse/s2xStatus/s2xTime')[0]);
                if (is_object($dateObject)) {
                    $dati['dataCerved'] = date_format($dateObject, 'Y-m-d H:i:s');
                }
                $sobject = $sXML->xpath('/s2xResponse/s2xData/Shareholder/Identification');
                if (!is_array($sobject) || sizeof($sobject) < 1) {
                    $richieste->next();
                    continue;
                }
                $sobject = $sobject[0];
                $dati['nome'] = '';
                $dati['cognome'] = '';
                preg_match("/^(\\w+)/", $sobject->LastNameFirstName, $matches);
                if (sizeof($matches) > 0) {
                    $cognome = $matches[1];
                    $nome = trim(str_replace($cognome, '', $sobject->LastNameFirstName));
                    $dati['nome'] = $nome;
                    $dati['cognome'] = $cognome;
                }
                $dati['codFisc'] = (string) $sobject->TaxCode;
                $dati['dataNas'] = '';
                if (property_exists($sobject, 'IndividualAddedValue')) {
                    $dateObject = date_create_from_format('Ymd', (string) $sobject->IndividualAddedValue->BirthInformation->BirthData);
                    if (is_object($dateObject)) {
                        $dati['dataNas'] = (string) date_format($dateObject, 'Y-m-d');
                    }
                }
                if (strlen($dati['codFisc']) == 16) {
                    $person->setData(array());
                    $person->loadFromId($dati['codFisc']);
                    $cDati = $person->getData();
                    if (is_array($cDati) && count($cDati) > 0) {
                        $person->setData(array_merge($cDati, array_filter($dati)));
                        $person->update();
                    } else {
                        $person->setData($dati);
                        $person->insert();
                    }
                } else {
                    if ($dati['codFisc'] != '') {
                        $dati['partIVA'] = $dati['codFisc'];
                        $dati['ragSoc'] = (string) $sobject->CompanyName;
                        $dati['provCCIAA'] = (string) $sobject->REAProvinceCode;
                        $dati['nCCIAA'] = (string) $sobject->REARegistrationDate;
                        $dati['formaGiurid'] = (string) $sobject->CompanyTitle;
                        $dati['capitaleSociale'] = (string) $sobject->EquityCapital->Subscribed;
                        if (property_exists($sobject, 'LegalFormAddedValue')) {
                            $dati['statoAttivita'] = (string) $sobject->LegalFormAddedValue->BusinessStatus->OtherDescription;
                            $dati['gruppo'] = (string) $sobject->LegalFormAddedValue->MemberOfGroup3->NameMemberOfGroup3;
                        }
                        $rCompany->setData(array());
                        $rCompany->loadFromId($dati['partIVA']);
                        $cDati = $rCompany->getData();
                        if (is_array($cDati) && count($cDati) > 0) {
                            $rCompany->setData(array_merge($cDati, array_filter($dati)));
                            $rCompany->update();
                        } else {
                            $rCompany->setData($dati);
                            $rCompany->insert();
                        }
                    }
                }
                restore_error_handler();
                if ($statOnly != '') {
                    array_walk($dati, create_function('&$item', '$item=str_replace("\\"","",$item);'));
                    if (isset($statHandler)) {
                        if (ftell($statHandler) == 0) {
                            fputcsv($statHandler, array_keys($dati));
                        }
                        fputcsv($statHandler, $dati);
                        fflush($statHandler);
                    }
                    $richieste->next();
                    continue;
                }
                foreach ($sXML->xpath('/s2xResponse/s2xData/ShareholderSection/ListLatestPartnership/LatestPartnership') as $related) {
                    $impresa = array();
                    $impresa['id_mov_contab'] = $richiesta->id_mov_contab;
                    $impresa['massiva'] = $archivioRichieste['dir'] == 'risposteBaseDir' ? 0 : 1;
                    $impresa['id_richiesta'] = $richiesta->id_richiesta;
                    $impresa['test_nome_file'] = "\"" . str_replace('"', '\\"', basename($nomeFile)) . "\"";
                    $impresa['errore'] = '';
                    $impresa['data_ora_rich'] = $richiesta->data_ora_rich;
                    $impresa['data_ora_evas'] = $richiesta->data_ora_evas;
                    $impresa['cod_operazione'] = $richiesta->cod_operazione;
                    $impresa['cod_prodotto'] = $richiesta->cod_prodotto;
                    $impresa['cod_cliente'] = $richiesta->cod_cliente;
                    $impresa['cod_istanza'] = $richiesta->cod_istanza;
                    $impresa['importo'] = $richiesta->importo;
                    $impresa['dataCerved'] = $dati['dataCerved'];
                    $impresa['ragSoc'] = (string) $related->CompanyName;
                    $impresa['formaGiurid'] = (string) $related->CompanyTitle;
                    $impresa['codFisc'] = (string) $related->TaxCode;
                    $impresa['partIVA'] = $impresa['codFisc'];
                    $impresa['capitaleSociale'] = (string) $related->EquityCapital->Subscribed;
                    if (property_exists($related, 'PartnershipAddedValue')) {
                        $impresa['provCCIAA'] = (string) $related->PartnershipAddedValue->REAProvinceCode;
                        $impresa['nCCIAA'] = (string) $related->PartnershipAddedValue->REANo;
                        $impresa['prov'] = (string) $related->PartnershipAddedValue->Address->ProvinceCode;
                        $impresa['desISTAT'] = (string) $related->OtherInformationCompany->CATECOADescription;
                        $impresa['indirizzo'] = (string) $related->PartnershipAddedValue->Address->ToponymCode . ' ' . (string) $related->PartnershipAddedValue->Address->StreetName . ' ' . (string) $related->PartnershipAddedValue->Address->StreetNo;
                        $impresa['CAP'] = (string) $related->PartnershipAddedValue->Address->Postcode;
                    }
                    if ($impresa['partIVA'] == '') {
                        continue;
                    }
                    $company->setData(array());
                    $company->loadFromId($impresa['partIVA']);
                    $cDati = $company->getData();
                    if (is_array($cDati) && count($cDati) > 0) {
                        $company->setData(array_merge($cDati, array_filter($impresa)));
                        $company->update();
                    } else {
                        $company->setData($impresa);
                        $company->insert();
                    }
                    if (strlen($dati['codFisc']) == 16) {
                        $company->addRelatedExponent($person);
                    } else {
                        if ($dati['codFisc'] != '') {
                            $company->addRelatedCompany($rCompany);
                        }
                    }
                }
                $richieste->next();
            }
        }
        if (isset($statHandler)) {
            fclose($statHandler);
        }
        echo PHP_EOL;
    }
Exemplo n.º 7
0
    public function import($statOnly = '')
    {
        $dateFilter = '`data_ora_rich` > CURDATE() - INTERVAL 2 MONTH';
        if ($statOnly != '') {
            $config = clone $this->db->config;
            $configDb = $this->db->config->database->toArray();
            $configDb['options']['buffer_results'] = false;
            $this->db = new \Zend\Db\Adapter\Adapter($configDb);
            $this->db->config = $config;
            $dateFilter = 'TRUE';
            $manager = new \MongoDB\Driver\Manager("mongodb://localhost:27017");
            $bulk = new \MongoDB\Driver\BulkWrite();
        }
        $this->db->query('ALTER TABLE company DISABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE company_to_company DISABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE person DISABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE person_to_company DISABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $richieste = $this->db->query('
SELECT aps_prod_backup.eps_richiesta.id_richiesta,
aps_prod_backup.eps_richiesta.id_mov_contab,
aps_prod_backup.eps_richiesta.id_richiesta_cache,
aps_prod_backup.eps_richiesta.stringa_richiesta,
aps_prod_backup.eps_richiesta.data_ora_rich,
aps_prod_backup.eps_richiesta.data_ora_evas,
aps_prod.eps_operazione.cod_operazione as cod_operazione ,
aps_prod_backup.eps_mov_contab.cod_causale as cod_causale ,
aps_prod_backup.eps_mov_contab.importo as importo ,
aps_prod.eps_prodotto.cod_prodotto as cod_prodotto ,
aps_prod.eps_cliente.cod_cliente as cod_cliente ,
aps_prod.eps_istanza.cod_istanza as cod_istanza

FROM aps_prod_backup.eps_richiesta
LEFT JOIN aps_prod.eps_operazione ON aps_prod.eps_operazione.id_operazione=aps_prod_backup.eps_richiesta.id_operazione
LEFT JOIN aps_prod_backup.eps_mov_contab ON aps_prod_backup.eps_mov_contab.id_mov_contab=aps_prod_backup.eps_richiesta.id_mov_contab
LEFT JOIN aps_prod.eps_prodotto ON aps_prod.eps_prodotto.id_prodotto =aps_prod_backup.eps_mov_contab.id_prodotto
LEFT JOIN aps_prod.eps_cliente ON aps_prod.eps_cliente.id_cliente=aps_prod_backup.eps_mov_contab.id_cliente
LEFT JOIN aps_prod.eps_istanza ON aps_prod.eps_istanza.id_istanza=aps_prod.eps_cliente.id_istanza
WHERE  
' . $dateFilter . ' AND
   aps_prod.eps_operazione.cod_operazione = "negflagpreg2"
', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $count = 0;
        $totalCount = 0;
        $groupCount = 0;
        $company = new \crm\Company($this->db);
        $rCompany = new \crm\Company($this->db);
        $person = new \crm\Person($this->db);
        while (is_object($richiesta = $richieste->current())) {
            echo "\r" . $count++ . '/' . ($richieste->count() - 1) . str_repeat(' ', 5);
            $dati = array();
            $sId = str_pad($richiesta->id_richiesta, 9, '0', STR_PAD_LEFT);
            $dM = 'M' . substr($sId, 0, 3);
            $dK = 'K' . substr($sId, 3, 3);
            $nomeFile = $this->db->config->risposteBaseDir . "/{$dM}/{$dK}/F{$sId}.xml";
            if (!is_file($nomeFile)) {
                $richieste->next();
                continue;
            }
            $dati['id_mov_contab'] = $richiesta->id_mov_contab;
            $dati['massiva'] = 0;
            $dati['id_richiesta'] = $richiesta->id_richiesta;
            $dati['test_nome_file'] = "\"" . str_replace('"', '\\"', basename($nomeFile)) . "\"";
            $dati['errore'] = '';
            $dati['data_ora_rich'] = $richiesta->data_ora_rich;
            $dati['data_ora_evas'] = $richiesta->data_ora_evas;
            $dati['cod_operazione'] = $richiesta->cod_operazione;
            $dati['cod_prodotto'] = $richiesta->cod_prodotto;
            $dati['cod_cliente'] = $richiesta->cod_cliente;
            $dati['cod_istanza'] = $richiesta->cod_istanza;
            $dati['importo'] = $richiesta->importo;
            $dati['differita'] = 0;
            /*if ($richiesta->importo ==0 && $richiesta->id_richiesta_cache == 0) {
                 $richieste->next();
                 continue;
              }*/
            set_error_handler(create_function('', ''));
            try {
                $report = new \SimpleXMLElement($nomeFile, 0, true);
            } catch (\Exception $e) {
                var_dump($e);
            }
            restore_error_handler();
            if ($statOnly != '') {
                array_walk($dati, create_function('&$item', '$item=str_replace("\\"","",$item);'));
                if (isset($statHandler)) {
                    if (ftell($statHandler) == 0) {
                        fputcsv($statHandler, array_keys($dati));
                    }
                    fputcsv($statHandler, $dati);
                    fflush($statHandler);
                }
                $domXml = dom_import_simplexml($report);
                $aXML = array('_id' => $dati['id_mov_contab']);
                $this->xml2array($domXml, $aXML);
                /*$xml = new \SimpleXMLElement('<root/>');
                
                
                         $t*his->array_to_xml($aXML,$xml);*/
                if (true || is_array($aXML) && $totalCount++ < 10000.0) {
                    $bulk->update(array('_id' => $dati['id_mov_contab']), $aXML, array('multi' => false, 'upsert' => true));
                }
            }
            $richieste->next();
        }
        $this->db->query('ALTER TABLE company ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE company_to_company ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE person ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE person_to_company ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        if ($statOnly != '') {
            $manager->executeBulkWrite('risk.negflagpreg2', $bulk);
        }
        echo PHP_EOL;
    }
Exemplo n.º 8
0
    public function import()
    {
        if ($this->db->config->storeExpiryStatFile->Offline != '') {
            $statHandler = fopen($this->db->config->storeExpiryStatFile->Offline, 'w');
        }
        $archiviRichieste = array(array('dir' => 'risposteBaseDir', 'sql' => '
SELECT aps_prod_backup.eps_richiesta.id_richiesta,
aps_prod_backup.eps_richiesta.id_mov_contab,
aps_prod_backup.eps_richiesta.id_richiesta_cache,
aps_prod_backup.eps_richiesta.stringa_richiesta,
aps_prod_backup.eps_richiesta.data_ora_rich,
aps_prod_backup.eps_richiesta.data_ora_evas,
aps_prod.eps_operazione.cod_operazione as cod_operazione ,
aps_prod_backup.eps_mov_contab.cod_causale as cod_causale ,
aps_prod_backup.eps_mov_contab.importo as importo ,
aps_prod_backup.eps_mov_contab.id_mov_contab_gen as id_mov_contab_gen ,
aps_prod.eps_prodotto.cod_prodotto as cod_prodotto ,
aps_prod.eps_cliente.cod_cliente as cod_cliente ,
aps_prod.eps_istanza.cod_istanza as cod_istanza

FROM aps_prod_backup.eps_richiesta
LEFT JOIN aps_prod.eps_operazione ON aps_prod.eps_operazione.id_operazione=aps_prod_backup.eps_richiesta.id_operazione
LEFT JOIN aps_prod_backup.eps_mov_contab ON aps_prod_backup.eps_mov_contab.id_mov_contab=aps_prod_backup.eps_richiesta.id_mov_contab
LEFT JOIN aps_prod.eps_prodotto ON aps_prod.eps_prodotto.id_prodotto =aps_prod_backup.eps_mov_contab.id_prodotto
LEFT JOIN aps_prod.eps_cliente ON aps_prod.eps_cliente.id_cliente=aps_prod_backup.eps_mov_contab.id_cliente
LEFT JOIN aps_prod.eps_istanza ON aps_prod.eps_istanza.id_istanza=aps_prod.eps_cliente.id_istanza
LEFT JOIN aps_prod.eps_operaz_classe ON aps_prod.eps_operaz_classe.id_classe=aps_prod.eps_operazione.id_classe
WHERE  
TRUE AND
aps_prod.eps_operaz_classe.on_off_line="off"
                    '));
        foreach ($archiviRichieste as $archivioRichieste) {
            $richieste = $this->db->query($archivioRichieste['sql'], \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
            $count = 0;
            while (is_object($richiesta = $richieste->current())) {
                echo "\r" . $count++ . '/' . ($richieste->count() - 1) . str_repeat(' ', 5);
                $dati = array();
                $sId = str_pad($richiesta->id_richiesta, 9, '0', STR_PAD_LEFT);
                $dM = 'M' . substr($sId, 0, 3);
                $dK = 'K' . substr($sId, 3, 3);
                $nomeFile = $this->db->config->{$archivioRichieste['dir']} . "/{$dM}/{$dK}/F{$sId}*";
                $fileGlob = glob($nomeFile);
                if (!is_array($fileGlob) || sizeof($fileGlob) == 0) {
                    $richieste->next();
                    continue;
                }
                $nomeFile = current($fileGlob);
                $dati['id_mov_contab'] = $richiesta->id_mov_contab;
                $dati['massiva'] = $archivioRichieste['dir'] == 'risposteBaseDir' ? 0 : 1;
                $dati['id_richiesta'] = $richiesta->id_richiesta;
                $dati['test_nome_file'] = "\"" . str_replace('"', '\\"', basename($nomeFile)) . "\"";
                $dati['errore'] = '';
                $dati['data_ora_rich'] = $richiesta->data_ora_rich;
                $dati['data_ora_evas'] = $richiesta->data_ora_evas;
                $dati['cod_operazione'] = $richiesta->cod_operazione;
                $dati['cod_prodotto'] = $richiesta->cod_prodotto;
                $dati['cod_cliente'] = $richiesta->cod_cliente;
                $dati['cod_istanza'] = $richiesta->cod_istanza;
                $dati['importo'] = $richiesta->importo;
                $dati['differita'] = 1;
                $dati['stornata'] = 0;
                if ($richiesta->importo == 0 && $richiesta->id_richiesta_cache == 0) {
                    $dati['stornata'] = 1;
                }
                array_walk($dati, create_function('&$item', '$item=str_replace("\\"","",$item);'));
                if (isset($statHandler)) {
                    if (ftell($statHandler) == 0) {
                        fputcsv($statHandler, array_keys($dati));
                    }
                    fputcsv($statHandler, $dati);
                    fflush($statHandler);
                }
                $richieste->next();
            }
        }
        if (isset($statHandler)) {
            fclose($statHandler);
        }
        echo PHP_EOL;
    }
Exemplo n.º 9
0
    public function import($statOnly = '')
    {
        $dateFilter = '`data_ora_rich` > CURDATE() - INTERVAL 2 MONTH';
        if ($statOnly != '') {
            $config = clone $this->db->config;
            $configDb = $this->db->config->database->toArray();
            $configDb['options']['buffer_results'] = false;
            $this->db = new \Zend\Db\Adapter\Adapter($configDb);
            $this->db->config = $config;
            $dateFilter = 'TRUE';
            if ($this->db->config->storeExpiryStatFile->Skimp != '') {
                $statHandler = fopen($this->db->config->storeExpiryStatFile->Skimp, 'w');
            }
            $manager = new \MongoDB\Driver\Manager("mongodb://localhost:27017");
            $bulk = new \MongoDB\Driver\BulkWrite();
        }
        $this->db->query('ALTER TABLE company DISABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE company_to_company DISABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE person DISABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE person_to_company DISABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $archiviRichieste = array(array('dir' => 'risposteBaseDirMass', 'sql' => '
SELECT aps_prod_backup.eps_richiesta_mass.id_richiesta,
aps_prod_backup.eps_richiesta_mass.id_mov_contab,
aps_prod_backup.eps_richiesta_mass.id_richiesta_cache,
aps_prod_backup.eps_richiesta_mass.stringa_richiesta,
aps_prod_backup.eps_richiesta_mass.data_ora_rich,
aps_prod_backup.eps_richiesta_mass.data_ora_evas,
aps_prod.eps_operazione.cod_operazione as cod_operazione ,
aps_prod_backup.eps_mov_contab_mass.cod_causale as cod_causale ,
aps_prod_backup.eps_mov_contab_mass.importo as importo ,
aps_prod.eps_prodotto.cod_prodotto as cod_prodotto ,
aps_prod.eps_cliente.cod_cliente as cod_cliente ,
aps_prod.eps_istanza.cod_istanza as cod_istanza

FROM aps_prod_backup.eps_richiesta_mass
LEFT JOIN aps_prod.eps_operazione ON aps_prod.eps_operazione.id_operazione=aps_prod_backup.eps_richiesta_mass.id_operazione
LEFT JOIN aps_prod_backup.eps_mov_contab_mass ON aps_prod_backup.eps_mov_contab_mass.id_mov_contab=aps_prod_backup.eps_richiesta_mass.id_mov_contab
LEFT JOIN aps_prod.eps_prodotto ON aps_prod.eps_prodotto.id_prodotto =aps_prod_backup.eps_mov_contab_mass.id_prodotto
LEFT JOIN aps_prod.eps_cliente ON aps_prod.eps_cliente.id_cliente=aps_prod_backup.eps_mov_contab_mass.id_cliente
LEFT JOIN aps_prod.eps_istanza ON aps_prod.eps_istanza.id_istanza=aps_prod.eps_cliente.id_istanza
WHERE  
' . $dateFilter . ' AND (
   aps_prod.eps_operazione.cod_operazione = "skimpord" OR 
   aps_prod.eps_operazione.cod_operazione = "skimpsto"
)

          '), array('dir' => 'risposteBaseDir', 'sql' => '
SELECT aps_prod_backup.eps_richiesta.id_richiesta,
aps_prod_backup.eps_richiesta.id_mov_contab,
aps_prod_backup.eps_richiesta.id_richiesta_cache,
aps_prod_backup.eps_richiesta.stringa_richiesta,
aps_prod_backup.eps_richiesta.data_ora_rich,
aps_prod_backup.eps_richiesta.data_ora_evas,
aps_prod.eps_operazione.cod_operazione as cod_operazione ,
aps_prod_backup.eps_mov_contab.cod_causale as cod_causale ,
aps_prod_backup.eps_mov_contab.importo as importo ,
aps_prod.eps_prodotto.cod_prodotto as cod_prodotto ,
aps_prod.eps_cliente.cod_cliente as cod_cliente ,
aps_prod.eps_istanza.cod_istanza as cod_istanza

FROM aps_prod_backup.eps_richiesta
LEFT JOIN aps_prod.eps_operazione ON aps_prod.eps_operazione.id_operazione=aps_prod_backup.eps_richiesta.id_operazione
LEFT JOIN aps_prod_backup.eps_mov_contab ON aps_prod_backup.eps_mov_contab.id_mov_contab=aps_prod_backup.eps_richiesta.id_mov_contab
LEFT JOIN aps_prod.eps_prodotto ON aps_prod.eps_prodotto.id_prodotto =aps_prod_backup.eps_mov_contab.id_prodotto
LEFT JOIN aps_prod.eps_cliente ON aps_prod.eps_cliente.id_cliente=aps_prod_backup.eps_mov_contab.id_cliente
LEFT JOIN aps_prod.eps_istanza ON aps_prod.eps_istanza.id_istanza=aps_prod.eps_cliente.id_istanza
WHERE  
' . $dateFilter . ' AND (
   aps_prod.eps_operazione.cod_operazione = "skimpord" OR 
   aps_prod.eps_operazione.cod_operazione = "skimpsto"
)
'));
        foreach ($archiviRichieste as $archivioRichieste) {
            $richieste = $this->db->query($archivioRichieste['sql'], \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
            $count = 0;
            $totalCount = 0;
            $groupCount = 0;
            $company = new \crm\Company($this->db);
            $rCompany = new \crm\Company($this->db);
            $person = new \crm\Person($this->db);
            while (is_object($richiesta = $richieste->current())) {
                echo "\r" . $count++ . '/' . ($richieste->count() - 1) . str_repeat(' ', 5);
                $dati = array();
                $imprese = array();
                $esponenti = array();
                $sId = str_pad($richiesta->id_richiesta, 9, '0', STR_PAD_LEFT);
                $dM = 'M' . substr($sId, 0, 3);
                $dK = 'K' . substr($sId, 3, 3);
                $nomeFile = $this->db->config->{$archivioRichieste['dir']} . "/{$dM}/{$dK}/F{$sId}.xml";
                if (!is_file($nomeFile)) {
                    $richieste->next();
                    continue;
                }
                $dati['id_mov_contab'] = $richiesta->id_mov_contab;
                $dati['massiva'] = 0;
                $dati['id_richiesta'] = $richiesta->id_richiesta;
                $dati['test_nome_file'] = "\"" . str_replace('"', '\\"', basename($nomeFile)) . "\"";
                $dati['errore'] = '';
                $dati['data_ora_rich'] = $richiesta->data_ora_rich;
                $dati['data_ora_evas'] = $richiesta->data_ora_evas;
                $dati['cod_operazione'] = $richiesta->cod_operazione;
                $dati['cod_prodotto'] = $richiesta->cod_prodotto;
                $dati['cod_cliente'] = $richiesta->cod_cliente;
                $dati['cod_istanza'] = $richiesta->cod_istanza;
                $dati['importo'] = $richiesta->importo;
                $dati['differita'] = 0;
                if ($richiesta->importo == 0 && $richiesta->id_richiesta_cache == 0) {
                    $richieste->next();
                    continue;
                }
                set_error_handler(create_function('', ''));
                try {
                    $sXML = new \SimpleXMLElement($nomeFile, 0, true);
                } catch (\Exception $e) {
                    $dati['differita'] = 1;
                    $data = file_get_contents($nomeFile);
                    preg_match('/--(?<MIME_boundary>.+?)\\s/', $data, $match);
                    $mimeBoundary = $match['MIME_boundary'];
                    preg_match('/(.*Content-Id.+' . PHP_EOL . ')/', $data, $match);
                    $start = strpos($data, $match[1]) + strlen($match[1]);
                    $end = strpos($data, "--{$mimeBoundary}--");
                    $data = substr($data, $start, $end - $start);
                    try {
                        $sXML = new \SimpleXMLElement(trim($data));
                    } catch (\Exception $e) {
                        $dati['differita'] = 0;
                    }
                }
                $dati['dataCerved'] = '';
                $report = $sXML->xpath('/s:Envelope/s:Body/*')[0]->BasicReportDocument;
                $date = new \DateTime((string) $sXML->xpath('/s:Envelope/s:Body/*')[0]->TransactionResponse->Details->ResponseTimestamp[0]);
                if (is_object($date)) {
                    $dati['dataCerved'] = $date->format('Y-m-d H:i:s');
                }
                $dati['gruppo'] = '';
                $dati['gruppoRuolo'] = '';
                $dati['partIVA'] = (string) $report->CRR->ID->C->attributes()->VC[0];
                $dati['ragSoc'] = (string) $report->CRR->ID->C->attributes()->ND[0];
                $dati['codFisc'] = (string) $report->CRR->ID->C->attributes()->TC[0];
                $dati['provCCIAA'] = (string) $report->CRR->ID->C->attributes()->PCCIAA[0];
                $dati['nCCIAA'] = (string) $report->CRR->ID->C->attributes()->RC[0];
                $dati['prov'] = (string) $report->CRR->ID->C->AD->attributes()->PC[0];
                $dati['comune'] = (string) $report->CRR->ID->C->AD->attributes()->TD[0];
                $dati['indirizzo'] = (string) $report->CRR->ID->C->AD->attributes()->TP[0] . ' ' . (string) $report->CRR->ID->C->AD->attributes()->AD[0] . ' ' . (string) $report->CRR->ID->C->AD->attributes()->N[0];
                $dati['CAP'] = (string) $report->CRR->ID->C->AD->attributes()->ZC[0];
                $dati['nazione'] = 'IT';
                $dati['sitoWeb'] = '';
                $dati['email'] = '';
                $dati['telefono'] = '';
                foreach ($report->CRR->ID->C->C as $contact) {
                    switch ($contact->attributes()->TC) {
                        case 'U':
                            $dati['sitoWeb'] = (string) $contact->attributes()->CV[0];
                            break;
                        case 'T':
                            $dati['telefono'] = (string) $contact->attributes()->CV[0];
                            break;
                        case 'E':
                        case 'C':
                            $dati['email'] = (string) $contact->attributes()->CV[0];
                            break;
                    }
                }
                $dati['statoAttivita'] = (string) $report->CRR->ID->C->attributes()->BSD[0];
                $dati['formaGiurid'] = (string) $report->CRR->ID->C->attributes()->LFCD[0];
                $dati['tipoSoc'] = (string) $report->CRR->ID->C->attributes()->LFGCD[0];
                $dati['capitaleSociale'] = '';
                if (is_object($report->CRR->AF->LD->FA->SC->AC)) {
                    $dati['capitaleSociale'] = (string) $report->CRR->AF->LD->FA->SC->AC->attributes()->A[0];
                }
                $dati['codISTAT'] = '';
                $dati['desISTAT'] = '';
                if (is_object($report->CRR->AF->A->IA->PA07)) {
                    $dati['codISTAT'] = (string) $report->CRR->AF->A->IA->PA07->attributes()->C[0];
                    $dati['desISTAT'] = (string) $report->CRR->AF->A->IA->PA07->attributes()->D[0];
                }
                if (is_object($report->CRR->AF->A->NACE)) {
                    $dati['codNACE'] = (string) $report->CRR->AF->A->NACE->attributes()->C[0];
                }
                $dati['dataInizioAtt'] = '';
                $date = new \DateTime((string) $report->CRR->ID->C->attributes()->SD[0]);
                if (is_object($date)) {
                    $dati['dataInizioAtt'] = $date->format('Y-m-d H:i:s');
                }
                $dati['dataCostituzione'] = '';
                $dati['dataREA'] = '';
                $date = new \DateTime((string) $report->CRR->AF->LD->H->attributes()->SD[0]);
                if (is_object($date)) {
                    $dati['dataREA'] = $date->format('Y-m-d H:i:s');
                }
                $dati['fidoAffidabilta'] = '';
                $dati['fidoAffidabiltaNote'] = '';
                $dati['fidoAccordabile'] = '';
                $dati['numUffSedi'] = count($report->CRR->Bs->B);
                $dati['desAttivita'] = (string) $report->CRR->AF->LD->AA->attributes()->SO[0];
                $dati['eventi'] = count($report->CRR->RE->LE);
                $dati['protesti'] = count($report->CRR->RE->NE->PRTs);
                $dati['fallimenti'] = count($report->CRR->RE->NE->PE);
                $dati['pregiudizievoli'] = count($report->CRR->RE->NE->LPs) + count($report->CRR->RE->NE->PERER);
                $dati['cassaIntegrazione'] = '';
                if (is_object($report->CRR->AF->A->ED)) {
                    $dati['nDipendenti'] = $report->CRR->AF->A->ED->attributes()->N + $report->CRR->AF->A->ED->attributes()->SEN;
                }
                $dati['fatturato'] = '';
                $dati['annoFatturato'] = '';
                $dati['utilePerdita'] = '';
                $dati['patrimonioNetto'] = '';
                $dati['trendFatturato'] = '';
                $dati['margineOperativoLordo'] = '';
                $dati['risultatoOperativoLordo'] = '';
                $dati['indiceIndebitamento'] = '';
                $dati['ROI'] = '';
                $dati['ROE'] = '';
                $dati['indiceLiquidita'] = '';
                if (is_object($report->CRR->BSs->BSS->BSD)) {
                    $dati['fatturato'] = (string) $report->CRR->BSs->BSS->BSD->PLA->attributes()->TR[0];
                    $dati['annoFatturato'] = (string) $report->CRR->BSs->BSS->BSD->attributes()->Y[0];
                    $dati['utilePerdita'] = (string) $report->CRR->BSs->BSS->BSD->PLA->attributes()->PL[0];
                    $dati['patrimonioNetto'] = (string) $report->CRR->BSs->BSS->BSD->LB->attributes()->PL[0];
                }
                $dati['dataChiusuraBilancio'] = '';
                foreach ($report->CRR->Rs->R as $subsidiarie) {
                    if (is_object($subsidiarie->ID->P)) {
                        $esponente = array();
                        $esponente['nome'] = (string) $subsidiarie->ID->P->attributes()->N;
                        $esponente['cognome'] = (string) $subsidiarie->ID->P->attributes()->S;
                        $esponente['codFisc'] = (string) $subsidiarie->ID->P->attributes()->TC;
                        $esponente['dataNas'] = '';
                        if (is_object($subsidiarie->ID->P->BD)) {
                            $date = new \DateTime((string) $subsidiarie->ID->P->BD->attributes()->D);
                            if (is_object($date)) {
                                $esponente['dataNas'] = $date->format('Y-m-d');
                            }
                            $esponente['luogoNas'] = (string) $subsidiarie->ID->P->BD->attributes()->TD;
                        }
                        if (is_object($subsidiarie->ID->P->AD)) {
                            $esponente['prov'] = (string) $subsidiarie->ID->P->AD->attributes()->PC;
                            $esponente['comune'] = (string) $subsidiarie->ID->P->AD->attributes()->TD;
                            $esponente['indirizzo'] = (string) $subsidiarie->ID->P->AD->attributes()->TP . ' ' . (string) $subsidiarie->ID->P->AD->attributes()->AD . ' ' . (string) $subsidiarie->ID->P->AD->attributes()->N;
                            $esponente['CAP'] = (string) $subsidiarie->ID->P->AD->attributes()->ZC;
                        }
                        if (is_object($subsidiarie->RPs->RP->R)) {
                            $esponente['titolo'] = (string) $subsidiarie->RPs->RP->R->attributes()->RDES;
                        }
                        $esponenti[] = $esponente;
                    } else {
                        if (is_object($subsidiarie->ID->C)) {
                            $impresa = array();
                            $impresa['ragSoc'] = (string) $subsidiarie->ID->C->attributes()->ND;
                            $impresa['formaGiurid'] = '';
                            $impresa['partIVA'] = (string) $subsidiarie->ID->C->attributes()->TC;
                            $impresa['capitaleSociale'] = '';
                            $impresa['statoAttivita'] = '';
                            $impresa['provCCIAA'] = '';
                            $impresa['nCCIAA'] = '';
                            $impresa['prov'] = (string) $subsidiarie->ID->C->AD->attributes()->PC;
                            $impresa['comune'] = (string) $subsidiarie->ID->C->AD->attributes()->TD;
                            $impresa['indirizzo'] = (string) $subsidiarie->ID->C->AD->attributes()->TP . ' ' . (string) $subsidiarie->ID->C->AD->attributes()->AD . ' ' . (string) $subsidiarie->ID->C->AD->attributes()->N;
                            $impresa['CAP'] = (string) $subsidiarie->ID->C->AD->attributes()->ZC;
                            $impresa['titolo'] = (string) $subsidiarie->RPs->RP->R->attributes()->RDES;
                            $imprese[] = $impresa;
                        }
                    }
                }
                foreach ($report->CRR->Ss->S->SI as $subsidiarie) {
                    if (is_object($subsidiarie->ID->P)) {
                        $esponente = array();
                        $esponente['nome'] = (string) $subsidiarie->ID->P->attributes()->N;
                        $esponente['cognome'] = (string) $subsidiarie->ID->P->attributes()->S;
                        $esponente['codFisc'] = (string) $subsidiarie->ID->P->attributes()->TC;
                        $esponente['dataNas'] = '';
                        if (is_object($subsidiarie->ID->P->BD) && is_object($subsidiarie->ID->P->BD->attributes())) {
                            $date = new \DateTime((string) $subsidiarie->ID->P->BD->attributes()->D);
                            if (is_object($date)) {
                                $esponente['dataNas'] = $date->format('Y-m-d');
                            }
                            $esponente['luogoNas'] = (string) $subsidiarie->ID->P->BD->attributes()->TD;
                        }
                        if (is_object($subsidiarie->ID->P->AD)) {
                            $esponente['prov'] = (string) $subsidiarie->ID->P->AD->attributes()->PC;
                            $esponente['comune'] = (string) $subsidiarie->ID->P->AD->attributes()->TD;
                            $esponente['indirizzo'] = (string) $subsidiarie->ID->P->AD->attributes()->TP . ' ' . (string) $subsidiarie->ID->P->AD->attributes()->AD . ' ' . (string) $subsidiarie->ID->P->AD->attributes()->N;
                            $esponente['CAP'] = (string) $subsidiarie->ID->P->AD->attributes()->ZC;
                        }
                        $esponente['titolo'] = 'SOCIO';
                        $esponenti[] = $esponente;
                    } else {
                        if (is_object($subsidiarie->ID->C)) {
                            $impresa = array();
                            $impresa['ragSoc'] = (string) $subsidiarie->ID->C->attributes()->ND;
                            $impresa['formaGiurid'] = '';
                            $impresa['partIVA'] = (string) $subsidiarie->ID->C->attributes()->TC;
                            $impresa['capitaleSociale'] = '';
                            $impresa['statoAttivita'] = '';
                            $impresa['provCCIAA'] = '';
                            $impresa['nCCIAA'] = '';
                            $impresa['prov'] = (string) $subsidiarie->ID->C->AD->attributes()->PC;
                            $impresa['comune'] = (string) $subsidiarie->ID->C->AD->attributes()->TD;
                            $impresa['indirizzo'] = (string) $subsidiarie->ID->C->AD->attributes()->TP . ' ' . (string) $subsidiarie->ID->C->AD->attributes()->AD . ' ' . (string) $subsidiarie->ID->C->AD->attributes()->N;
                            $impresa['CAP'] = (string) $subsidiarie->ID->C->AD->attributes()->ZC;
                            $impresa['titolo'] = 'SOCIO';
                            $imprese[] = $impresa;
                        }
                    }
                }
                restore_error_handler();
                if ($statOnly != '') {
                    array_walk($dati, create_function('&$item', '$item=str_replace("\\"","",$item);'));
                    if (isset($statHandler)) {
                        if (ftell($statHandler) == 0) {
                            fputcsv($statHandler, array_keys($dati));
                        }
                        fputcsv($statHandler, $dati);
                        fflush($statHandler);
                    }
                    $domXml = dom_import_simplexml($report);
                    $aXML = array('_id' => $dati['id_mov_contab']);
                    $this->xml2array($domXml, $aXML);
                    /*$xml = new \SimpleXMLElement('<root/>');
                    
                    
                                $t*his->array_to_xml($aXML,$xml);*/
                    if (true || is_array($aXML) && $totalCount++ < 10000.0) {
                        $bulk->update(array('_id' => $dati['id_mov_contab']), $aXML, array('multi' => false, 'upsert' => true));
                    }
                }
                if ($dati['partIVA'] == '' || $dati['partIVA'] == 0 || $statOnly != '') {
                    $richieste->next();
                    continue;
                }
                $company->setData(array());
                $company->loadFromId($dati['partIVA']);
                $cDati = $company->getData();
                if (is_array($cDati) && count($cDati) > 0) {
                    $company->setData(array_merge($cDati, array_filter($dati)));
                    $company->update();
                } else {
                    $company->setData($dati);
                    $company->insert();
                }
                foreach ($imprese as $impresa) {
                    $rCompany->setData(array());
                    $rCompany->loadFromId($impresa['partIVA']);
                    $cDati = $rCompany->getData();
                    if (is_array($cDati) && count($cDati) > 0) {
                        $rCompany->setData(array_merge($cDati, array_filter($impresa)));
                        $rCompany->update();
                    } else {
                        $rCompany->setData($impresa);
                        $rCompany->insert();
                    }
                    $company->addRelatedCompany($rCompany);
                }
                foreach ($esponenti as $esponente) {
                    if (strlen($esponente['codFisc']) == 16) {
                        $person->setData(array());
                        $person->loadFromId($esponente['codFisc']);
                        $cDati = $person->getData();
                        if (is_array($cDati) && count($cDati) > 0) {
                            $person->setData(array_merge($cDati, array_filter($esponente)));
                            $person->update();
                        } else {
                            $person->setData($esponente);
                            $person->insert();
                        }
                        $company->addRelatedExponent($person);
                    } else {
                        $rCompany->setData(array());
                        $esponente['partIVA'] = $esponente['codFisc'];
                        $rCompany->loadFromId($esponente['partIVA']);
                        $cDati = $rCompany->getData();
                        if (is_array($cDati) && count($cDati) > 0) {
                            $rCompany->setData(array_merge($cDati, array_filter($esponente)));
                            $rCompany->update();
                        } else {
                            $rCompany->setData($esponente);
                            $rCompany->insert();
                        }
                        $company->addRelatedCompany($rCompany);
                    }
                }
                $richieste->next();
            }
        }
        $this->db->query('ALTER TABLE company ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE company_to_company ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE person ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE person_to_company ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        if (isset($statHandler)) {
            fclose($statHandler);
            if ($bulk->count() > 0) {
                $manager->executeBulkWrite('report_impresa.skimp', $bulk);
            }
        }
        echo PHP_EOL;
    }
Exemplo n.º 10
0
    public function import()
    {
        $province = array();
        $province['TO'] = array('region' => 'Piemonte', 'district' => 'Nord-ovest');
        $province['VC'] = array('region' => 'Piemonte', 'district' => 'Nord-ovest');
        $province['NO'] = array('region' => 'Piemonte', 'district' => 'Nord-ovest');
        $province['CN'] = array('region' => 'Piemonte', 'district' => 'Nord-ovest');
        $province['AT'] = array('region' => 'Piemonte', 'district' => 'Nord-ovest');
        $province['AL'] = array('region' => 'Piemonte', 'district' => 'Nord-ovest');
        $province['BI'] = array('region' => 'Piemonte', 'district' => 'Nord-ovest');
        $province['VB'] = array('region' => 'Piemonte', 'district' => 'Nord-ovest');
        $province['AO'] = array('region' => 'Valle d\'Aosta/Vallée d\'Aoste', 'district' => 'Nord-ovest');
        $province['VA'] = array('region' => 'Lombardia', 'district' => 'Nord-ovest');
        $province['CO'] = array('region' => 'Lombardia', 'district' => 'Nord-ovest');
        $province['SO'] = array('region' => 'Lombardia', 'district' => 'Nord-ovest');
        $province['MI'] = array('region' => 'Lombardia', 'district' => 'Nord-ovest');
        $province['BG'] = array('region' => 'Lombardia', 'district' => 'Nord-ovest');
        $province['BS'] = array('region' => 'Lombardia', 'district' => 'Nord-ovest');
        $province['PV'] = array('region' => 'Lombardia', 'district' => 'Nord-ovest');
        $province['CR'] = array('region' => 'Lombardia', 'district' => 'Nord-ovest');
        $province['MN'] = array('region' => 'Lombardia', 'district' => 'Nord-ovest');
        $province['LC'] = array('region' => 'Lombardia', 'district' => 'Nord-ovest');
        $province['LO'] = array('region' => 'Lombardia', 'district' => 'Nord-ovest');
        $province['MB'] = array('region' => 'Lombardia', 'district' => 'Nord-ovest');
        $province['BZ'] = array('region' => 'Trentino-Alto Adige/Südtirol', 'district' => 'Nord-est');
        $province['TN'] = array('region' => 'Trentino-Alto Adige/Südtirol', 'district' => 'Nord-est');
        $province['VR'] = array('region' => 'Veneto', 'district' => 'Nord-est');
        $province['VI'] = array('region' => 'Veneto', 'district' => 'Nord-est');
        $province['BL'] = array('region' => 'Veneto', 'district' => 'Nord-est');
        $province['TV'] = array('region' => 'Veneto', 'district' => 'Nord-est');
        $province['VE'] = array('region' => 'Veneto', 'district' => 'Nord-est');
        $province['PD'] = array('region' => 'Veneto', 'district' => 'Nord-est');
        $province['RO'] = array('region' => 'Veneto', 'district' => 'Nord-est');
        $province['UD'] = array('region' => 'Friuli-Venezia Giulia', 'district' => 'Nord-est');
        $province['GO'] = array('region' => 'Friuli-Venezia Giulia', 'district' => 'Nord-est');
        $province['TS'] = array('region' => 'Friuli-Venezia Giulia', 'district' => 'Nord-est');
        $province['PN'] = array('region' => 'Friuli-Venezia Giulia', 'district' => 'Nord-est');
        $province['IM'] = array('region' => 'Liguria', 'district' => 'Nord-ovest');
        $province['SV'] = array('region' => 'Liguria', 'district' => 'Nord-ovest');
        $province['GE'] = array('region' => 'Liguria', 'district' => 'Nord-ovest');
        $province['SP'] = array('region' => 'Liguria', 'district' => 'Nord-ovest');
        $province['PC'] = array('region' => 'Emilia-Romagna', 'district' => 'Nord-est');
        $province['PR'] = array('region' => 'Emilia-Romagna', 'district' => 'Nord-est');
        $province['RE'] = array('region' => 'Emilia-Romagna', 'district' => 'Nord-est');
        $province['MO'] = array('region' => 'Emilia-Romagna', 'district' => 'Nord-est');
        $province['BO'] = array('region' => 'Emilia-Romagna', 'district' => 'Nord-est');
        $province['FE'] = array('region' => 'Emilia-Romagna', 'district' => 'Nord-est');
        $province['RA'] = array('region' => 'Emilia-Romagna', 'district' => 'Nord-est');
        $province['FC'] = array('region' => 'Emilia-Romagna', 'district' => 'Nord-est');
        $province['RN'] = array('region' => 'Emilia-Romagna', 'district' => 'Nord-est');
        $province['MS'] = array('region' => 'Toscana', 'district' => 'Centro');
        $province['LU'] = array('region' => 'Toscana', 'district' => 'Centro');
        $province['PT'] = array('region' => 'Toscana', 'district' => 'Centro');
        $province['FI'] = array('region' => 'Toscana', 'district' => 'Centro');
        $province['LI'] = array('region' => 'Toscana', 'district' => 'Centro');
        $province['PI'] = array('region' => 'Toscana', 'district' => 'Centro');
        $province['AR'] = array('region' => 'Toscana', 'district' => 'Centro');
        $province['SI'] = array('region' => 'Toscana', 'district' => 'Centro');
        $province['GR'] = array('region' => 'Toscana', 'district' => 'Centro');
        $province['PO'] = array('region' => 'Toscana', 'district' => 'Centro');
        $province['PG'] = array('region' => 'Umbria', 'district' => 'Centro');
        $province['TR'] = array('region' => 'Umbria', 'district' => 'Centro');
        $province['PU'] = array('region' => 'Marche', 'district' => 'Centro');
        $province['AN'] = array('region' => 'Marche', 'district' => 'Centro');
        $province['MC'] = array('region' => 'Marche', 'district' => 'Centro');
        $province['AP'] = array('region' => 'Marche', 'district' => 'Centro');
        $province['FM'] = array('region' => 'Marche', 'district' => 'Centro');
        $province['VT'] = array('region' => 'Lazio', 'district' => 'Centro');
        $province['RI'] = array('region' => 'Lazio', 'district' => 'Centro');
        $province['RM'] = array('region' => 'Lazio', 'district' => 'Centro');
        $province['LT'] = array('region' => 'Lazio', 'district' => 'Centro');
        $province['FR'] = array('region' => 'Lazio', 'district' => 'Centro');
        $province['AQ'] = array('region' => 'Abruzzo', 'district' => 'Sud');
        $province['TE'] = array('region' => 'Abruzzo', 'district' => 'Sud');
        $province['PE'] = array('region' => 'Abruzzo', 'district' => 'Sud');
        $province['CH'] = array('region' => 'Abruzzo', 'district' => 'Sud');
        $province['CB'] = array('region' => 'Molise', 'district' => 'Sud');
        $province['IS'] = array('region' => 'Molise', 'district' => 'Sud');
        $province['CE'] = array('region' => 'Campania', 'district' => 'Sud');
        $province['BN'] = array('region' => 'Campania', 'district' => 'Sud');
        $province['NA'] = array('region' => 'Campania', 'district' => 'Sud');
        $province['AV'] = array('region' => 'Campania', 'district' => 'Sud');
        $province['SA'] = array('region' => 'Campania', 'district' => 'Sud');
        $province['FG'] = array('region' => 'Puglia', 'district' => 'Sud');
        $province['BA'] = array('region' => 'Puglia', 'district' => 'Sud');
        $province['TA'] = array('region' => 'Puglia', 'district' => 'Sud');
        $province['BR'] = array('region' => 'Puglia', 'district' => 'Sud');
        $province['LE'] = array('region' => 'Puglia', 'district' => 'Sud');
        $province['BT'] = array('region' => 'Puglia', 'district' => 'Sud');
        $province['PZ'] = array('region' => 'Basilicata', 'district' => 'Sud');
        $province['MT'] = array('region' => 'Basilicata', 'district' => 'Sud');
        $province['CS'] = array('region' => 'Calabria', 'district' => 'Sud');
        $province['CZ'] = array('region' => 'Calabria', 'district' => 'Sud');
        $province['RC'] = array('region' => 'Calabria', 'district' => 'Sud');
        $province['KR'] = array('region' => 'Calabria', 'district' => 'Sud');
        $province['VV'] = array('region' => 'Calabria', 'district' => 'Sud');
        $province['TP'] = array('region' => 'Sicilia', 'district' => 'Isole');
        $province['PA'] = array('region' => 'Sicilia', 'district' => 'Isole');
        $province['ME'] = array('region' => 'Sicilia', 'district' => 'Isole');
        $province['AG'] = array('region' => 'Sicilia', 'district' => 'Isole');
        $province['CL'] = array('region' => 'Sicilia', 'district' => 'Isole');
        $province['EN'] = array('region' => 'Sicilia', 'district' => 'Isole');
        $province['CT'] = array('region' => 'Sicilia', 'district' => 'Isole');
        $province['RG'] = array('region' => 'Sicilia', 'district' => 'Isole');
        $province['SR'] = array('region' => 'Sicilia', 'district' => 'Isole');
        $province['SS'] = array('region' => 'Sardegna', 'district' => 'Isole');
        $province['NU'] = array('region' => 'Sardegna', 'district' => 'Isole');
        $province['CA'] = array('region' => 'Sardegna', 'district' => 'Isole');
        $province['OR'] = array('region' => 'Sardegna', 'district' => 'Isole');
        $province['OT'] = array('region' => 'Sardegna', 'district' => 'Isole');
        $province['OG'] = array('region' => 'Sardegna', 'district' => 'Isole');
        $province['VS'] = array('region' => 'Sardegna', 'district' => 'Isole');
        $province['CI'] = array('region' => 'Sardegna', 'district' => 'Isole');
        $meseNascita = array();
        $meseNascita['A'] = 1;
        $meseNascita['B'] = 2;
        $meseNascita['C'] = 3;
        $meseNascita['D'] = 4;
        $meseNascita['E'] = 5;
        $meseNascita['H'] = 6;
        $meseNascita['L'] = 7;
        $meseNascita['M'] = 8;
        $meseNascita['P'] = 9;
        $meseNascita['R'] = 10;
        $meseNascita['S'] = 11;
        $meseNascita['T'] = 12;
        $nazioniNascita = array();
        $nazioniNascita["Z200"] = "Afghanistan";
        $nazioniNascita["Z300"] = "Africa Del Sud-Ovest";
        $nazioniNascita["Z100"] = "Albania";
        $nazioniNascita["Z301"] = "Algeria";
        $nazioniNascita["Z101"] = "Andorra";
        $nazioniNascita["Z302"] = "Angola";
        $nazioniNascita["Z529"] = "Anguilla (Isola)";
        $nazioniNascita["Z532"] = "Antigua E Barbuda";
        $nazioniNascita["Z500"] = "Antille Britanniche";
        $nazioniNascita["Z521"] = "Antille Britanniche";
        $nazioniNascita["Z523"] = "Antille Britanniche";
        $nazioniNascita["Z501"] = "Antille Olandesi";
        $nazioniNascita["Z201"] = "Arabia Meridionale Federazione";
        $nazioniNascita["Z202"] = "Arabia Meridionale Protettorato";
        $nazioniNascita["Z203"] = "Arabia Saudita";
        $nazioniNascita["Z600"] = "Argentina";
        $nazioniNascita["Z252"] = "Armenia";
        $nazioniNascita["Z137"] = "Armenia";
        $nazioniNascita["Z700"] = "Australia";
        $nazioniNascita["Z102"] = "Austria";
        $nazioniNascita["Z253"] = "Azerbaigian";
        $nazioniNascita["Z141"] = "Azerbaigian";
        $nazioniNascita["Z502"] = "Bahama";
        $nazioniNascita["Z204"] = "Bahrein";
        $nazioniNascita["Z249"] = "Bangladesh";
        $nazioniNascita["Z522"] = "Barbados";
        $nazioniNascita["Z303"] = "Basutoland-Sud Africa Britannico";
        $nazioniNascita["Z304"] = "Beciuania-Sud Africa Britannico";
        $nazioniNascita["Z103"] = "Belgio";
        $nazioniNascita["Z512"] = "Belize";
        $nazioniNascita["Z314"] = "Benin";
        $nazioniNascita["Z400"] = "Bermuda (Isole)";
        $nazioniNascita["Z205"] = "Bhutan";
        $nazioniNascita["Z139"] = "Bielorussia=Russia Bianca";
        $nazioniNascita["Z206"] = "Birmania";
        $nazioniNascita["Z601"] = "Bolivia";
        $nazioniNascita["Z364"] = "Bophuthatswana";
        $nazioniNascita["Z153"] = "Bosnia Ed Erzegovina";
        $nazioniNascita["Z358"] = "Botswana";
        $nazioniNascita["Z602"] = "Brasile";
        $nazioniNascita["Z207"] = "Brunei";
        $nazioniNascita["Z104"] = "Bulgaria";
        $nazioniNascita["Z354"] = "Burkina";
        $nazioniNascita["Z305"] = "Burundi";
        $nazioniNascita["Z208"] = "Cambogia";
        $nazioniNascita["Z306"] = "Camerun";
        $nazioniNascita["Z401"] = "Canada";
        $nazioniNascita["Z307"] = "Capo Verde";
        $nazioniNascita["Z701"] = "Caroline (Isole)";
        $nazioniNascita["Z530"] = "Cayman (Isole)";
        $nazioniNascita["Z156"] = "Ceca Repubblica";
        $nazioniNascita["Z105"] = "Cecoslovacchia";
        $nazioniNascita["Z308"] = "Centrafricana Repubblica";
        $nazioniNascita["Z209"] = "Ceylon";
        $nazioniNascita["Z702"] = "Christmas (Isola)";
        $nazioniNascita["Z309"] = "Ciad";
        $nazioniNascita["Z603"] = "Cile";
        $nazioniNascita["Z210"] = "Cina Repubblica Popolare";
        $nazioniNascita["Z211"] = "Cipro";
        $nazioniNascita["Z367"] = "Ciskei";
        $nazioniNascita["Z106"] = "Citta' Del Vaticano";
        $nazioniNascita["Z212"] = "Cocos (Isole)";
        $nazioniNascita["Z604"] = "Colombia";
        $nazioniNascita["Z310"] = "Comore";
        $nazioniNascita["Z311"] = "Congo Brazzaville";
        $nazioniNascita["Z312"] = "Congo Leopoldville";
        $nazioniNascita["Z703"] = "Cook (Isole)";
        $nazioniNascita["Z214"] = "Corea Del Nord";
        $nazioniNascita["Z213"] = "Corea Del Sud";
        $nazioniNascita["Z313"] = "Costa D'Avorio";
        $nazioniNascita["Z215"] = "Costa Dei Pirati=Trucial States";
        $nazioniNascita["Z503"] = "Costa Rica";
        $nazioniNascita["Z149"] = "Croazia";
        $nazioniNascita["Z504"] = "Cuba";
        $nazioniNascita["Z107"] = "Danimarca";
        $nazioniNascita["Z900"] = "Dipendenze Australiane";
        $nazioniNascita["Z901"] = "Dipendenze Britanniche";
        $nazioniNascita["Z800"] = "Dipendenze Canadesi";
        $nazioniNascita["Z902"] = "Dipendenze Francesi";
        $nazioniNascita["Z903"] = "Dipendenze Neozelandesi";
        $nazioniNascita["Z904"] = "Dipendenze Norvegesi Antartiche";
        $nazioniNascita["Z801"] = "Dipendenze Norvegesi Artiche";
        $nazioniNascita["Z802"] = "Dipendenze Russe";
        $nazioniNascita["Z905"] = "Dipendenze Statunitensi";
        $nazioniNascita["Z906"] = "Dipendenze Sudafricane";
        $nazioniNascita["Z526"] = "Dominica";
        $nazioniNascita["Z505"] = "Dominicana Repubblica";
        $nazioniNascita["Z605"] = "Ecuador";
        $nazioniNascita["Z336"] = "Egitto";
        $nazioniNascita["Z506"] = "El Salvador";
        $nazioniNascita["Z368"] = "Eritrea";
        $nazioniNascita["Z144"] = "Estonia";
        $nazioniNascita["Z315"] = "Etiopia";
        $nazioniNascita["Z108"] = "Faer Oer (Isole)";
        $nazioniNascita["Z704"] = "Figi=Viti";
        $nazioniNascita["Z216"] = "Filippine";
        $nazioniNascita["Z109"] = "Finlandia";
        $nazioniNascita["Z217"] = "Formosa=Taiwan";
        $nazioniNascita["Z110"] = "Francia";
        $nazioniNascita["Z316"] = "Gabon";
        $nazioniNascita["Z317"] = "Gambia";
        $nazioniNascita["Z218"] = "Gaza (Territorio Di)";
        $nazioniNascita["Z254"] = "Georgia";
        $nazioniNascita["Z136"] = "Georgia";
        $nazioniNascita["Z112"] = "Germania";
        $nazioniNascita["Z111"] = "Germania Repubblica Democratica";
        $nazioniNascita["Z318"] = "Ghana";
        $nazioniNascita["Z507"] = "Giamaica";
        $nazioniNascita["Z219"] = "Giappone";
        $nazioniNascita["Z113"] = "Gibilterra";
        $nazioniNascita["Z361"] = "Gibuti";
        $nazioniNascita["Z705"] = "Gilbert E Ellice (Isole)";
        $nazioniNascita["Z220"] = "Giordania";
        $nazioniNascita["Z114"] = "Gran Bretagna E Irlanda Del Nord";
        $nazioniNascita["Z115"] = "Grecia";
        $nazioniNascita["Z524"] = "Grenada";
        $nazioniNascita["Z402"] = "Groenlandia";
        $nazioniNascita["Z508"] = "Guadalupa";
        $nazioniNascita["Z706"] = "Guam (Isola)";
        $nazioniNascita["Z509"] = "Guatemala";
        $nazioniNascita["Z608"] = "Guayana Olandese";
        $nazioniNascita["Z607"] = "Guayana=Guiana Francese";
        $nazioniNascita["Z319"] = "Guinea";
        $nazioniNascita["Z320"] = "Guinea Bissau";
        $nazioniNascita["Z321"] = "Guinea Equatoriale";
        $nazioniNascita["Z606"] = "Guyana";
        $nazioniNascita["Z510"] = "Haiti";
        $nazioniNascita["Z511"] = "Honduras";
        $nazioniNascita["Z221"] = "Hong Kong";
        $nazioniNascita["Z323"] = "Ifni";
        $nazioniNascita["Z222"] = "India";
        $nazioniNascita["Z223"] = "Indonesia";
        $nazioniNascita["Z224"] = "Iran";
        $nazioniNascita["Z225"] = "Iraq";
        $nazioniNascita["Z707"] = "Irian Occidentale";
        $nazioniNascita["Z116"] = "Irlanda=Eire";
        $nazioniNascita["Z117"] = "Islanda";
        $nazioniNascita["Z721"] = "Isole Cilene (Pasqua E Sala Y Gomez)";
        $nazioniNascita["Z226"] = "Israele";
        $nazioniNascita["Z118"] = "Iugoslavia";
        $nazioniNascita["Z255"] = "Kazakistan";
        $nazioniNascita["Z152"] = "Kazakistan";
        $nazioniNascita["Z322"] = "Kenya";
        $nazioniNascita["Z256"] = "Kirghizistan";
        $nazioniNascita["Z142"] = "Kirghizistan";
        $nazioniNascita["Z731"] = "Kiribati";
        $nazioniNascita["Z160"] = "Kosovo";
        $nazioniNascita["Z227"] = "Kuwait";
        $nazioniNascita["Z324"] = "La Reunion (Isola)";
        $nazioniNascita["Z228"] = "Laos";
        $nazioniNascita["Z359"] = "Lesotho";
        $nazioniNascita["Z145"] = "Lettonia";
        $nazioniNascita["Z229"] = "Libano";
        $nazioniNascita["Z325"] = "Liberia";
        $nazioniNascita["Z326"] = "Libia";
        $nazioniNascita["Z119"] = "Liechtenstein";
        $nazioniNascita["Z146"] = "Lituania";
        $nazioniNascita["Z120"] = "Lussemburgo";
        $nazioniNascita["Z231"] = "Macao";
        $nazioniNascita["Z148"] = "Macedonia";
        $nazioniNascita["Z708"] = "Macquarie (Isole)";
        $nazioniNascita["Z327"] = "Madagascar";
        $nazioniNascita["Z328"] = "Malawi";
        $nazioniNascita["Z230"] = "Malaysia";
        $nazioniNascita["Z247"] = "Malaysia";
        $nazioniNascita["Z232"] = "Maldive";
        $nazioniNascita["Z329"] = "Mali";
        $nazioniNascita["Z121"] = "Malta";
        $nazioniNascita["Z609"] = "Malvine=Falkland (Isole)";
        $nazioniNascita["Z122"] = "Man (Isola)";
        $nazioniNascita["Z709"] = "Marcus (Isole)";
        $nazioniNascita["Z710"] = "Marianne (Isole)";
        $nazioniNascita["Z330"] = "Marocco";
        $nazioniNascita["Z711"] = "Marshall";
        $nazioniNascita["Z513"] = "Martinica";
        $nazioniNascita["Z331"] = "Mauritania";
        $nazioniNascita["Z332"] = "Maurizio";
        $nazioniNascita["Z360"] = "Mayotte (Isola)";
        $nazioniNascita["Z514"] = "Messico";
        $nazioniNascita["Z735"] = "Micronesia Stati Federati";
        $nazioniNascita["Z712"] = "Midway (Isole)";
        $nazioniNascita["Z140"] = "Moldavia";
        $nazioniNascita["Z123"] = "Monaco";
        $nazioniNascita["Z233"] = "Mongolia";
        $nazioniNascita["Z157"] = "Montenegro";
        $nazioniNascita["Z531"] = "Montserrat";
        $nazioniNascita["Z333"] = "Mozambico";
        $nazioniNascita["Z713"] = "Nauru";
        $nazioniNascita["Z234"] = "Nepal";
        $nazioniNascita["Z515"] = "Nicaragua";
        $nazioniNascita["Z334"] = "Niger";
        $nazioniNascita["Z335"] = "Nigeria";
        $nazioniNascita["Z714"] = "Niue=Savage (Isole)";
        $nazioniNascita["Z715"] = "Norfolk (Isole E Isole Del Mar Dei Coralli)";
        $nazioniNascita["Z124"] = "Normanne (Isole)=Isole Del Canale";
        $nazioniNascita["Z125"] = "Norvegia";
        $nazioniNascita["Z716"] = "Nuova Caledonia (Isole E Dipendenze)";
        $nazioniNascita["Z718"] = "Nuova Guinea";
        $nazioniNascita["Z719"] = "Nuova Zelanda";
        $nazioniNascita["Z717"] = "Nuove Ebridi (Isole Condominio Franco-Inglese)";
        $nazioniNascita["Z235"] = "Oman";
        $nazioniNascita["Z126"] = "Paesi Bassi";
        $nazioniNascita["Z236"] = "Pakistan";
        $nazioniNascita["Z734"] = "Palau";
        $nazioniNascita["Z516"] = "Panama'";
        $nazioniNascita["Z517"] = "Panama Zona Del Canale";
        $nazioniNascita["Z730"] = "Papua Nuova Guinea";
        $nazioniNascita["Z720"] = "Papuasia";
        $nazioniNascita["Z610"] = "Paraguay";
        $nazioniNascita["Z611"] = "Peru'";
        $nazioniNascita["Z722"] = "Pitcairn (E Dipendenze)";
        $nazioniNascita["Z723"] = "Polinesia Francese (Isole)";
        $nazioniNascita["Z127"] = "Polonia";
        $nazioniNascita["Z128"] = "Portogallo";
        $nazioniNascita["Z518"] = "Puerto Rico";
        $nazioniNascita["Z237"] = "Qatar";
        $nazioniNascita["Z337"] = "Rhodesia";
        $nazioniNascita["Z129"] = "Romania";
        $nazioniNascita["Z338"] = "Ruanda";
        $nazioniNascita["Z154"] = "Russia=Federazione Russa";
        $nazioniNascita["Z238"] = "Ryukyu (Isole)";
        $nazioniNascita["Z362"] = "Sahara Meridionale";
        $nazioniNascita["Z363"] = "Sahara Settentrionale";
        $nazioniNascita["Z339"] = "Sahara Spagnolo";
        $nazioniNascita["Z533"] = "Saint Kitts E Nevis=Saint Christopher E Nevis";
        $nazioniNascita["Z527"] = "Saint Lucia";
        $nazioniNascita["Z403"] = "Saint Pierre Et Miquelon (Isole)";
        $nazioniNascita["Z528"] = "Saint Vincent E Grenadine";
        $nazioniNascita["Z724"] = "Salomone";
        $nazioniNascita["Z726"] = "Samoa";
        $nazioniNascita["Z725"] = "Samoa Americane (Isole)";
        $nazioniNascita["Z130"] = "San Marino";
        $nazioniNascita["Z340"] = "Sant'Elena (Isola)";
        $nazioniNascita["Z341"] = "Sao Tome' E Principe";
        $nazioniNascita["Z342"] = "Seicelle";
        $nazioniNascita["Z343"] = "Senegal";
        $nazioniNascita["Z158"] = "Serbia";
        $nazioniNascita["Z344"] = "Sierra Leone";
        $nazioniNascita["Z239"] = "Sikkim";
        $nazioniNascita["Z248"] = "Singapore";
        $nazioniNascita["Z240"] = "Siria";
        $nazioniNascita["Z155"] = "Slovacchia";
        $nazioniNascita["Z150"] = "Slovenia";
        $nazioniNascita["Z345"] = "Somalia";
        $nazioniNascita["Z346"] = "Somalia Francese";
        $nazioniNascita["Z131"] = "Spagna";
        $nazioniNascita["Z404"] = "Stati Uniti D'America";
        $nazioniNascita["Z347"] = "Sudafricana Repubblica";
        $nazioniNascita["Z348"] = "Sudan";
        $nazioniNascita["Z132"] = "Svezia";
        $nazioniNascita["Z133"] = "Svizzera";
        $nazioniNascita["Z349"] = "Swaziland";
        $nazioniNascita["Z257"] = "Tagikistan";
        $nazioniNascita["Z147"] = "Tagikistan";
        $nazioniNascita["Z350"] = "Tanganica";
        $nazioniNascita["Z357"] = "Tanzania";
        $nazioniNascita["Z241"] = "Thailandia";
        $nazioniNascita["Z242"] = "Timor (Isola)";
        $nazioniNascita["Z351"] = "Togo";
        $nazioniNascita["Z727"] = "Tokelau=Isole Dell'Unione";
        $nazioniNascita["Z728"] = "Tonga=Degli Amici (Isole)";
        $nazioniNascita["Z365"] = "Transkei";
        $nazioniNascita["Z612"] = "Trinidad E Tobago";
        $nazioniNascita["Z352"] = "Tunisia";
        $nazioniNascita["Z243"] = "Turchia";
        $nazioniNascita["Z258"] = "Turkemenistan";
        $nazioniNascita["Z519"] = "Turks E Caicos (Isole)";
        $nazioniNascita["Z732"] = "Tuvalu";
        $nazioniNascita["Z138"] = "Ucraina";
        $nazioniNascita["Z353"] = "Uganda";
        $nazioniNascita["Z134"] = "Ungheria";
        $nazioniNascita["Z135"] = "Unione Repubbliche Socialiste Sovietiche";
        $nazioniNascita["Z613"] = "Uruguay";
        $nazioniNascita["Z259"] = "Uzbekistan";
        $nazioniNascita["Z143"] = "Uzbekistan";
        $nazioniNascita["Z733"] = "Vanuatu";
        $nazioniNascita["Z366"] = "Venda";
        $nazioniNascita["Z614"] = "Venezuela";
        $nazioniNascita["Z520"] = "Vergini Americane (Isole)";
        $nazioniNascita["Z525"] = "Vergini Britanniche (Isole)";
        $nazioniNascita["Z251"] = "Vietnam";
        $nazioniNascita["Z245"] = "Vietnam Del Nord";
        $nazioniNascita["Z244"] = "Vietnam Del Sud";
        $nazioniNascita["Z729"] = "Wallis E Futuna (Isole)";
        $nazioniNascita["Z246"] = "Yemen";
        $nazioniNascita["Z250"] = "Yemen Repubblica Democratica Popolare";
        $nazioniNascita["Z355"] = "Zambia";
        $nazioniNascita["Z356"] = "Zanzibar";
        if ($this->db->config->storeExpiryStatFile->Investigation != '') {
            $statHandler = fopen($this->db->config->storeExpiryStatFile->Investigation, 'w');
        }
        $archiviRichieste = array(array('dir' => 'risposteBaseDir', 'sql' => '
SELECT aps_prod_backup.eps_richiesta.id_richiesta,
aps_prod_backup.eps_richiesta.id_mov_contab,
aps_prod_backup.eps_richiesta.id_richiesta_cache,
aps_prod_backup.eps_richiesta.stringa_richiesta,
aps_prod_backup.eps_richiesta.data_ora_rich,
aps_prod_backup.eps_richiesta.data_ora_evas,
aps_prod.eps_operazione.cod_operazione as cod_operazione ,
aps_prod_backup.eps_mov_contab.cod_causale as cod_causale ,
aps_prod_backup.eps_mov_contab.importo as importo ,
aps_prod_backup.eps_mov_contab.id_mov_contab_gen as id_mov_contab_gen ,
aps_prod.eps_prodotto.cod_prodotto as cod_prodotto ,
aps_prod.eps_cliente.cod_cliente as cod_cliente ,
aps_prod.eps_istanza.cod_istanza as cod_istanza

FROM aps_prod_backup.eps_richiesta
LEFT JOIN aps_prod.eps_operazione ON aps_prod.eps_operazione.id_operazione=aps_prod_backup.eps_richiesta.id_operazione
LEFT JOIN aps_prod_backup.eps_mov_contab ON aps_prod_backup.eps_mov_contab.id_mov_contab=aps_prod_backup.eps_richiesta.id_mov_contab
LEFT JOIN aps_prod.eps_prodotto ON aps_prod.eps_prodotto.id_prodotto =aps_prod_backup.eps_mov_contab.id_prodotto
LEFT JOIN aps_prod.eps_cliente ON aps_prod.eps_cliente.id_cliente=aps_prod_backup.eps_mov_contab.id_cliente
LEFT JOIN aps_prod.eps_istanza ON aps_prod.eps_istanza.id_istanza=aps_prod.eps_cliente.id_istanza
LEFT JOIN aps_prod.eps_operaz_classe ON aps_prod.eps_operaz_classe.id_classe=aps_prod.eps_operazione.id_classe
WHERE  
TRUE
#  AND aps_prod_backup.eps_richiesta.id_mov_contab = 844780
# AND aps_prod_backup.eps_richiesta.id_mov_contab > 854751
AND
(
aps_prod.eps_operazione.cod_operazione = "falcogold" OR
aps_prod.eps_operazione.cod_operazione = "falcogoldurg" OR
aps_prod.eps_operazione.cod_operazione = "falcosilv" OR
aps_prod.eps_operazione.cod_operazione = "falcosilvurg" OR
aps_prod.eps_operazione.cod_operazione = "cribis_search" OR
aps_prod.eps_operazione.cod_operazione = "cribis_search_urg" OR
aps_prod.eps_operazione.cod_operazione = "falcosafe" OR
aps_prod.eps_operazione.cod_operazione = "falcosafeurg"
)
'));
        foreach ($archiviRichieste as $archivioRichieste) {
            $richieste = $this->db->query($archivioRichieste['sql'], \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
            $count = 0;
            while (is_object($richiesta = $richieste->current())) {
                echo "\r" . $count++ . '/' . ($richieste->count() - 1) . str_repeat(' ', 5);
                $dati = array();
                $sId = str_pad($richiesta->id_richiesta, 9, '0', STR_PAD_LEFT);
                $dM = 'M' . substr($sId, 0, 3);
                $dK = 'K' . substr($sId, 3, 3);
                $nomeFile = $this->db->config->{$archivioRichieste['dir']} . "/{$dM}/{$dK}/F{$sId}*";
                $fileGlob = glob($nomeFile);
                if (!is_array($fileGlob) || sizeof($fileGlob) == 0) {
                    $richieste->next();
                    continue;
                }
                $nomeFile = current($fileGlob);
                $dati['id_mov_contab'] = $richiesta->id_mov_contab;
                $dati['massiva'] = $archivioRichieste['dir'] == 'risposteBaseDir' ? 0 : 1;
                $dati['id_richiesta'] = $richiesta->id_richiesta;
                $dati['test_nome_file'] = "\"" . str_replace('"', '\\"', basename($nomeFile)) . "\"";
                $dati['errore'] = '';
                $dati['data_ora_rich'] = $richiesta->data_ora_rich;
                $dati['data_ora_evas'] = $richiesta->data_ora_evas;
                $dati['cod_operazione'] = $richiesta->cod_operazione;
                $dati['cod_prodotto'] = $richiesta->cod_prodotto;
                $dati['cod_cliente'] = $richiesta->cod_cliente;
                $dati['cod_istanza'] = $richiesta->cod_istanza;
                $dati['importo'] = $richiesta->importo;
                $dati['differita'] = 1;
                $dati['stornata'] = 0;
                $parameters = array();
                $rawParameters = preg_split('/[=§]/', $richiesta->stringa_richiesta);
                foreach ($rawParameters as $id => $value) {
                    if (is_numeric($value) && array_key_exists($value, $this->parametri) && array_key_exists($id + 1, $rawParameters)) {
                        $parameters[$this->parametri[$value]] = $rawParameters[$id + 1];
                    }
                }
                $dati['tipoSogg'] = '';
                if (array_key_exists('tipoSogg', $parameters)) {
                    $dati['tipoSogg'] = $parameters['tipoSogg'];
                }
                $dati['denominaz'] = '';
                if (array_key_exists('denominaz', $parameters)) {
                    $dati['denominaz'] = $parameters['denominaz'];
                }
                $dati['cognome'] = '';
                if (array_key_exists('cognome', $parameters)) {
                    $dati['cognome'] = $parameters['cognome'];
                }
                $dati['nome'] = '';
                if (array_key_exists('nome', $parameters)) {
                    $dati['nome'] = $parameters['nome'];
                }
                $dati['codFisc'] = '';
                if (array_key_exists('codFisc', $parameters)) {
                    $dati['codFisc'] = $parameters['codFisc'];
                }
                if ($richiesta->importo == 0 && $richiesta->id_richiesta_cache == 0) {
                    $dati['stornata'] = 1;
                }
                $testo = '';
                if (strtolower(pathinfo($nomeFile, PATHINFO_EXTENSION)) == 'pdf') {
                    $testoh = popen('pdftotext ' . $nomeFile . ' -f 2 -l 2 -raw -', 'r');
                    while (!feof($testoh)) {
                        $testo .= fread($testoh, 1024);
                    }
                    pclose($testoh);
                }
                if (preg_match('/\\bCOGNOME\\b[ ]+(.*)/', $testo, $matches)) {
                    $dati['cognome'] = $matches[1];
                }
                if (preg_match('/\\bNOME\\b[ ]+(.*)/', $testo, $matches)) {
                    $dati['nome'] = $matches[1];
                }
                if (preg_match('/\\bDenominazione.[ ]+(.*)/', $testo, $matches)) {
                    $dati['denominaz'] = $matches[1];
                }
                $dati['formaGiur'] = '';
                $dati['partIVA'] = '';
                $dati['indirizzo'] = '';
                $dati['dataNas'] = '';
                $dati['luogoNas'] = '';
                $dati['sesso'] = '';
                $dati['eta'] = '';
                $dati['nazioneNas'] = '';
                $dati['CAP'] = '';
                $dati['comune'] = '';
                $dati['prov'] = '';
                $dati['regione'] = '';
                $dati['distretto'] = '';
                if ($dati['denominaz'] != '') {
                    if (preg_match('/\\bForma Giuridica.[ ]+(.*)/', $testo, $matches)) {
                        $dati['formaGiur'] = $matches[1];
                    }
                    if (preg_match('/Partita Iva.[ ]+(.*)/', $testo, $matches)) {
                        $dati['partIVA'] = $matches[1];
                    }
                    if (preg_match('/Sede.[ ]+(.*)/', $testo, $matches)) {
                        $indirizzo = $matches[1];
                        if (preg_match('/\\bCAP\\b[ ]+(.*)/', $indirizzo, $matches)) {
                            $dati['CAP'] = $matches[1];
                            $indirizzo = preg_replace('/\\bCAP\\b[ ]+(.*)/', '', $indirizzo);
                        }
                        if (preg_match('/(.*)\\(/', $indirizzo, $matches)) {
                            $dati['comune'] = $matches[1];
                            $indirizzo = preg_replace('/(.*)\\(/', '(', $indirizzo);
                        }
                        if (preg_match_all('/\\((.*)\\)/', $indirizzo, $matches)) {
                            $matches = end($matches);
                            $dati['prov'] = end($matches);
                            $indirizzo = preg_replace('/\\((.*)\\)/', '', $indirizzo);
                        }
                        $dati['indirizzo'] = trim($indirizzo);
                    }
                } else {
                    if (preg_match('/\\bDATA DI NASCITA\\b[ ]+(.*)/', $testo, $matches)) {
                        $dati['dataNas'] = $matches[1];
                    }
                    if (preg_match('/\\bLUOGO DI NASCITA\\b[ ]+(.*)/', $testo, $matches)) {
                        $dati['luogoNas'] = $matches[1];
                    }
                    if (preg_match('/\\bCODICE FISCALE\\b[ ]+(.*)/', $testo, $matches)) {
                        $dati['codFisc'] = $matches[1];
                    }
                    if ($dati['codFisc'] != '') {
                        $anno = intval(substr($dati['codFisc'], 6, 2));
                        if ($anno < 30) {
                            $anno = 2000 + $anno;
                        } else {
                            $anno = 1900 + $anno;
                        }
                        $mese = substr($dati['codFisc'], 8, 1);
                        if (array_key_exists($mese, $meseNascita)) {
                            $mese = $meseNascita[$mese];
                        } else {
                            $mese = null;
                        }
                        $giorno = intval(substr($dati['codFisc'], 9, 2));
                        if ($giorno > 40) {
                            $giorno = $giorno - 40;
                        }
                        $dateTime = null;
                        if (is_numeric($mese)) {
                            $dateBirth = new \DateTime();
                            $dateBirth->setDate($anno, $mese, $giorno);
                            $dateEvas = new \DateTime($dati['data_ora_evas']);
                            $interval = $dateEvas->diff($dateBirth);
                            $dati['eta'] = $interval->format('%y');
                        }
                        $codNas = substr($dati['codFisc'], 11, 4);
                        if (array_key_exists($codNas, $nazioniNascita)) {
                            $dati['nazioneNas'] = $nazioniNascita[$codNas];
                        } else {
                            $dati['nazioneNas'] = 'Italia';
                        }
                        if (intval(substr($dati['codFisc'], 9, 1)) < 4) {
                            $dati['sesso'] = 'M';
                        } else {
                            if (intval(substr($dati['codFisc'], 9, 1)) < 7) {
                                $dati['sesso'] = 'F';
                            }
                        }
                    }
                    if (preg_match('/\\bINDIRIZZO\\b[ ]+(.*)/', $testo, $matches)) {
                        $dati['indirizzo'] = $matches[1];
                    }
                    if (preg_match('/\\bCAP\\b[ ]+(.*)/', $testo, $matches)) {
                        $dati['CAP'] = $matches[1];
                    }
                    if (preg_match('/\\bCOMUNE\\b[ ]+(.*)/', $testo, $matches)) {
                        $dati['comune'] = $matches[1];
                    }
                    if (preg_match_all('/\\bPROVINCIA\\b[ ]+(.*)/', $testo, $matches)) {
                        $matches = end($matches);
                        $dati['prov'] = end($matches);
                    }
                }
                if ($dati['prov'] != '' && array_key_exists($dati['prov'], $province)) {
                    $dati['regione'] = $province[$dati['prov']]['region'];
                    $dati['distretto'] = $province[$dati['prov']]['district'];
                }
                $testo = '';
                if (strtolower(pathinfo($nomeFile, PATHINFO_EXTENSION)) == 'pdf') {
                    $testoh = popen('pdftotext ' . $nomeFile . ' -f 1 -l 1 -raw -', 'r');
                    while (!feof($testoh)) {
                        $testo .= fread($testoh, 1024);
                    }
                    pclose($testoh);
                }
                $dati['reperibilita'] = '';
                if (preg_match('/\\bREPERIBILIT.*[ ]+(.*)/', $testo, $matches)) {
                    $dati['reperibilita'] = $matches[1];
                }
                $dati['utenzeTelefoniche'] = '';
                if (preg_match('/\\bUTENZE[ ]+TELEFONICHE[ ]+(.*)/', $testo, $matches)) {
                    $dati['utenzeTelefoniche'] = $matches[1];
                }
                $dati['caricheImpresePregresse'] = '';
                if (preg_match('/\\bCARICHE.*PREGRESSE[ ]+(.*)/', $testo, $matches)) {
                    $dati['caricheImpresePregresse'] = $matches[1];
                }
                $dati['caricheImpreseAttuali'] = '';
                if (preg_match('/\\bCARICHE.*ATTUALI[ ]+(.*)/', $testo, $matches)) {
                    $dati['caricheImpreseAttuali'] = $matches[1];
                }
                $dati['attivitaLavorativa'] = '';
                if (preg_match('/\\bATTIVIT.*[ ]+LAVORATIVA[ ]+(.*)/', $testo, $matches)) {
                    $dati['attivitaLavorativa'] = $matches[1];
                }
                $dati['partecipazioni'] = '';
                if (preg_match('/\\bPARTECIPAZIONI.*IMPRES.[ ]+(.*)/', $testo, $matches)) {
                    $dati['partecipazioni'] = $matches[1];
                }
                $dati['partecipazioniSoci'] = '';
                if (preg_match('/\\bPARTECIPAZIONI.*SOCI.*[ ]+(.*)/', $testo, $matches)) {
                    $dati['partecipazioniSoci'] = $matches[1];
                }
                $dati['depositiDiRisparmio'] = '';
                if (preg_match('/\\bDEPOSITI.*RISPARMIO[ ]+(.*)/', $testo, $matches)) {
                    $dati['depositiDiRisparmio'] = $matches[1];
                }
                $dati['rapportiBancari'] = '';
                if (preg_match('/\\bRAPPORTI.*BANCARI[ ]+(.*)/', $testo, $matches)) {
                    $dati['rapportiBancari'] = $matches[1];
                }
                $dati['proprietaImmobili'] = '';
                if (preg_match('/\\bPROPRIET.*IMMOBILIARI[ ]+(.*)/', $testo, $matches)) {
                    $dati['proprietaImmobili'] = $matches[1];
                }
                $dati['proprietaVeicoli'] = '';
                if (preg_match('/\\bPROPRIET.*VEICOLI[ ]+(.*)/', $testo, $matches)) {
                    $dati['proprietaVeicoli'] = $matches[1];
                }
                $dati['proprietaImbarcazioni'] = '';
                if (preg_match('/\\bPROPRIET.*NAVI[ ]+(.*)/', $testo, $matches)) {
                    $dati['proprietaImbarcazioni'] = $matches[1];
                }
                $dati['negoziGiuridici'] = '';
                if (preg_match('/\\bNEGOZI[ ]+GIURIDICI[ ]+(.*)/', $testo, $matches)) {
                    $dati['negoziGiuridici'] = $matches[1];
                }
                $dati['pregiudizievoli'] = '';
                if (preg_match('/\\bPREGIUDIZIEVOLI[ ]+(.*)/', $testo, $matches)) {
                    $dati['pregiudizievoli'] = $matches[1];
                }
                $dati['protesti'] = '';
                if (preg_match('/\\bPROTESTI[ ]+(.*)/', $testo, $matches)) {
                    $dati['protesti'] = $matches[1];
                }
                $dati['procedureConcorsuali'] = '';
                if (preg_match('/\\bPROCEDURE[ ]+CONCORSUALI[ ]+(.*)/', $testo, $matches)) {
                    $dati['procedureConcorsuali'] = $matches[1];
                }
                $testoFull = '';
                if (strtolower(pathinfo($nomeFile, PATHINFO_EXTENSION)) == 'pdf') {
                    $testoh = popen('pdftotext ' . $nomeFile . ' -f 2 -raw -', 'r');
                    while (!feof($testoh)) {
                        $testoFull .= fread($testoh, 1024);
                    }
                    pclose($testoh);
                    if (preg_match('/DEPOSITI[ ]+DI[ ]+RISPARMIO[ ]+PRESENTI/', $testoFull) || preg_match('/DEPOSITI[ ]+DI[ ]+RISPARMIO[ ]+NON[ ]+PRESENTI/', $testoFull) || preg_match('/RAPPORTI[ ]+BANCARI[ ]+PRESENTI/', $testoFull) || preg_match('/RAPPORTI[ ]+BANCARI[ ]+NON PRESENTI/', $testoFull)) {
                        $testoFull = '';
                        $testoh = popen('pdftotext ' . $nomeFile . ' -f 3 -raw -', 'r');
                        while (!feof($testoh)) {
                            $testoFull .= fread($testoh, 1024);
                        }
                        pclose($testoh);
                    }
                }
                if (!preg_match('/DEPOSITI DI RISPARMIO.*PROPRIETA’ IMMOBILIARI/is', $testoFull, $matches)) {
                    preg_match('/RAPPORTI BANCARI.*PROPRIETA’ IMMOBILIARI/is', $testoFull, $matches);
                }
                $dati['abi'] = '';
                $dati['banca'] = '';
                $dati['cab'] = '';
                $dati['banca_indirizzo'] = '';
                $dati['banca_cap'] = '';
                $dati['banca_citta'] = '';
                $dati['banca_prov'] = '';
                if (is_array($matches)) {
                    $testo = current($matches);
                    if (!preg_match('/\\bPROVINCIA[ ]+DI[ ]+NASCITA\\b/', $testo)) {
                        if (preg_match('/\\bABI\\b[ ]+([[:digit:]]*)/', $testo, $matches)) {
                            $dati['abi'] = $matches[1];
                        }
                        if (preg_match('/\\bBANCA\\b[ ]+(.*)/', $testo, $matches)) {
                            $dati['banca'] = $matches[1];
                        }
                        if (preg_match('/\\bCAB\\b[ ]+([[:digit:]]*)/', $testo, $matches)) {
                            $dati['cab'] = $matches[1];
                        }
                        if (preg_match('/\\bINDIRIZZO\\b[ ]+(.*)/', $testo, $matches)) {
                            $dati['banca_indirizzo'] = $matches[1];
                        }
                        if (preg_match('/\\bCAP\\b[ ]+(.*)/', $testo, $matches)) {
                            $dati['banca_cap'] = $matches[1];
                        }
                        if (preg_match('/\\bCITTA[^A-Za-z0-9]*(.*)/', $testo, $matches)) {
                            $dati['banca_citta'] = $matches[1];
                        }
                        if (preg_match('/\\bPROVINCIA\\b[ ]+(.*)/', $testo, $matches)) {
                            $dati['banca_prov'] = $matches[1];
                        }
                    }
                } else {
                    var_dump($nomeFile);
                }
                $dati['telefono'] = '';
                preg_match('/UTENZE TELEFONICHE.*CARICHE/is', $testoFull, $matches);
                if (is_array($matches)) {
                    $testo = current($matches);
                    if (preg_match('/[0-9]+[0-9 \\/]+/', $testo, $matches)) {
                        if (strlen(trim($matches[0])) > 5) {
                            $dati['telefono'] = trim($matches[0]);
                        }
                    }
                }
                $dati['reddito'] = '';
                if ($dati['denominaz'] == '') {
                    preg_match('/\\bOCCUPAZIONE LAVORATIVA.*PARTECIPAZIONI/is', $testoFull, $matches);
                    if (is_array($matches)) {
                        $testo = current($matches);
                        if (preg_match_all('/[0-9 ,\\.]+euro+/', $testo, $matches)) {
                            foreach ($matches[0] as $match) {
                                $reddito = str_replace(',', '.', preg_replace('/[^0-9,]/', '', $match));
                                if ($reddito < 10000) {
                                    $dati['reddito'] = $reddito;
                                    break;
                                }
                            }
                        }
                        if ($dati['reddito'] == '' && preg_match_all('/€[0-9 ,\\.]+/', $testo, $matches)) {
                            foreach ($matches[0] as $match) {
                                $reddito = str_replace(',', '.', preg_replace('/[^0-9,]/', '', $match));
                                if ($reddito < 10000) {
                                    $dati['reddito'] = $reddito;
                                    break;
                                }
                            }
                        }
                    }
                    preg_match('/\\bINVALIDITA.*PARTECIPAZIONI/is', $testoFull, $matches);
                    if (is_array($matches)) {
                        $testo = current($matches);
                        if (preg_match_all('/[0-9 ,\\.]+euro+/', $testo, $matches)) {
                            foreach ($matches[0] as $match) {
                                $reddito = str_replace(',', '.', preg_replace('/[^0-9,]/', '', $match));
                                if ($reddito < 10000) {
                                    $dati['reddito'] = $reddito;
                                    break;
                                }
                            }
                        }
                        if ($dati['reddito'] == '' && preg_match_all('/€[0-9 ,\\.]+/', $testo, $matches)) {
                            foreach ($matches[0] as $match) {
                                $reddito = str_replace(',', '.', preg_replace('/[^0-9,]/', '', $match));
                                if ($reddito < 10000) {
                                    $dati['reddito'] = $reddito;
                                    break;
                                }
                            }
                        }
                    }
                }
                array_walk($dati, create_function('&$item', '$item=str_replace("\\"","",$item);'));
                if (isset($statHandler)) {
                    if (ftell($statHandler) == 0) {
                        fputcsv($statHandler, array_keys($dati));
                    }
                    fputcsv($statHandler, $dati);
                    fflush($statHandler);
                }
                $richieste->next();
            }
        }
        if (isset($statHandler)) {
            fclose($statHandler);
        }
        echo PHP_EOL;
    }
Exemplo n.º 11
0
    public function import($statOnly = '')
    {
        $dateFilter = '`data_ora_rich` > CURDATE() - INTERVAL 2 MONTH';
        if ($statOnly != '') {
            $config = clone $this->db->config;
            $configDb = $this->db->config->database->toArray();
            $configDb['options']['buffer_results'] = false;
            $this->db = new \Zend\Db\Adapter\Adapter($configDb);
            $this->db->config = $config;
            $dateFilter = 'TRUE';
            if ($this->db->config->storeExpiryStatFile->Sksocieta != '') {
                $statHandler = fopen($this->db->config->storeExpiryStatFile->Sksocieta, 'w');
            }
            $manager = new \MongoDB\Driver\Manager("mongodb://localhost:27017");
            $bulk = new \MongoDB\Driver\BulkWrite();
        }
        $archiviRichieste = array(array('dir' => 'risposteBaseDirMass', 'sql' => '
SELECT aps_prod_backup.eps_richiesta_mass.id_richiesta,
aps_prod_backup.eps_richiesta_mass.id_mov_contab,
aps_prod_backup.eps_richiesta_mass.id_richiesta_cache,
aps_prod_backup.eps_richiesta_mass.stringa_richiesta,
aps_prod_backup.eps_richiesta_mass.data_ora_rich,
aps_prod_backup.eps_richiesta_mass.data_ora_evas,
aps_prod.eps_operazione.cod_operazione as cod_operazione ,
aps_prod_backup.eps_mov_contab_mass.cod_causale as cod_causale ,
aps_prod_backup.eps_mov_contab_mass.importo as importo ,
aps_prod_backup.eps_mov_contab_mass.id_mov_contab_gen as id_mov_contab_gen ,
aps_prod.eps_prodotto.cod_prodotto as cod_prodotto ,
aps_prod.eps_cliente.cod_cliente as cod_cliente ,
aps_prod.eps_istanza.cod_istanza as cod_istanza
FROM aps_prod_backup.eps_richiesta_mass
LEFT JOIN aps_prod.eps_operazione ON aps_prod.eps_operazione.id_operazione=aps_prod_backup.eps_richiesta_mass.id_operazione
LEFT JOIN aps_prod_backup.eps_mov_contab_mass ON aps_prod_backup.eps_mov_contab_mass.id_mov_contab=aps_prod_backup.eps_richiesta_mass.id_mov_contab
LEFT JOIN aps_prod.eps_prodotto ON aps_prod.eps_prodotto.id_prodotto =aps_prod_backup.eps_mov_contab_mass.id_prodotto
LEFT JOIN aps_prod.eps_cliente ON aps_prod.eps_cliente.id_cliente=aps_prod_backup.eps_mov_contab_mass.id_cliente
LEFT JOIN aps_prod.eps_istanza ON aps_prod.eps_istanza.id_istanza=aps_prod.eps_cliente.id_istanza
WHERE
' . $dateFilter . ' AND
aps_prod.eps_operazione.cod_operazione = "sksocieta"
                    '), array('dir' => 'risposteBaseDir', 'sql' => '
SELECT aps_prod_backup.eps_richiesta.id_richiesta,
aps_prod_backup.eps_richiesta.id_mov_contab,
aps_prod_backup.eps_richiesta.id_richiesta_cache,
aps_prod_backup.eps_richiesta.stringa_richiesta,
aps_prod_backup.eps_richiesta.data_ora_rich,
aps_prod_backup.eps_richiesta.data_ora_evas,
aps_prod.eps_operazione.cod_operazione as cod_operazione ,
aps_prod_backup.eps_mov_contab.cod_causale as cod_causale ,
aps_prod_backup.eps_mov_contab.importo as importo ,
aps_prod_backup.eps_mov_contab.id_mov_contab_gen as id_mov_contab_gen ,
aps_prod.eps_prodotto.cod_prodotto as cod_prodotto ,
aps_prod.eps_cliente.cod_cliente as cod_cliente ,
aps_prod.eps_istanza.cod_istanza as cod_istanza

FROM aps_prod_backup.eps_richiesta
LEFT JOIN aps_prod.eps_operazione ON aps_prod.eps_operazione.id_operazione=aps_prod_backup.eps_richiesta.id_operazione
LEFT JOIN aps_prod_backup.eps_mov_contab ON aps_prod_backup.eps_mov_contab.id_mov_contab=aps_prod_backup.eps_richiesta.id_mov_contab
LEFT JOIN aps_prod.eps_prodotto ON aps_prod.eps_prodotto.id_prodotto =aps_prod_backup.eps_mov_contab.id_prodotto
LEFT JOIN aps_prod.eps_cliente ON aps_prod.eps_cliente.id_cliente=aps_prod_backup.eps_mov_contab.id_cliente
LEFT JOIN aps_prod.eps_istanza ON aps_prod.eps_istanza.id_istanza=aps_prod.eps_cliente.id_istanza
WHERE
' . $dateFilter . ' AND
aps_prod.eps_operazione.cod_operazione = "sksocieta"
                    '));
        $totalCount = 0;
        foreach ($archiviRichieste as $archivioRichieste) {
            $richieste = $this->db->query($archivioRichieste['sql'], \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
            $count = 0;
            $groupCount = 0;
            $rCompany = new \crm\Company($this->db);
            $company = new \crm\Company($this->db);
            $person = new \crm\Person($this->db);
            while (is_object($richiesta = $richieste->current())) {
                echo "\r" . $count++ . '/' . ($richieste->count() - 1) . str_repeat(' ', 5);
                $dati = array();
                $imprese = array();
                $esponenti = array();
                $sId = str_pad($richiesta->id_richiesta, 9, '0', STR_PAD_LEFT);
                $dM = 'M' . substr($sId, 0, 3);
                $dK = 'K' . substr($sId, 3, 3);
                $nomeFile = $this->db->config->{$archivioRichieste['dir']} . "/{$dM}/{$dK}/F{$sId}.xml";
                if (!is_file($nomeFile)) {
                    $richieste->next();
                    continue;
                }
                $dati['id_mov_contab'] = $richiesta->id_mov_contab;
                $dati['massiva'] = $archivioRichieste['dir'] == 'risposteBaseDir' ? 0 : 1;
                $dati['id_richiesta'] = $richiesta->id_richiesta;
                $dati['test_nome_file'] = "\"" . str_replace('"', '\\"', basename($nomeFile)) . "\"";
                $dati['errore'] = '';
                $dati['data_ora_rich'] = $richiesta->data_ora_rich;
                $dati['data_ora_evas'] = $richiesta->data_ora_evas;
                $dati['cod_operazione'] = $richiesta->cod_operazione;
                $dati['cod_prodotto'] = $richiesta->cod_prodotto;
                $dati['cod_cliente'] = $richiesta->cod_cliente;
                $dati['cod_istanza'] = $richiesta->cod_istanza;
                $dati['importo'] = $richiesta->importo;
                $dati['differita'] = 1;
                if ($richiesta->importo == 0 && $richiesta->id_richiesta_cache == 0) {
                    $richieste->next();
                    continue;
                }
                $sXML = new \SimpleXMLElement($nomeFile, 0, true);
                $dati['dataCerved'] = '';
                $dateObject = date_create_from_format('Y m d H:i:s', (string) $sXML->xpath('/s2xResponse/s2xStatus/s2xTime')[0]);
                if (is_object($dateObject)) {
                    $dati['dataCerved'] = date_format($dateObject, 'Y-m-d H:i:s');
                }
                $sobject = $sXML->xpath('/s2xResponse/s2xData/Shareholders/Identification');
                if (!is_array($sobject) || sizeof($sobject) < 1) {
                    $richieste->next();
                    continue;
                }
                $sobject = $sobject[0];
                $dati['partIVA'] = (string) $sobject->TaxCode;
                $dati['ragSoc'] = (string) $sobject->CompanyName;
                $dati['codFisc'] = (string) $sobject->TaxCode;
                $dati['provCCIAA'] = (string) $sobject->ProvinceCode;
                $dati['nCCIAA'] = (string) $sobject->REARegistrationNumber;
                $dati['formaGiurid'] = (string) $sobject->CompanyTitle;
                $dati['capitaleSociale'] = (string) $sobject->EquityCapital->Subscribed;
                $dati['dataREA'] = '';
                $dateObject = date_create_from_format('Ymd', (string) $sobject->REARegistrationDate);
                if (is_object($dateObject)) {
                    $dati['dataREA'] = date_format($dateObject, 'Y-m-d H:i:s');
                }
                if (property_exists($sobject, 'IdentificationAddedValue')) {
                    $dati['prov'] = (string) $sobject->IdentificationAddedValue->Address->ProvinceCode;
                    if (is_object($sobject->IdentificationAddedValue->Address->MunicipalityCode)) {
                        $dati['comune'] = (string) $sobject->IdentificationAddedValue->Address->MunicipalityCode->attributes()->Description;
                    }
                    $dati['indirizzo'] = (string) $sobject->IdentificationAddedValue->Address->ToponymCode . ' ' . (string) $sobject->IdentificationAddedValue->Address->StreetName . ' ' . (string) $sobject->IdentificationAddedValue->Address->StreetNo;
                    $dati['CAP'] = (string) $sobject->IdentificationAddedValue->Address->Postcode;
                    $dati['nazione'] = 'ITALIA';
                    $dati['sitoWeb'] = '';
                    $dati['email'] = '';
                    $dati['telefono'] = (string) $sobject->IdentificationAddedValue->Telephone->AreaCode . ' ' . (string) $sobject->IdentificationAddedValue->Telephone->TelephoneNumber;
                    $dati['statoAttivita'] = (string) $sobject->BusinessStatus->Code;
                    $dati['tipoSoc'] = '';
                    $dati['codISTAT'] = (string) $sobject->IdentificationAddedValue->Activity->CERVEDActivityCode;
                    $dati['desISTAT'] = '';
                    if (is_object($sobject->IdentificationAddedValue->Activity->CERVEDActivityCode) && $sobject->IdentificationAddedValue->Activity->CERVEDActivityCode->count() > 0) {
                        $dati['desISTAT'] = (string) $sobject->IdentificationAddedValue->Activity->CERVEDActivityCode->attributes()->Description;
                    }
                    $dati['fatturato'] = (string) $sobject->IdentificationAddedValue->DataBalanceSheet->Revenue;
                    $dati['annoFatturato'] = '';
                    if (is_object($sobject->IdentificationAddedValue->DataBalanceSheet->ClosingDate)) {
                        $dati['annoFatturato'] = (string) $sobject->IdentificationAddedValue->DataBalanceSheet->ClosingDate->attributes()->year;
                    }
                    $dati['gruppo'] = (string) $sobject->IdentificationAddedValue->MemberOfGroup->NameMemberOfGroup;
                    if ($dati['gruppo'] == '') {
                        $dati['gruppo'] = (string) $sobject->IdentificationAddedValue->MemberOfGroup3->NameMemberOfGroup3;
                    }
                    $dati['gruppoRuolo'] = '';
                    $dati['codNACE'] = '';
                    $dati['dataInizioAtt'] = '';
                    $dati['dataCostituzione'] = '';
                }
                $dati['fidoAffidabilta'] = '';
                $dati['fidoAffidabiltaNote'] = '';
                $dati['fidoAccordabile'] = '';
                $dati['numUffSedi'] = '';
                $dati['desAttivita'] = '';
                $dati['eventi'] = '';
                $dati['protesti'] = '';
                $dati['fallimenti'] = '';
                $dati['pregiudizievoli'] = '';
                $dati['cassaIntegrazione'] = '';
                $dati['nDipendenti'] = '';
                $dati['trendFatturato'] = '';
                $dati['utilePerdita'] = '';
                $dati['patrimonioNetto'] = '';
                $dati['margineOperativoLordo'] = '';
                $dati['risultatoOperativoLordo'] = '';
                $dati['indiceIndebitamento'] = '';
                $dati['ROI'] = '';
                $dati['ROE'] = '';
                $dati['indiceLiquidita'] = '';
                $dati['dataChiusuraBilancio'] = '';
                restore_error_handler();
                if ($statOnly != '') {
                    array_walk($dati, create_function('&$item', '$item=str_replace("\\"","",$item);'));
                    if (isset($statHandler)) {
                        if (ftell($statHandler) == 0) {
                            fputcsv($statHandler, array_keys($dati));
                        }
                        fputcsv($statHandler, $dati);
                        fflush($statHandler);
                    }
                    $domXml = dom_import_simplexml($sobject);
                    $aXML = array();
                    $this->xml2array($domXml, $aXML);
                    /*$xml = new \SimpleXMLElement('<root/>');
                    
                    
                                   $this->array_to_xml($aXML,$xml);*/
                    if (true || is_array($aXML) && $totalCount++ < 10000.0) {
                        $bulk->update(array('_id' => $dati['id_mov_contab']), $aXML, array('multi' => false, 'upsert' => true));
                    }
                    $richieste->next();
                    continue;
                }
                foreach ($sXML->xpath('/s2xResponse/s2xData/NotConsolidatedShareholdingsSection/SharesList/Shares') as $related) {
                    if (property_exists($related, 'Shareholdings_NotConsolidated')) {
                        $socio = array();
                        $socio['codFisc'] = (string) $related->Shareholdings_NotConsolidated->TaxCode;
                        if (strlen($socio['codFisc']) == 16) {
                            $socio['nome'] = (string) $related->Shareholdings_NotConsolidated->FirstName;
                            $socio['cognome'] = (string) $related->Shareholdings_NotConsolidated->LastName;
                            $socio['prov'] = (string) $related->Shareholdings_NotConsolidated->Domicile->ProvinceCode;
                            $socio['comune'] = (string) $related->Shareholdings_NotConsolidated->Domicile->Municipality;
                            $socio['indirizzo'] = (string) $related->Shareholdings_NotConsolidated->Domicile->Street . ' ' . (string) $related->Shareholdings_NotConsolidated->Domicile->StreetNo;
                            $socio['CAP'] = (string) $related->Shareholdings_NotConsolidated->Domicile->PostalCode;
                            $socio['dataNas'] = '';
                            if (is_object($related->Shareholdings_NotConsolidated->IndividualAddedValue->BirthInformation)) {
                                $dateObject = date_create_from_format('Ymd', (string) $related->Shareholdings_NotConsolidated->IndividualAddedValue->BirthInformation->BirthData);
                                if (is_object($dateObject)) {
                                    $socio['dataNas'] = date_format($dateObject, 'Y-m-d');
                                }
                            }
                            $esponenti[] = $socio;
                        } else {
                            if (strlen($socio['codFisc']) == 11) {
                                $socio['partIVA'] = $socio['codFisc'];
                                $socio['ragSoc'] = (string) $related->Shareholdings_NotConsolidated->CompanyName;
                                $socio['prov'] = (string) $related->Shareholdings_NotConsolidated->Domicile->ProvinceCode;
                                $socio['comune'] = (string) $related->Shareholdings_NotConsolidated->Domicile->Municipality;
                                $socio['indirizzo'] = (string) $related->Shareholdings_NotConsolidated->Domicile->Street . ' ' . (string) $related->Shareholdings_NotConsolidated->Domicile->StreetNo;
                                if (is_object($related->Shareholdings_NotConsolidated->PartnershipAddedValue)) {
                                    if (is_object($related->Shareholdings_NotConsolidated->PartnershipAddedValue->ReaKey)) {
                                        $socio['provCCIAA'] = (string) $related->Shareholdings_NotConsolidated->PartnershipAddedValue->ReaKey->REAProvinceCode;
                                        $socio['nCCIAA'] = (string) $related->Shareholdings_NotConsolidated->PartnershipAddedValue->ReaKey->REANo;
                                    }
                                    if (is_object($related->Shareholdings_NotConsolidated->PartnershipAddedValue->BusinessStatus)) {
                                        $socio['statoAttivita'] = (string) $related->Shareholdings_NotConsolidated->PartnershipAddedValue->BusinessStatus->Code;
                                    }
                                    $socio['gruppo'] = '';
                                    if (is_object($related->Shareholdings_NotConsolidated->PartnershipAddedValue->MemberOfGroup)) {
                                        $socio['gruppo'] = (string) $related->Shareholdings_NotConsolidated->PartnershipAddedValue->MemberOfGroup->NameMemberOfGroup;
                                    }
                                    if ($socio['gruppo'] == '' && is_object($related->Shareholdings_NotConsolidated->PartnershipAddedValue->MemberOfGroup3)) {
                                        $socio['gruppo'] = (string) $related->Shareholdings_NotConsolidated->PartnershipAddedValue->MemberOfGroup3->NameMemberOfGroup3;
                                    }
                                }
                                $imprese[] = $socio;
                            }
                        }
                    }
                    $company->setData(array());
                    $company->loadFromId($dati['partIVA']);
                    $cDati = $company->getData();
                    if (is_array($cDati) && count($cDati) > 0) {
                        $company->setData(array_merge($cDati, array_filter($dati)));
                        $company->update();
                    } else {
                        $company->setData($dati);
                        $company->insert();
                    }
                    foreach ($imprese as $impresa) {
                        $rCompany->setData(array());
                        $rCompany->loadFromId($impresa['partIVA']);
                        $cDati = $rCompany->getData();
                        if (is_array($cDati) && count($cDati) > 0) {
                            $rCompany->setData(array_merge($cDati, array_filter($impresa)));
                            $rCompany->update();
                        } else {
                            $rCompany->setData($impresa);
                            $rCompany->insert();
                        }
                        $company->addRelatedCompany($rCompany);
                    }
                    foreach ($esponenti as $esponente) {
                        if (strlen($esponente['codFisc']) == 16) {
                            $person->setData(array());
                            $person->loadFromId($esponente['codFisc']);
                            $cDati = $person->getData();
                            if (is_array($cDati) && count($cDati) > 0) {
                                $person->setData(array_merge($cDati, array_filter($esponente)));
                                $person->update();
                            } else {
                                $person->setData($esponente);
                                $person->insert();
                            }
                            $company->addRelatedExponent($person);
                        } else {
                            $rCompany->setData(array());
                            $esponente['partIVA'] = $esponente['codFisc'];
                            $rCompany->loadFromId($esponente['partIVA']);
                            $cDati = $rCompany->getData();
                            if (is_array($cDati) && count($cDati) > 0) {
                                $rCompany->setData(array_merge($cDati, array_filter($esponente)));
                                $rCompany->update();
                            } else {
                                $rCompany->setData($esponente);
                                $rCompany->insert();
                            }
                            $company->addRelatedCompany($rCompany);
                        }
                    }
                }
                $richieste->next();
            }
        }
        if (isset($statHandler)) {
            fclose($statHandler);
            if ($bulk->count() > 0) {
                $manager->executeBulkWrite('report_impresa.sksocieta', $bulk);
            }
        }
        echo PHP_EOL;
    }
Exemplo n.º 12
0
 /**
  * read config from (current db in $dbc).$db_table
  *
  * @param Zend_Db $dbc
  * @param string $db_table
  * @param string $section
  * @return array
  */
 protected function _parse_ini_db($dbc, $db_table, $section)
 {
     $sql = 'select * from ' . $db_table;
     if ($section !== null) {
         $sql .= ' where ' . $section;
     }
     $db_config = $dbc->query($sql);
     $config = array();
     while (($row = $db_config->fetch()) !== false) {
         $key = explode('.', $row['config_key']);
         $depth = count($key);
         $ci =& $config;
         for ($cnt = 0; $cnt < $depth; $cnt++) {
             if ($cnt == $depth - 1) {
                 $ci[$key[$cnt]] = $row['config_value'];
             } elseif (!isset($ci[$key[$cnt]])) {
                 $ci[$key[$cnt]] = array();
             }
             $ci =& $ci[$key[$cnt]];
         }
     }
     return $config;
 }
Exemplo n.º 13
0
    public function import($statOnly = '')
    {
        $dateFilter = '`data_ora_rich` > CURDATE() - INTERVAL 2 MONTH';
        if ($statOnly != '') {
            $config = clone $this->db->config;
            $configDb = $this->db->config->database->toArray();
            $configDb['options']['buffer_results'] = false;
            $this->db = new \Zend\Db\Adapter\Adapter($configDb);
            $this->db->config = $config;
            $dateFilter = 'TRUE';
            if ($this->db->config->storeExpiryStatFile->Rep3P != '') {
                $statHandler = fopen($this->db->config->storeExpiryStatFile->Rep3P, 'w');
            }
            $manager = new \MongoDB\Driver\Manager("mongodb://*****:*****@year')[0];
            $dati['dataCerved'] .= '-';
            $dati['dataCerved'] .= str_pad((string) $sXML->xpath('/*/ns3:DeliveryAndSummaryDetails/DeliveredOn/@month')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataCerved'] .= '-';
            $dati['dataCerved'] .= str_pad((string) $sXML->xpath('/*/ns3:DeliveryAndSummaryDetails/DeliveredOn/@day')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataCerved'] .= ' ';
            $dati['dataCerved'] .= str_pad((string) $sXML->xpath('/*/ns3:DeliveryAndSummaryDetails/DeliveredOn/@hour24')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataCerved'] .= ':';
            $dati['dataCerved'] .= str_pad((string) $sXML->xpath('/*/ns3:DeliveryAndSummaryDetails/DeliveredOn/@minutes')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataCerved'] .= ':';
            $dati['dataCerved'] .= str_pad((string) $sXML->xpath('/*/ns3:DeliveryAndSummaryDetails/DeliveredOn/@seconds')[0], 2, '0', STR_PAD_LEFT);
            if (strlen($dati['dataCerved']) < 6) {
                $dati['dataCerved'] = '';
            }
            $dati['gruppo'] = (string) $sXML->xpath('/*/ns4:ItemInformation/MemberOfGroup')[0];
            $dati['gruppoRuolo'] = (string) $sXML->xpath('/*/ns4:ItemInformation/Role')[0];
            $dati['partIVA'] = (string) $sXML->xpath('/*/ns4:ItemInformation/CompanyInformation/VATRegistrationNo')[0];
            $dati['ragSoc'] = (string) $sXML->xpath('/*/ns4:ItemInformation/CompanyInformation/CompanyName')[0];
            $dati['codFisc'] = (string) $sXML->xpath('/*/ns4:ItemInformation/CompanyInformation/TaxCode')[0];
            $dati['provCCIAA'] = (string) $sXML->xpath('/*/ns4:ItemInformation/ReaCode/CoCProvinceCode')[0];
            $dati['nCCIAA'] = (string) $sXML->xpath('/*/ns4:ItemInformation/ReaCode/REANo')[0];
            $dati['prov'] = (string) $sXML->xpath('/*/ns4:ItemInformation/CompanyInformation/Address/Province/@Code')[0];
            $dati['comune'] = (string) $sXML->xpath('/*/ns4:ItemInformation/CompanyInformation/Address/Municipality')[0];
            $dati['indirizzo'] = (string) $sXML->xpath('/*/ns4:ItemInformation/CompanyInformation/Address/Street')[0];
            $dati['CAP'] = (string) $sXML->xpath('/*/ns4:ItemInformation/CompanyInformation/Address/PostCode')[0];
            $dati['nazione'] = (string) $sXML->xpath('/*/ns4:ItemInformation/CompanyInformation/Address/Country')[0];
            $dati['sitoWeb'] = (string) $sXML->xpath('/*/ns4:ItemInformation/WebSite')[0];
            $dati['email'] = (string) $sXML->xpath('/*/ns4:ItemInformation/Email')[0];
            $dati['telefono'] = (string) $sXML->xpath('/*/ns4:ItemInformation/Telephone')[0];
            $dati['statoAttivita'] = (string) $sXML->xpath('/*/ns4:ItemInformation/ActivityStatusDescription')[0];
            $dati['formaGiurid'] = (string) $sXML->xpath('/*/ns4:ItemInformation/CompanyInformation/CompanyForm')[0];
            $dati['tipoSoc'] = (string) $sXML->xpath('/*/ns4:ItemInformation/CompanyInformation/CompanyForm/@LegalFormType')[0];
            $dati['capitaleSociale'] = (string) $sXML->xpath('/*/ns4:ItemInformation/EquityCapital')[0];
            $dati['codISTAT'] = (string) $sXML->xpath('/*/ns4:ItemInformation/ISTATCode/@Code')[0];
            $dati['desISTAT'] = (string) $sXML->xpath('/*/ns4:ItemInformation/ISTATCode')[0];
            $dati['codNACE'] = (string) $sXML->xpath('/*/ns4:ItemInformation/NaceCode')[0];
            $dati['dataInizioAtt'] = (string) $sXML->xpath('/*/ns4:ItemInformation/ActivityStartDate/@year')[0];
            $dati['dataInizioAtt'] .= '-';
            $dati['dataInizioAtt'] .= str_pad((string) $sXML->xpath('/*/ns4:ItemInformation/ActivityStartDate/@month')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataInizioAtt'] .= '-';
            $dati['dataInizioAtt'] .= str_pad((string) $sXML->xpath('/*/ns4:ItemInformation/ActivityStartDate/@day')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataInizioAtt'] .= ' ';
            $dati['dataInizioAtt'] .= str_pad((string) $sXML->xpath('/*/ns4:ItemInformation/ActivityStartDate/@hour24')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataInizioAtt'] .= ':';
            $dati['dataInizioAtt'] .= str_pad((string) $sXML->xpath('/*/ns4:ItemInformation/ActivityStartDate/@minutes')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataInizioAtt'] .= ':';
            $dati['dataInizioAtt'] .= str_pad((string) $sXML->xpath('/*/ns4:ItemInformation/ActivityStartDate/@seconds')[0], 2, '0', STR_PAD_LEFT);
            if (strlen($dati['dataInizioAtt']) < 6) {
                $dati['dataInizioAtt'] = '';
            }
            $dati['dataCostituzione'] = (string) $sXML->xpath('/*/ns4:ItemInformation/IncorporationDate/@year')[0];
            $dati['dataCostituzione'] .= '-';
            $dati['dataCostituzione'] .= str_pad((string) $sXML->xpath('/*/ns4:ItemInformation/IncorporationDate/@month')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataCostituzione'] .= '-';
            $dati['dataCostituzione'] .= str_pad((string) $sXML->xpath('/*/ns4:ItemInformation/IncorporationDate/@day')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataCostituzione'] .= ' ';
            $dati['dataCostituzione'] .= str_pad((string) $sXML->xpath('/*/ns4:ItemInformation/IncorporationDate/@hour24')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataCostituzione'] .= ':';
            $dati['dataCostituzione'] .= str_pad((string) $sXML->xpath('/*/ns4:ItemInformation/IncorporationDate/@minutes')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataCostituzione'] .= ':';
            $dati['dataCostituzione'] .= str_pad((string) $sXML->xpath('/*/ns4:ItemInformation/IncorporationDate/@seconds')[0], 2, '0', STR_PAD_LEFT);
            if (strlen($dati['dataCostituzione']) < 6) {
                $dati['dataCostituzione'] = '';
            }
            $dati['dataREA'] = (string) $sXML->xpath('/*/ns4:ItemInformation/RegistrationDate/@year')[0];
            $dati['dataREA'] .= '-';
            $dati['dataREA'] .= str_pad((string) $sXML->xpath('/*/ns4:ItemInformation/RegistrationDate/@month')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataREA'] .= '-';
            $dati['dataREA'] .= str_pad((string) $sXML->xpath('/*/ns4:ItemInformation/RegistrationDate/@day')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataREA'] .= ' ';
            $dati['dataREA'] .= str_pad((string) $sXML->xpath('/*/ns4:ItemInformation/RegistrationDate/@hour24')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataREA'] .= ':';
            $dati['dataREA'] .= str_pad((string) $sXML->xpath('/*/ns4:ItemInformation/RegistrationDate/@minutes')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataREA'] .= ':';
            $dati['dataREA'] .= str_pad((string) $sXML->xpath('/*/ns4:ItemInformation/RegistrationDate/@seconds')[0], 2, '0', STR_PAD_LEFT);
            if (strlen($dati['dataREA']) < 6) {
                $dati['dataREA'] = '';
            }
            $codiceFido = (string) $sXML->xpath('/*/ns19_:AverageGrantableCredit/CreditLimit/Code')[0];
            if ($codiceFido == '') {
                $codiceFido = (string) $sXML->xpath('/*/ns19_:AverageGrantableCredit/BlockCode')[0];
            }
            $dati['fidoAffidabilta'] = '';
            if (key_exists($codiceFido, $aFido)) {
                $dati['fidoAffidabilta'] = $aFido[$codiceFido];
            }
            $codiceFido = (string) $sXML->xpath('/*/ns19_:AverageGrantableCredit/CreditLimit/Note')[0];
            $dati['fidoAffidabiltaNote'] = '';
            if (key_exists($codiceFido, $this->aFido)) {
                $dati['fidoAffidabiltaNote'] = $this->aFido[$codiceFido];
            }
            $dati['fidoAccordabile'] = (string) $sXML->xpath('/*/ns19_:AverageGrantableCredit/CreditLimit/Value')[0];
            $dati['numUffSedi'] = (string) $sXML->xpath('/*/ns4:ItemInformation/OfficesAndSubOrganizationsNumber')[0];
            $dati['desAttivita'] = (string) $sXML->xpath('/*/ns16:Activity/ActivityDescription')[0];
            $dati['eventi'] = count($sXML->xpath('/*/ns17:ExtraordinaryEvents/ns17:ExtraordinaryEventsList/EventItem'));
            $dati['protesti'] = count($sXML->xpath('/*/ns6:Protests/ns6:ProtestsBlock/ns6:SingleProtestBlock'));
            $dati['fallimenti'] = count($sXML->xpath('/*/ns7:Bankruptcy/ns7:BankruptcyBlock/ns7:SingleBankruptcyBlock'));
            $dati['pregiudizievoli'] = count($sXML->xpath('/*/ns8:AgreedWindingUpProcedures/ns8:ItemAgreeWindingUpProcedure/ns8:AgreedWindingUpProcedure'));
            $dati['cassaIntegrazione'] = count($sXML->xpath('/*/ns20:Layoffs/Decree'));
            $dati['nDipendenti'] = (string) $sXML->xpath('/*/ns9:CompanyEmployee/NumberOfEmployees')[0];
            $dati['fatturato'] = (string) $sXML->xpath('/*/ns40:BalanceSheet/BalanceSheetInfo/ProfitAndLoss/Sales/Value')[0];
            $dati['annoFatturato'] = (string) $sXML->xpath('/*/ns40:BalanceSheet/BalanceSheetInfo/ReferenceYear')[0];
            $dati['trendFatturato'] = (string) $sXML->xpath('/*/ns40:BalanceSheet/BalanceSheetInfo/ProfitAndLoss/Sales/Change')[0];
            $dati['utilePerdita'] = (string) $sXML->xpath('/*/ns40:BalanceSheet/BalanceSheetInfo/ProfitAndLoss/ProfitAndLoss/Value')[0];
            $dati['patrimonioNetto'] = (string) $sXML->xpath('/*/ns40:BalanceSheet/BalanceSheetInfo/Assets/TotalAssets/Value')[0];
            $dati['margineOperativoLordo'] = (string) $sXML->xpath('/*/ns40:BalanceSheet/BalanceSheetInfo/ProfitAndLoss/GrossProfit/Value')[0];
            $dati['risultatoOperativoLordo'] = (string) $sXML->xpath('/*/ns40:BalanceSheet/BalanceSheetInfo/ProfitAndLoss/OperatingProfit/Value')[0];
            $dati['indiceIndebitamento'] = (string) $sXML->xpath('/*/ns41:BalanceSheetAnalysis/BalanceSheetRatios/Voices/DebtRatio/Value')[0];
            $dati['ROI'] = (string) $sXML->xpath('/*/ns41:BalanceSheetAnalysis/BalanceSheetRatios/Voices/Roi/Value')[0];
            $dati['ROE'] = (string) $sXML->xpath('/*/ns41:BalanceSheetAnalysis/BalanceSheetRatios/Voices/Roe/Value')[0];
            $dati['indiceLiquidita'] = (string) $sXML->xpath('/*/ns41:BalanceSheetAnalysis/BalanceSheetRatios/Voices/CurrentAssetsRatio/Value')[0];
            $dati['fidoAccordabile201604'] = fidoRep3P201604($dati['fidoAccordabile'], $dati['tipoSoc'], $dati['fatturato']);
            $dati['dataChiusuraBilancio'] = (string) $sXML->xpath('/*/ns40:BalanceSheet/BalanceSheetInfo/ClosingDate/@year')[0];
            $dati['dataChiusuraBilancio'] .= '-';
            $dati['dataChiusuraBilancio'] .= str_pad((string) $sXML->xpath('/*/ns40:BalanceSheet/BalanceSheetInfo/ClosingDate/@month')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataChiusuraBilancio'] .= '-';
            $dati['dataChiusuraBilancio'] .= str_pad((string) $sXML->xpath('/*/ns40:BalanceSheet/BalanceSheetInfo/ClosingDate/@day')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataChiusuraBilancio'] .= ' ';
            $dati['dataChiusuraBilancio'] .= str_pad((string) $sXML->xpath('/*/ns40:BalanceSheet/BalanceSheetInfo/ClosingDate/@hour24')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataChiusuraBilancio'] .= ':';
            $dati['dataChiusuraBilancio'] .= str_pad((string) $sXML->xpath('/*/ns40:BalanceSheet/BalanceSheetInfo/ClosingDate/@minutes')[0], 2, '0', STR_PAD_LEFT);
            $dati['dataChiusuraBilancio'] .= ':';
            $dati['dataChiusuraBilancio'] .= str_pad((string) $sXML->xpath('/*/ns40:BalanceSheet/BalanceSheetInfo/ClosingDate/@seconds')[0], 2, '0', STR_PAD_LEFT);
            if (strlen($dati['dataChiusuraBilancio']) < 6) {
                $dati['dataChiusuraBilancio'] = '';
            }
            foreach ($sXML->xpath('/*/ns5:Subsidiaries/ns5:Othersubsidiaries') as $subsidiarie) {
                $esponente = array();
                $esponente['nome'] = (string) $subsidiarie->xpath('OthersubsidiarieInfos')[0];
                $esponente['cognome'] = '';
                $esponente['codFisc'] = (string) $subsidiarie->xpath('TaxCode')[0];
                $esponente['dataNas'] = '';
                $esponente['luogoNas'] = '';
                $esponente['prov'] = '';
                $esponente['comune'] = '';
                $esponente['indirizzo'] = '';
                $esponente['CAP'] = '';
                $esponente['titolo'] = (string) $subsidiarie->xpath('MainPosition')[0];
                $esponenti[] = $esponente;
            }
            foreach ($sXML->xpath('/*/ns23:Shareholders/ShareholdersList/Shareholder/ShareholderItem') as $shareolder) {
                if (count($shareolder->xpath('ns22:Aziendaslim'))) {
                    $impresa = array();
                    $impresa['ragSoc'] = (string) $shareolder->xpath('ns22:Aziendaslim/CompanyInformation/CompanyName')[0];
                    $impresa['formaGiurid'] = (string) $shareolder->xpath('ns22:Aziendaslim/CompanyInformation/CompanyForm')[0];
                    $impresa['partIVA'] = (string) $shareolder->xpath('ns22:Aziendaslim/CompanyInformation/TaxCode')[0];
                    $impresa['capitaleSociale'] = (string) $shareolder->xpath('ns22:Aziendaslim/EquityCapital')[0];
                    $impresa['statoAttivita'] = (string) $shareolder->xpath('ns22:Aziendaslim/ActivityDescription')[0];
                    $impresa['provCCIAA'] = (string) $shareolder->xpath('ns22:Aziendaslim/ReaCode/CoCProvinceCode')[0];
                    $impresa['nCCIAA'] = (string) $shareolder->xpath('ns22:Aziendaslim/ReaCode/REANo')[0];
                    $impresa['prov'] = (string) $shareolder->xpath('ns22:Aziendaslim/CompanyInformation/Address/Province/@Code')[0];
                    $impresa['comune'] = (string) $shareolder->xpath('ns22:Aziendaslim/CompanyInformation/Address/Municipality')[0];
                    $impresa['indirizzo'] = (string) $shareolder->xpath('ns22:Aziendaslim/CompanyInformation/Address/Street')[0];
                    $impresa['CAP'] = (string) $shareolder->xpath('ns22:Aziendaslim/CompanyInformation/Address/PostCode')[0];
                    $impresa['titolo'] = 'SOCIO';
                    $imprese[] = $impresa;
                } else {
                    $esponente = array();
                    $esponente['nome'] = (string) $shareolder->xpath('IndividualInformation/FirstName')[0];
                    $esponente['cognome'] = (string) $shareolder->xpath('IndividualInformation/LastName')[0];
                    $esponente['codFisc'] = (string) $shareolder->xpath('IndividualInformation/TaxCode')[0];
                    $esponente['dataNas'] = '';
                    $esponente['luogoNas'] = '';
                    $esponente['prov'] = '';
                    $esponente['comune'] = '';
                    $esponente['indirizzo'] = '';
                    $esponente['CAP'] = '';
                    $esponente['titolo'] = 'SOCIO';
                    $esponenti[] = $esponente;
                }
            }
            foreach ($sXML->xpath('/*/ns24:Holdings/ControllatedCompany') as $controlledCompany) {
                $impresa = array();
                $impresa['ragSoc'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/CompanyName')[0];
                $impresa['formaGiurid'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/CompanyForm')[0];
                $impresa['partIVA'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/TaxCode')[0];
                $impresa['capitaleSociale'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/EquityCapital')[0];
                $impresa['statoAttivita'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/ActivityDescription')[0];
                $impresa['provCCIAA'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/ReaCode/CoCProvinceCode')[0];
                $impresa['nCCIAA'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/ReaCode/REANo')[0];
                $impresa['prov'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/Address/Province/@Code')[0];
                $impresa['comune'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/Address/Municipality')[0];
                $impresa['indirizzo'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/Address/Street')[0];
                $impresa['CAP'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/Address/PostCode')[0];
                $impresa['titolo'] = 'CONTROLLATA';
                $imprese[] = $impresa;
            }
            foreach ($sXML->xpath('/*/ns24:Holdings/LinkedCompany') as $controlledCompany) {
                $impresa = array();
                $impresa['ragSoc'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/CompanyName')[0];
                $impresa['formaGiurid'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/CompanyForm')[0];
                $impresa['partIVA'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/TaxCode')[0];
                $impresa['capitaleSociale'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/EquityCapital')[0];
                $impresa['statoAttivita'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/ActivityDescription')[0];
                $impresa['provCCIAA'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/ReaCode/CoCProvinceCode')[0];
                $impresa['nCCIAA'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/ReaCode/REANo')[0];
                $impresa['prov'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/Address/Province/@Code')[0];
                $impresa['comune'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/Address/Municipality')[0];
                $impresa['indirizzo'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/Address/Street')[0];
                $impresa['CAP'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/Address/PostCode')[0];
                $impresa['titolo'] = 'COLLEGATA';
                $imprese[] = $impresa;
            }
            foreach ($sXML->xpath('/*/ns25:OfficialDirectors/Director') as $director) {
                $esponente = array();
                $esponente['nome'] = (string) $director->xpath('Individual/FirstName')[0];
                $esponente['cognome'] = (string) $director->xpath('Individual/LastName')[0];
                $esponente['codFisc'] = (string) $director->xpath('Individual/TaxCode')[0];
                $esponente['dataNas'] = substr((string) $director->xpath('Individual/BirthDate')[0], 0, 10);
                $esponente['luogoNas'] = (string) $director->xpath('Individual/BirthPlace')[0];
                $esponente['prov'] = (string) $director->xpath('Individual/ResidenceAddress/Province/@Code')[0];
                $esponente['comune'] = (string) $director->xpath('Individual/ResidenceAddress/Municipality')[0];
                $esponente['indirizzo'] = (string) $director->xpath('Individual/ResidenceAddress/Street')[0];
                $esponente['CAP'] = (string) $director->xpath('Individual/ResidenceAddress/PostCode')[0];
                $esponente['titolo'] = (string) $director->xpath('IndividualPosition/Type')[0];
                $esponenti[] = $esponente;
            }
            foreach ($sXML->xpath('/*/ns26:PreviousOfficialDirectors/Director') as $director) {
                $esponente = array();
                $esponente['nome'] = (string) $director->xpath('Individual/FirstName')[0];
                $esponente['cognome'] = (string) $director->xpath('Individual/LastName')[0];
                $esponente['codFisc'] = (string) $director->xpath('Individual/TaxCode')[0];
                $esponente['dataNas'] = substr((string) $director->xpath('Individual/BirthDate')[0], 0, 10);
                $esponente['luogoNas'] = (string) $director->xpath('Individual/BirthPlace')[0];
                $esponente['prov'] = (string) $director->xpath('Individual/ResidenceAddress/Province/@Code')[0];
                $esponente['comune'] = (string) $director->xpath('Individual/ResidenceAddress/Municipality')[0];
                $esponente['indirizzo'] = (string) $director->xpath('Individual/ResidenceAddress/Street')[0];
                $esponente['CAP'] = (string) $director->xpath('Individual/ResidenceAddress/PostCode')[0];
                $esponente['titolo'] = 'PRECEDENTE ' . (string) $director->xpath('IndividualPosition/Type')[0];
                $esponenti[] = $esponente;
            }
            foreach ($sXML->xpath('/*/ns27:PositionCompany/ns27:PositionRelatedCompany/Director') as $director) {
                $esponente = array();
                $esponente['nome'] = (string) $director->xpath('Individual/FirstName')[0];
                $esponente['cognome'] = (string) $director->xpath('Individual/LastName')[0];
                $esponente['codFisc'] = (string) $director->xpath('Individual/TaxCode')[0];
                $esponente['dataNas'] = substr((string) $director->xpath('Individual/BirthDate')[0], 0, 10);
                $esponente['luogoNas'] = (string) $director->xpath('Individual/BirthPlace')[0];
                $esponente['prov'] = (string) $director->xpath('Individual/ResidenceAddress/Province/@Code')[0];
                $esponente['comune'] = (string) $director->xpath('Individual/ResidenceAddress/Municipality')[0];
                $esponente['indirizzo'] = (string) $director->xpath('Individual/ResidenceAddress/Street')[0];
                $esponente['CAP'] = (string) $director->xpath('Individual/ResidenceAddress/PostCode')[0];
                $esponente['titolo'] = (string) $director->xpath('Position/Type')[0];
                $esponenti[] = $esponente;
            }
            foreach ($sXML->xpath('/*/ns27:PositionCompany/ns27:PositionRelatedCompany/RelatedCompany') as $controlledCompany) {
                $impresa = array();
                $impresa['ragSoc'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/CompanyName')[0];
                $impresa['formaGiurid'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/CompanyForm')[0];
                $impresa['partIVA'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/TaxCode')[0];
                $impresa['capitaleSociale'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/EquityCapital')[0];
                $impresa['statoAttivita'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/ActivityDescription')[0];
                $impresa['provCCIAA'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/ReaCode/CoCProvinceCode')[0];
                $impresa['nCCIAA'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/ReaCode/REANo')[0];
                $impresa['prov'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/Address/Province/@Code')[0];
                $impresa['comune'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/Address/Municipality')[0];
                $impresa['indirizzo'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/Address/Street')[0];
                $impresa['CAP'] = (string) $controlledCompany->xpath('ns22:Aziendaslim/CompanyInformation/Address/PostCode')[0];
                $impresa['titolo'] = 'CORRELATA';
                $imprese[] = $impresa;
            }
            restore_error_handler();
            if ($statOnly != '') {
                array_walk($dati, create_function('&$item', '$item=str_replace("\\"","",$item);'));
                if (isset($statHandler)) {
                    if (ftell($statHandler) == 0) {
                        fputcsv($statHandler, array_keys($dati));
                    }
                    fputcsv($statHandler, $dati);
                    fflush($statHandler);
                }
                $domXml = dom_import_simplexml($sXML);
                $aXML = array('_id' => $dati['id_mov_contab']);
                $this->xml2array($domXml, $aXML);
                /*$xml = new \SimpleXMLElement('<root/>');
                
                
                         $t*his->array_to_xml($aXML,$xml);*/
                if (true || is_array($aXML) && $totalCount++ < 10000.0) {
                    $bulk->update(array('_id' => $dati['id_mov_contab']), $aXML, array('multi' => false, 'upsert' => true));
                }
            }
            if ($dati['partIVA'] == '' || $dati['partIVA'] == 0 || $statOnly != '') {
                $richieste->next();
                continue;
            }
            $company->setData(array());
            $company->loadFromId($dati['partIVA']);
            $cDati = $company->getData();
            if (is_array($cDati) && count($cDati) > 0) {
                $company->setData(array_merge($cDati, array_filter($dati)));
                $company->update();
            } else {
                $company->setData($dati);
                $company->insert();
            }
            foreach ($imprese as $impresa) {
                $rCompany->setData(array());
                $rCompany->loadFromId($impresa['partIVA']);
                $cDati = $rCompany->getData();
                if (is_array($cDati) && count($cDati) > 0) {
                    $rCompany->setData(array_merge($cDati, array_filter($impresa)));
                    $rCompany->update();
                } else {
                    $rCompany->setData($impresa);
                    $rCompany->insert();
                }
                $company->addRelatedCompany($rCompany);
            }
            foreach ($esponenti as $esponente) {
                if (strlen($esponente['codFisc']) == 16) {
                    $person->setData(array());
                    $person->loadFromId($esponente['codFisc']);
                    $cDati = $person->getData();
                    if (is_array($cDati) && count($cDati) > 0) {
                        $person->setData(array_merge($cDati, array_filter($esponente)));
                        $person->update();
                    } else {
                        $person->setData($esponente);
                        $person->insert();
                    }
                    $company->addRelatedExponent($person);
                } else {
                    $rCompany->setData(array());
                    $esponente['partIVA'] = $esponente['codFisc'];
                    $rCompany->loadFromId($esponente['partIVA']);
                    $cDati = $rCompany->getData();
                    if (is_array($cDati) && count($cDati) > 0) {
                        $rCompany->setData(array_merge($cDati, array_filter($esponente)));
                        $rCompany->update();
                    } else {
                        $rCompany->setData($esponente);
                        $rCompany->insert();
                    }
                    $company->addRelatedCompany($rCompany);
                }
            }
            $richieste->next();
        }
        $this->db->query('ALTER TABLE company ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE company_to_company ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE person ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE person_to_company ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        if (isset($statHandler)) {
            fclose($statHandler);
            if ($bulk->count() > 0) {
                $manager->executeBulkWrite('report_impresa.rep3p', $bulk);
            }
        }
        echo PHP_EOL;
    }
Exemplo n.º 14
0
    public function import($statOnly = '')
    {
        $dateFilter = '`data_ora_rich` > CURDATE() - INTERVAL 2 MONTH';
        if ($statOnly != '') {
            $config = clone $this->db->config;
            $configDb = $this->db->config->database->toArray();
            $configDb['options']['buffer_results'] = false;
            $this->db = new \Zend\Db\Adapter\Adapter($configDb);
            $this->db->config = $config;
            $dateFilter = 'TRUE';
            if ($this->db->config->storeExpiryStatFile->Catasto != '') {
                $statHandler = fopen($this->db->config->storeExpiryStatFile->Catasto, 'w');
            }
        }
        $archiviRichieste = array(array('dir' => 'risposteBaseDirMass', 'sql' => '
SELECT aps_prod_backup.eps_richiesta_mass.id_richiesta,
aps_prod_backup.eps_richiesta_mass.id_mov_contab,
aps_prod_backup.eps_richiesta_mass.id_richiesta_cache,
aps_prod_backup.eps_richiesta_mass.stringa_richiesta,
aps_prod_backup.eps_richiesta_mass.data_ora_rich,
aps_prod_backup.eps_richiesta_mass.data_ora_evas,
aps_prod.eps_operazione.cod_operazione as cod_operazione ,
aps_prod_backup.eps_mov_contab_mass.cod_causale as cod_causale ,
aps_prod_backup.eps_mov_contab_mass.importo as importo ,
aps_prod_backup.eps_mov_contab_mass.id_mov_contab_gen as id_mov_contab_gen ,
aps_prod.eps_prodotto.cod_prodotto as cod_prodotto ,
aps_prod.eps_cliente.cod_cliente as cod_cliente ,
aps_prod.eps_istanza.cod_istanza as cod_istanza
FROM aps_prod_backup.eps_richiesta_mass
LEFT JOIN aps_prod.eps_operazione ON aps_prod.eps_operazione.id_operazione=aps_prod_backup.eps_richiesta_mass.id_operazione
LEFT JOIN aps_prod_backup.eps_mov_contab_mass ON aps_prod_backup.eps_mov_contab_mass.id_mov_contab=aps_prod_backup.eps_richiesta_mass.id_mov_contab
LEFT JOIN aps_prod.eps_prodotto ON aps_prod.eps_prodotto.id_prodotto =aps_prod_backup.eps_mov_contab_mass.id_prodotto
LEFT JOIN aps_prod.eps_cliente ON aps_prod.eps_cliente.id_cliente=aps_prod_backup.eps_mov_contab_mass.id_cliente
LEFT JOIN aps_prod.eps_istanza ON aps_prod.eps_istanza.id_istanza=aps_prod.eps_cliente.id_istanza
WHERE
' . $dateFilter . ' AND (
   aps_prod.eps_operazione.cod_operazione = "omicf" OR 
   aps_prod.eps_operazione.cod_operazione = "omi" OR 
   aps_prod.eps_operazione.cod_operazione = "sintecf" OR
   aps_prod.eps_operazione.cod_operazione = "sintesi" OR
   aps_prod.eps_operazione.cod_operazione = "sintesi3" OR
   aps_prod.eps_operazione.cod_operazione = "visucf" OR
   aps_prod.eps_operazione.cod_operazione = "visura" OR
   aps_prod.eps_operazione.cod_operazione = "visura3"
)
                    '), array('dir' => 'risposteBaseDir', 'sql' => '
SELECT aps_prod_backup.eps_richiesta.id_richiesta,
aps_prod_backup.eps_richiesta.id_mov_contab,
aps_prod_backup.eps_richiesta.id_richiesta_cache,
aps_prod_backup.eps_richiesta.stringa_richiesta,
aps_prod_backup.eps_richiesta.data_ora_rich,
aps_prod_backup.eps_richiesta.data_ora_evas,
aps_prod.eps_operazione.cod_operazione as cod_operazione ,
aps_prod_backup.eps_mov_contab.cod_causale as cod_causale ,
aps_prod_backup.eps_mov_contab.importo as importo ,
aps_prod_backup.eps_mov_contab.id_mov_contab_gen as id_mov_contab_gen ,
aps_prod.eps_prodotto.cod_prodotto as cod_prodotto ,
aps_prod.eps_cliente.cod_cliente as cod_cliente ,
aps_prod.eps_istanza.cod_istanza as cod_istanza

FROM aps_prod_backup.eps_richiesta
LEFT JOIN aps_prod.eps_operazione ON aps_prod.eps_operazione.id_operazione=aps_prod_backup.eps_richiesta.id_operazione
LEFT JOIN aps_prod_backup.eps_mov_contab ON aps_prod_backup.eps_mov_contab.id_mov_contab=aps_prod_backup.eps_richiesta.id_mov_contab
LEFT JOIN aps_prod.eps_prodotto ON aps_prod.eps_prodotto.id_prodotto =aps_prod_backup.eps_mov_contab.id_prodotto
LEFT JOIN aps_prod.eps_cliente ON aps_prod.eps_cliente.id_cliente=aps_prod_backup.eps_mov_contab.id_cliente
LEFT JOIN aps_prod.eps_istanza ON aps_prod.eps_istanza.id_istanza=aps_prod.eps_cliente.id_istanza
WHERE  
' . $dateFilter . ' AND (
   aps_prod.eps_operazione.cod_operazione = "sintecf" OR aps_prod.eps_operazione.cod_operazione = "omicf" OR 
   aps_prod.eps_operazione.cod_operazione = "sintesi" OR aps_prod.eps_operazione.cod_operazione = "omi" OR 
   aps_prod.eps_operazione.cod_operazione = "sintecf" OR aps_prod.eps_operazione.cod_operazione = "sintecf" OR 
   aps_prod.eps_operazione.cod_operazione = "sintesi" OR aps_prod.eps_operazione.cod_operazione = "sintesi" OR 
   aps_prod.eps_operazione.cod_operazione = "sintesi3" OR aps_prod.eps_operazione.cod_operazione = "sintesi3" OR
   aps_prod.eps_operazione.cod_operazione = "sintecf" OR aps_prod.eps_operazione.cod_operazione = "visucf" OR
   aps_prod.eps_operazione.cod_operazione = "sintesi" OR aps_prod.eps_operazione.cod_operazione = "visura" OR 
   aps_prod.eps_operazione.cod_operazione = "sintesi3" OR aps_prod.eps_operazione.cod_operazione = "visura3" 
)
                    '));
        foreach ($archiviRichieste as $archivioRichieste) {
            $richieste = $this->db->query($archivioRichieste['sql'], \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
            $count = 0;
            $rCompany = new \crm\Company($this->db);
            $company = new \crm\Company($this->db);
            $person = new \crm\Person($this->db);
            $rPerson = new \crm\Person($this->db);
            while (is_object($richiesta = $richieste->current())) {
                echo "\r" . $count++ . '/' . ($richieste->count() - 1) . str_repeat(' ', 5);
                $dati = array();
                $sId = str_pad($richiesta->id_richiesta, 9, '0', STR_PAD_LEFT);
                $dM = 'M' . substr($sId, 0, 3);
                $dK = 'K' . substr($sId, 3, 3);
                $nomeFile = $this->db->config->{$archivioRichieste['dir']} . "/{$dM}/{$dK}/F{$sId}.xml";
                if (!is_file($nomeFile)) {
                    $richieste->next();
                    continue;
                }
                $dati['id_mov_contab'] = $richiesta->id_mov_contab;
                $dati['massiva'] = $archivioRichieste['dir'] == 'risposteBaseDir' ? 0 : 1;
                $dati['id_richiesta'] = $richiesta->id_richiesta;
                $dati['test_nome_file'] = "\"" . str_replace('"', '\\"', basename($nomeFile)) . "\"";
                $dati['errore'] = '';
                $dati['data_ora_rich'] = $richiesta->data_ora_rich;
                $dati['data_ora_evas'] = $richiesta->data_ora_evas;
                $dati['cod_operazione'] = $richiesta->cod_operazione;
                $dati['cod_prodotto'] = $richiesta->cod_prodotto;
                $dati['cod_cliente'] = $richiesta->cod_cliente;
                $dati['cod_istanza'] = $richiesta->cod_istanza;
                $dati['importo'] = $richiesta->importo;
                $dati['differita'] = 1;
                $dati['stornata'] = 0;
                if ($richiesta->importo == 0 && $richiesta->id_richiesta_cache == 0) {
                    $dati['stornata'] = 1;
                }
                set_error_handler(create_function('', ''));
                $filecontent = file_get_contents($nomeFile);
                $filecontent = iconv('ISO-8859-1', 'UTF-8//IGNORE', $filecontent);
                libxml_use_internal_errors(true);
                try {
                    $sXML = new \SimpleXMLElement($filecontent);
                } catch (Exception $e) {
                    var_dump(libxml_get_errors());
                    var_dump(file_get_contents($nomeFile));
                }
                $dati['dataADTI'] = (string) $sXML->xpath('/ADTIReport/time/data/anno')[0];
                $dati['dataADTI'] .= '-';
                $dati['dataADTI'] .= str_pad((string) $sXML->xpath('/ADTIReport/time/data/mese')[0], 2, '0', STR_PAD_LEFT);
                $dati['dataADTI'] .= '-';
                $dati['dataADTI'] .= str_pad((string) $sXML->xpath('/ADTIReport/time/data/giorno')[0], 2, '0', STR_PAD_LEFT);
                $dati['dataADTI'] .= ' ';
                $dati['dataADTI'] .= str_pad((string) $sXML->xpath('/ADTIReport/time/ora/ore')[0], 2, '0', STR_PAD_LEFT);
                $dati['dataADTI'] .= ':';
                $dati['dataADTI'] .= str_pad((string) $sXML->xpath('/ADTIReport/time/ora/minuti')[0], 2, '0', STR_PAD_LEFT);
                $dati['dataADTI'] .= ':';
                $dati['dataADTI'] .= str_pad((string) $sXML->xpath('/ADTIReport/time/ora/secondi')[0], 2, '0', STR_PAD_LEFT);
                if (strlen($dati['dataADTI']) < 6) {
                    $dati['dataADTI'] = '';
                }
                restore_error_handler();
                if ($statOnly != '') {
                    array_walk($dati, create_function('&$item', '$item=str_replace("\\"","",$item);'));
                    if (isset($statHandler)) {
                        if (ftell($statHandler) == 0) {
                            fputcsv($statHandler, array_keys($dati));
                        }
                        fputcsv($statHandler, $dati);
                        fflush($statHandler);
                    }
                }
                $soggetto = $sXML->xpath('/ADTIReport/visuraCatastale/elencoInfoCatasto/infoCatasto/soggetto');
                if (sizeof($soggetto) < 1 || $statOnly != '') {
                    $richieste->next();
                    continue;
                }
                $soggetto = $soggetto[0];
                $dati['codFisc'] = (string) $soggetto->codiceFiscale;
                if (strlen($dati['codFisc']) == 16) {
                    preg_match("/^(\\w+)/", $soggetto->denominazione, $matches);
                    $cognome = $matches[1];
                    $nome = trim(str_replace($cognome, '', $soggetto->denominazione));
                    $dati['nome'] = $nome;
                    $dati['cognome'] = $cognome;
                    $person->setData(array());
                    $person->loadFromId($dati['codFisc']);
                    $cDati = $person->getData();
                    if (is_array($cDati) && count($cDati) > 0) {
                        $person->setData(array_merge($cDati, array_filter($dati)));
                        $person->update();
                    } else {
                        $person->setData($dati);
                        $person->insert();
                    }
                } else {
                    if ($dati['codFisc'] != '') {
                        $dati['partIVA'] = $dati['codFisc'];
                        $dati['ragSoc'] = (string) $soggetto->denominazione;
                        $company->setData(array());
                        $company->loadFromId($dati['codFisc']);
                        $cDati = $company->getData();
                        if (is_array($cDati) && count($cDati) > 0) {
                            $company->setData(array_merge($cDati, array_filter($dati)));
                            $company->update();
                        } else {
                            $company->setData($dati);
                            $company->insert();
                        }
                    }
                }
                $correlati = $sXML->xpath('/ADTIReport/visuraCatastale/elencoInfoCatasto/infoCatasto/elencoUnitaImmobiliari/unitaImmobiliari/elencoIntestatari/intestatari/soggetto');
                if (!is_array($correlati)) {
                    $richieste->next();
                    continue;
                }
                foreach ($correlati as $correlato) {
                    $rDati = array();
                    $rDati['codFisc'] = (string) $correlato->codiceFiscale;
                    if (strlen($rDati['codFisc']) == 16) {
                        $rDati['nome'] = (string) $correlato->nominativo->nome;
                        $rDati['cognome'] = (string) $correlato->nominativo->cognome;
                        $rDati['dataNas'] = '';
                        if (is_object($correlato->datiNascita->data) && !is_null($correlato->datiNascita->data->anno)) {
                            $dateObject = date_date_set(new \DateTime(), (string) $correlato->datiNascita->data->anno, (string) $correlato->datiNascita->data->mese, (string) $correlato->datiNascita->data->giorno);
                            if (is_object($dateObject)) {
                                $rDati['dataNas'] = (string) date_format($dateObject, 'Y-m-d');
                            }
                        }
                        $rDati['luogoNas'] = '';
                        if (is_object($correlato->datiNascita->comune) && !is_null($correlato->datiNascita->comune->descrComune)) {
                            $rDati['luogoNas'] = trim(preg_replace('/\\(.*\\)/', '', (string) $correlato->datiNascita->comune->descrComune));
                        }
                        $rPerson->setData(array());
                        $rPerson->loadFromId($rDati['codFisc']);
                        $cDati = $rPerson->getData();
                        if (is_array($cDati) && count($cDati) > 0) {
                            $rPerson->setData(array_merge($cDati, array_filter($rDati)));
                            $rPerson->update();
                        } else {
                            $rPerson->setData($rDati);
                            $rPerson->insert();
                        }
                        if ($dati['codFisc'] == $rDati['codFisc']) {
                            continue;
                        }
                        if (strlen($dati['codFisc']) == 16) {
                            $person->addRelatedPerson($rPerson);
                        } else {
                            if ($dati['codFisc'] != '') {
                                $company->addRelatedExponent($rPerson);
                            }
                        }
                    } else {
                        if ($rDati['codFisc'] != '') {
                            $rDati['partIVA'] = $rDati['codFisc'];
                            $rDati['ragSoc'] = (string) $correlato->denominazione;
                            $rCompany->setData(array());
                            $rCompany->loadFromId($rDati['partIVA']);
                            $cDati = $rCompany->getData();
                            if (is_array($cDati) && count($cDati) > 0) {
                                $rCompany->setData(array_merge($cDati, array_filter($rDati)));
                                $rCompany->update();
                            } else {
                                $rCompany->setData($rDati);
                                $rCompany->insert();
                            }
                            if ($dati['codFisc'] == $rDati['codFisc']) {
                                continue;
                            }
                            if (strlen($dati['codFisc']) == 16) {
                                $rCompany->addRelatedExponent($person);
                            } else {
                                if ($dati['codFisc'] != '') {
                                    $rCompany->addRelatedCompany($company);
                                }
                            }
                        }
                    }
                }
                $richieste->next();
            }
        }
        if (isset($statHandler)) {
            fclose($statHandler);
        }
        echo PHP_EOL;
    }
Exemplo n.º 15
0
    public function import($statOnly = '')
    {
        $dateFilter = '`data_ora_rich` > CURDATE() - INTERVAL 2 MONTH';
        if ($statOnly != '') {
            $config = clone $this->db->config;
            $configDb = $this->db->config->database->toArray();
            $configDb['options']['buffer_results'] = false;
            $this->db = new \Zend\Db\Adapter\Adapter($configDb);
            $this->db->config = $config;
            $dateFilter = 'TRUE';
            if ($this->db->config->storeExpiryStatFile->AnaimpVis != '') {
                $statHandler = fopen($this->db->config->storeExpiryStatFile->AnaimpVis, 'w');
            }
            $manager = new \MongoDB\Driver\Manager("mongodb://*****:*****@Description');
                if (sizeof($activity) > 1) {
                    $dati['desISTAT'] = (string) $activity[0];
                }
                $dati['codNACE'] = '';
                $dati['dataInizioAtt'] = '';
                $dateObject = date_create_from_format('Ymd', (string) $companyData->RegisteredHeadOfficeIdentification->CompanyRegistryRegistrationDate);
                if (is_object($dateObject)) {
                    $dati['dataInizioAtt'] = date_format($dateObject, 'Y-m-d H:i:s');
                }
                $dati['dataCostituzione'] = '';
                $dati['dataREA'] = '';
                $dateObject = date_create_from_format('Ymd', (string) $companyData->RegisteredHeadOfficeIdentification->REARegistrationDate);
                if (is_object($dateObject)) {
                    $dati['dataREA'] = date_format($dateObject, 'Y-m-d H:i:s');
                }
                $dati['fidoAffidabilta'] = '';
                $dati['fidoAffidabiltaNote'] = '';
                $dati['fidoAccordabile'] = '';
                $dati['numUffSedi'] = '';
                $sedi = $sXML->xpath('/s2xResponse/s2xData/BranchList');
                if (is_array($sedi) && sizeof($sedi) > 0) {
                    $dati['numUffSedi'] = sizeof($sedi[0]);
                }
                $dati['desAttivita'] = '';
                $desAttivita = $sXML->xpath('/s2xResponse/s2xData/CompanyIdentification/CompanyPurpose');
                if (sizeof($desAttivita) > 0) {
                    $dati['desAttivita'] = strip_tags($desAttivita[0]->asXML());
                }
                $dati['eventi'] = '';
                $dati['protesti'] = '';
                $dati['fallimenti'] = '';
                $dati['pregiudizievoli'] = '';
                $dati['cassaIntegrazione'] = '';
                $dati['nDipendenti'] = '';
                $nDipendenti = $sXML->xpath('/s2xResponse/s2xData/CERVEDAddedValue/Employees/Number');
                if (is_array($nDipendenti) && sizeof($nDipendenti) > 0) {
                    $dati['nDipendenti'] = (string) $nDipendenti[0];
                }
                $dati['fatturato'] = '';
                $fatturato = $sXML->xpath('/s2xResponse/s2xData/CERVEDAddedValue/Revenue/Value');
                if (is_array($nDipendenti) && sizeof($nDipendenti) > 0) {
                    $dati['fatturato'] = (string) $fatturato[0];
                }
                $annofatturato = $sXML->xpath('/s2xResponse/s2xData/CERVEDAddedValue/Revenue/FinancialStatementDate/@year');
                if (is_array($annofatturato) && sizeof($annofatturato) > 0) {
                    $dati['annoFatturato'] = (string) $annofatturato[0];
                }
                $dati['trendFatturato'] = '';
                $dati['utilePerdita'] = '';
                $dati['patrimonioNetto'] = '';
                $dati['margineOperativoLordo'] = '';
                $dati['risultatoOperativoLordo'] = '';
                $dati['indiceIndebitamento'] = '';
                $dati['ROI'] = '';
                $dati['ROE'] = '';
                $dati['indiceLiquidita'] = '';
                $dati['dataChiusuraBilancio'] = '';
                foreach ($sXML->xpath('/s2xResponse/s2xData/Representatives/IndividualList/Individual') as $shareolder) {
                    if (property_exists($shareolder, 'PersonalData')) {
                        $esponente = array();
                        $esponente['nome'] = (string) $shareolder->PersonalData->FirstName;
                        $esponente['cognome'] = (string) $shareolder->PersonalData->LastName;
                        $esponente['codFisc'] = (string) $shareolder->PersonalData->TaxCode;
                        $esponente['dataNas'] = '';
                        $dateObject = date_create_from_format('Ymd', (string) $shareolder->PersonalData->Birth->BirthDate);
                        if (is_object($dateObject)) {
                            $esponente['dataNas'] = (string) date_format($dateObject, 'Y-m-d');
                        }
                        $esponente['luogoNas'] = (string) $shareolder->PersonalData->Birth->City;
                        $esponente['prov'] = (string) $shareolder->PersonalData->TaxDomicile->ProvinceCode;
                        $esponente['comune'] = (string) $shareolder->PersonalData->TaxDomicile->City;
                        $esponente['indirizzo'] = (string) $shareolder->PersonalData->TaxDomicile->ToponymCode . ' ' . (string) $shareolder->PersonalData->TaxDomicile->StreetName . ' ' . (string) $shareolder->PersonalData->TaxDomicile->StreetNo;
                        $esponente['CAP'] = (string) $shareolder->PersonalData->TaxDomicile->Postcode;
                        $esponente['titolo'] = 'ESPONENTE';
                        $esponenti[] = $esponente;
                    }
                }
                foreach ($sXML->xpath('/s2xResponse/s2xData/Representatives/EquivalentCompanyList/EquivalentCompany') as $shareolder) {
                    if (property_exists($shareolder, 'CompanyIdentification')) {
                        $impresa = array();
                        $impresa['ragSoc'] = (string) $shareolder->CompanyIdentification->CompanyName;
                        $impresa['formaGiurid'] = '';
                        $impresa['partIVA'] = (string) $shareolder->CompanyIdentification->TaxCode;
                        $impresa['capitaleSociale'] = '';
                        $impresa['statoAttivita'] = '';
                        $impresa['provCCIAA'] = (string) $shareolder->CompanyIdentification->REAProvinceCode;
                        $impresa['nCCIAA'] = (string) $shareolder->CompanyIdentification->REANo;
                        $impresa['prov'] = (string) $shareolder->CompanyIdentification->Address->ProvinceCode;
                        $impresa['comune'] = (string) $shareolder->CompanyIdentification->Address->City;
                        $impresa['indirizzo'] = (string) $shareolder->CompanyIdentification->Address->ToponymCode . ' ' . (string) $shareolder->CompanyIdentification->Address->StreetName . ' ' . (string) $shareolder->CompanyIdentification->Address->StreetNo;
                        $impresa['CAP'] = (string) $shareolder->CompanyIdentification->Address->PostCode;
                        $impresa['titolo'] = 'CORRELATA';
                        $imprese[] = $impresa;
                    }
                }
                restore_error_handler();
                if ($statOnly != '') {
                    array_walk($dati, create_function('&$item', '$item=str_replace("\\"","",$item);'));
                    if (isset($statHandler)) {
                        if (ftell($statHandler) == 0) {
                            fputcsv($statHandler, array_keys($dati));
                        }
                        fputcsv($statHandler, $dati);
                        fflush($statHandler);
                    }
                    $domXml = dom_import_simplexml($sXML);
                    $aXML = array('_id' => $dati['id_mov_contab']);
                    $this->xml2array($domXml, $aXML);
                    /*$xml = new \SimpleXMLElement('<root/>');
                    
                    
                                   $t*his->array_to_xml($aXML,$xml);*/
                    if (true || is_array($aXML) && $totalCount++ < 10000.0) {
                        $bulk->update(array('_id' => $dati['id_mov_contab']), $aXML, array('multi' => false, 'upsert' => true));
                    }
                }
                if ($dati['partIVA'] == '' || $dati['partIVA'] == 0 || $statOnly != '') {
                    $richieste->next();
                    continue;
                }
                $company->setData(array());
                $company->loadFromId($dati['partIVA']);
                $cDati = $company->getData();
                if (is_array($cDati) && count($cDati) > 0) {
                    $company->setData(array_merge($cDati, array_filter($dati)));
                    $company->update();
                } else {
                    $company->setData($dati);
                    $company->insert();
                }
                foreach ($imprese as $impresa) {
                    $rCompany->setData(array());
                    $rCompany->loadFromId($impresa['partIVA']);
                    $cDati = $rCompany->getData();
                    if (is_array($cDati) && count($cDati) > 0) {
                        $rCompany->setData(array_merge($cDati, array_filter($impresa)));
                        $rCompany->update();
                    } else {
                        $rCompany->setData($impresa);
                        $rCompany->insert();
                    }
                    $company->addRelatedCompany($rCompany);
                }
                foreach ($esponenti as $esponente) {
                    if (strlen($esponente['codFisc']) == 16) {
                        $person->setData(array());
                        $person->loadFromId($esponente['codFisc']);
                        $cDati = $person->getData();
                        if (is_array($cDati) && count($cDati) > 0) {
                            $person->setData(array_merge($cDati, array_filter($esponente)));
                            $person->update();
                        } else {
                            $person->setData($esponente);
                            $person->insert();
                        }
                        $company->addRelatedExponent($person);
                    } else {
                        $rCompany->setData(array());
                        $esponente['partIVA'] = $esponente['codFisc'];
                        $rCompany->loadFromId($esponente['partIVA']);
                        $cDati = $rCompany->getData();
                        if (is_array($cDati) && count($cDati) > 0) {
                            $rCompany->setData(array_merge($cDati, array_filter($esponente)));
                            $rCompany->update();
                        } else {
                            $rCompany->setData($esponente);
                            $rCompany->insert();
                        }
                        $company->addRelatedCompany($rCompany);
                    }
                }
                $richieste->next();
            }
        }
        $this->db->query('ALTER TABLE company ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE company_to_company ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE person ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        $this->db->query('ALTER TABLE person_to_company ENABLE KEYS', \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
        if (isset($statHandler)) {
            fclose($statHandler);
            if ($bulk->count() > 0) {
                $manager->executeBulkWrite('report_impresa.anaimpvis', $bulk);
            }
        }
        echo PHP_EOL;
    }