/** * Acción que entrega los XML del resultado de la revisión del intercambio * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) * @version 2015-09-28 */ public function resultados_xml($codigo) { $Emisor = $this->getContribuyente(); // obtener DTE emitido $DteIntercambio = new Model_DteIntercambio($Emisor->rut, $codigo, (int) $Emisor->certificacion); if (!$DteIntercambio->exists()) { \sowerphp\core\Model_Datasource_Session::message('No existe el intercambio solicitado', 'error'); $this->redirect('/dte/dte_intercambios'); } // si no hay XML error if (!$DteIntercambio->recepcion_xml and !$DteIntercambio->recibos_xml and !$DteIntercambio->resultado_xml) { \sowerphp\core\Model_Datasource_Session::message('No existen archivos de resultado generados, no se ha procesado aun el intercambio', 'error'); $this->redirect(str_replace('resultados_xml', 'ver', $this->request->request)); } // agregar a archivo comprimido y entregar $dir = TMP . '/resultado_intercambio_' . $Emisor->rut . '-' . $Emisor->dv . '_' . $DteIntercambio->codigo; if (is_dir($dir)) { \sowerphp\general\Utility_File::rmdir($dir); } if (!mkdir($dir)) { \sowerphp\core\Model_Datasource_Session::message('No fue posible crear el directorio temporal para los XML', 'error'); $this->redirect(str_replace('resultados_xml', 'ver', $this->request->request)); } if ($DteIntercambio->recepcion_xml) { file_put_contents($dir . '/RecepcionDTE.xml', base64_decode($DteIntercambio->recepcion_xml)); } if ($DteIntercambio->recibos_xml) { file_put_contents($dir . '/EnvioRecibos.xml', base64_decode($DteIntercambio->recibos_xml)); } if ($DteIntercambio->resultado_xml) { file_put_contents($dir . '/ResultadoDTE.xml', base64_decode($DteIntercambio->resultado_xml)); } \sowerphp\general\Utility_File::compress($dir, ['format' => 'zip', 'delete' => true]); exit; }