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); } }
/** * 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; }
/** * 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(); }
/** * 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; } }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
/** * 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; }
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; }
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; }
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; }