Hola buenas tardes, estamos probando actas digitales y nos topamos con un error al momento de cerrar el acta con un docente.
El error dice “Falló la creación del documento en SIU-Araí”
El acta en la base se cierra y el campo estado_documento_digital queda en ‘F’
Desde Guaraní Gestión ingresó a “Sincronizar Masivamente Documentos con Araí” y puedo procesar el acta correctamente.
Te comento, yo seguí el rastro del log y encuentro varias cosas raras en la operación generateAndPostAsync() de Documentos.php
Primero esta línea " if (empty($params)) "
La variable $params no la veo definida en ningún lado.
Probé cambiar $params por $documento
y tira error más abajo " $archivo->setTipo($tipo_archivo); "
Dice que no existe el método setTipo()
Y ahí ya decidí escribirles…
clase: SIU\DocumentosCli\Exceptions\AraiDocsException
mensaje: ERROR: Error inesperado. Si especifica generacion de archivo por callback debe ingresar parametros
Veo que estas cerrando el acta de cursada desde Autogestión, quizás esta fallando la generación del PDF del acta, proba poniendo los logs en nivel debug (en instalacion/config.php pones 'nivel' => log::NIVEL_DEBUG,) y volve a mandarme los logs al cerrar otra acta.
Ojo que tenes personalizado este archivo src/pers/unm/modelo/transacciones/cierre_actas_cursada.php:
- function: acta_nucleo::enviar_acta_arai_documentos
- file: /usr/local/proyectos/3w/src/pers/unm/modelo/transacciones/cierre_actas_cursada.php, linea 248
---[ 3 ]-----------------------------------------
- function: unm\modelo\transacciones\cierre_actas_cursada->evt__cerrar_acta
- file: /usr/local/proyectos/3w/src/siu/operaciones/cierre_cursadas/controlador.php, linea 49
En la versión 3.22.0 hubo una mejora con el ticket #47207, si queres crea un GDS y te adelantamos la solución.
Si, por lo que veo esa estructura se arma en acta_nucleo::enviar_acta_arai_documentos() esa operación no la tenemos personalizada.
También bajamos los cambios que me pasaste por GDS y sigue arrojando la misma estructura.
Leo cómo estás?
Te comento que pude resolverlo.
Lo que hice fue renombrar la carpeta vendor y ejecutar nuevamente composer install, porque ya no sabía que probar.
Con eso quedó funcionando correctamente.
Lo que me resulta raro es lo que vos me comentás con respecto al array.
Porque en el log de autogestión el array se sigue visualizando tal cual te lo envié.
También vi que hicieron algunas modificaciones en la versión 3.22, en unos meses seguramente ya estaremos actualizando y probándolo en esa versión.
Leo te comento que no me quedé tranquilo con no saber que pasó, seguí buscando y creo que encontré el problema.
Comparé la carpeta vendor vieja que tenía con la nueva que generé hoy.
Y encontré cambios en la función que te mencioné al principio del post “generateAndPostAsync” del archivo 3w\vendor\siu-arai\documentos-cli\src\SIU\DocumentosCli\Services\Documentos.php
Dejo ambas, quizás a alguien le sirve.
Vieja:
public function generateAndPostAsync(Documento $documento, $tipo_archivo = "pdf")
{
try {
if (empty($params)) {
$this->logger->error("Si especifica generacion de archivo por callback debe ingresar parametros");
throw new AraiDocsException("Si especifica generacion de archivo por callback debe ingresar parametros", 500);
}
$archivo = new Archivo();
$archivo->setTipo($tipo_archivo);
$archivo->setStream(null);
$archivo->setMd5(null);
$documento->setArchivo($archivo);
$json_message = [];
$json_message['documento'] = $documento->asArray();
$json_message['callback_file'] = false;
$json_message = $this->encode_items($json_message);
$this->asyncQueue->sendMessageToQueue("DocumentosQueue", json_encode($json_message));
} catch (RequestException $e) {
$mensajeExtra = $e->getMessage();
$request = ["documento" => ["archivo" => "No se muestra el archivo en log", "documento" => $documento->asArray()]];
$this->logger->error("Error postDocumento, codigo ".$e->getCode().". Mensaje: ".$mensajeExtra.". request: ".print_r($request, true));
throw new AraiDocsException('Error inesperado en Request. '.$mensajeExtra, $e->getCode());
} catch (\Exception $e) {
$this->logger->error("Error postDocumento, codigo ".$e->getCode().". Mensaje: ".$e->getMessage().". request: ".print_r($request, true));
throw new AraiDocsException('Error inesperado. '.$e->getMessage(), $e->getCode());
}
}
Nueva:
public function generateAndPostAsync(Documento $documento)
{
try {
$documento->getArchivo()->setFilepath(null);
$documento->getArchivo()->setContenidoBase64(null);
$documento->getArchivo()->setMd5(null);
$json_message = [];
$json_message['documento'] = $documento->asArray();
$json_message['callback_file'] = true;
$json_message = $this->encode_items($json_message);
$this->asyncQueue->sendMessageToQueue("DocumentosQueue", json_encode($json_message));
} catch (RequestException $e) {
$mensajeExtra = $e->getMessage();
$request = ["documento" => ["archivo" => "No se muestra el archivo en log", "documento" => $documento->asArray()]];
$this->logger->error("Error postDocumento, codigo ".$e->getCode().". Mensaje: ".$mensajeExtra.". request: ".print_r($request, true));
throw new AraiDocsException('Error inesperado en Request. '.$mensajeExtra, $e->getCode());
} catch (\Exception $e) {
$this->logger->error("Error postDocumento, codigo ".$e->getCode().". Mensaje: ".$e->getMessage().". request: ".print_r($request, true));
throw new AraiDocsException('Error inesperado. '.$e->getMessage(), $e->getCode());
}
}