/** * Método principal del comando * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) * @version 2015-09-30 */ public function main($ambiente = \sasco\LibreDTE\Sii::PRODUCCION) { // obtener conexión a la base de datos $db =& \sowerphp\core\Model_Datasource_Database::get(); // obtener firma electrónica try { $Firma = new \sasco\LibreDTE\FirmaElectronica(); } catch (\sowerphp\core\Exception $e) { $this->out('<error>No fue posible obtener la firma electrónica</error>'); return 1; } // obtener contribuyentes de ambiente de producción $contribuyentes = \sasco\LibreDTE\Sii::getContribuyentes($Firma, $ambiente); if (!$contribuyentes) { $this->out('<error>No fue posible obtener los contribuyentes desde el SII</error>'); return 2; } // procesar cada uno de los contribuyentes $registros = num(count($contribuyentes)); $procesados = 0; foreach ($contribuyentes as $c) { // contabilizar contribuyente procesado $procesados++; if ($this->verbose >= 1) { $this->out('Procesando ' . num($procesados) . '/' . $registros . ': contribuyente ' . $c[1]); } // agregar y/o actualizar datos del contribuyente si no tiene usuario administrador list($rut, $dv) = explode('-', $c[0]); $Contribuyente = new \website\Dte\Model_Contribuyente($rut); if (!$Contribuyente->usuario) { $Contribuyente->dv = $dv; $Contribuyente->razon_social = substr($c[1], 0, 100); if (isset($c[3][9])) { $aux = explode('-', $c[3]); if (isset($aux[2])) { list($d, $m, $Y) = $aux; $Contribuyente->resolucion_fecha = $Y . '-' . $m . '-' . $d; } } if (is_numeric($c[2])) { $Contribuyente->resolucion_numero = (int) $c[2]; } if (strpos($c[4], '@')) { $Contribuyente->intercambio_user = substr($c[4], 0, 50); } $Contribuyente->modificado = date('Y-m-d H:i:s'); try { $Contribuyente->save(); } catch (\sowerphp\core\Exception_Model_Datasource_Database $e) { if ($this->verbose >= 2) { $this->out('<error>Contribuyente ' . $c[1] . ' no pudo ser guardado en la base de datos</error>'); } } } } $this->showStats(); return 0; }
* SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. * Consulte los detalles de la Licencia Pública General GNU para obtener * una información más detallada. * * Debería haber recibido una copia de la Licencia Pública General GNU * junto a este programa. * En caso contrario, consulte <http://www.gnu.org/licenses/gpl.html>. */ /** * @file 024-getContribuyentes.php * Ejemplo de obtención de datos archivo CSV con getContribuyentes autorizados * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) * @version 2015-09-30 */ // respuesta en texto plano header('Content-type: text/plain'); // incluir archivos php de la biblioteca y configuraciones include 'inc.php'; // solicitar datos $datos = \sasco\LibreDTE\Sii::getContribuyentes(new \sasco\LibreDTE\FirmaElectronica($config['firma']), \sasco\LibreDTE\Sii::PRODUCCION); // si hubo errores se muestran if (!$datos) { foreach (\sasco\LibreDTE\Log::readAll() as $error) { echo $error, "\n"; } exit; } // descargar archivo como CSV array_unshift($datos, ['RUT', 'Razón social', 'Número resolución', 'Fecha resolución', 'Email intercambio', 'URL']); \sasco\LibreDTE\CSV::generate($datos, 'contribuyentes', ';', '');