_model = new Application_Model_Generic(); } /** * Funzione per il recupero delle credenziali di accesso al servizio fatturaB2B * * Le cerca prima nella tabella di appoggio interna fe_authdata * se non le trova le cerca tramite il collegamento al sito fattuab2b.it e le memorizza per i successvi utilizzi * * @param string $piva * @return mixed * @throws App_Controller_Errors_WebServiceError */ public function getFeAuthCredential(string $piva) { $piva = str_replace('IT','', $piva); $credenziali = $this->_model->getByColumnName('FeAuthData', 'PartitaIva', $piva); if (!$credenziali) { // se non le trovo le cerco sul servizio del sito fattura b2b $credenziali = $this->getFeAuthFatturaB2B($piva); } return $this->decriptaCredenziali($credenziali); } /** * Recuper le credenziali dal sito fatturab2b.it e nel caso non sono presenti le memorizza sulla tabella delle credenziali * @param $piva * @return array|array[] * @throws App_Controller_Errors_WebServiceError */ private function getFeAuthFatturaB2B($piva) { //Controllo se il cliente ha il servizio di fatturazione elettronica attivo sul sito FatturaB2B $ApiFatturaB2B = new App_Model_CurlHttpClient('https://www.fatturab2b.it/services/checkserviziofe'); $credenzialiFe = $ApiFatturaB2B->getCall(array('piva' => $piva, 'info' => 1)); if (!$credenzialiFe || !$credenzialiFe['success'] || !$credenzialiFe['data']['StatoServizio']) { throw new App_Controller_Errors_WebServiceError("Credenziali non esistenti o servizio non attivo per la partita iva $piva"); } $credenziali = $credenzialiFe['data']; $credenziali['PartitaIva'] = str_replace('IT','', $credenziali['PartitaIva']); return $this->insertUpdateFeAuthRecord($credenziali); } /** * Memorizza le credenziali nella tabella di appoggio fe_authdata * * @param $credenziali * @return array|array[] * @throws App_Controller_Errors_WebServiceError * @throws Zend_Form_Exception */ private function insertUpdateFeAuthRecord($credenziali) { $feAuthDataForm = new Application_Form_Admin_Index_FeAuthData_Add(); if(!$feAuthDataForm->isValid($credenziali)){ throw new App_Controller_Errors_WebServiceError("Dati da inserire nel fe auth data non validi"); } $credenziali = $feAuthDataForm->getValues(); $credenziali['DataUpdate'] = date('Y-m-d H:i:s'); $this->_model->deleteWhere('FeAuthData', array("PartitaIva = '?'" => $credenziali['PartitaIva'])); $credenziali['id'] = $this->_model->insert('FeAuthData', $credenziali); return $credenziali; } /** * Decripta le credenziali e le restituisce * * @param $credenziali * @return mixed */ private function decriptaCredenziali($credenziali){ $credenziali['Password'] = App_Service_CodificaPiva::decriptaHex($credenziali['Password']); return $credenziali; } }