Crear nuevo módulo para homologar moodle

Crear nuevo módulo para homologar moodle

de jose luis garcia -
Número de respuestas: 95

Hola a todos, muchos estamos esperando que el SEPE saque las normas por las cuales se regirá la homologación de las plataformas para poder impartir los cursos online con certificados de profesional.

Tarde, muy tarde y parece que por fin se toman en serio la teleformación. Pero claro..... como dije van tarde, ahora lo que tenían que haber hecho es sacar las normas para la nueva teleformación que viene, que es la telepresencial, ya que con las nuevas tecnologías y redes sociales, los cursos a través de videoconferencia ya están aquí.

Bueno a lo que vamos...... nos hemos hecho con una borrador de las normas que regirán la homologación de las plataformas, me lo han pasado de DKA Formación empresa con la que colaboro a menudo y piden un montón de cosas que Moodle no tiene.

Copio y pego aquí la que más me preocupa que es la del seguimiento:

Anexo II Seguimiento de las acciones formativas impartidas en modalidad de teleformación

  1. El seguimiento se llevará a cabo sobre las acciones formativas de formación profesional para el empleo que, en modalidad de teleformación, se desarrollen en el ámbito de gestión del Servicio Público de Empleo Estatal, incluyendo las acciones formativas no financiadas con fondos públicos desarrolladas por empresas y centros de iniciativa privada.
  2. La única fuente de información considerada válida para proporcionar datos de seguimiento será la URL de seguimiento que a este fin se consignó en la solicitud de acreditación o inscripción, siendo solamente ésta la fuente que pueda proporcionar dichos datos. A esta URL de seguimiento se accederá utilizando el protocolo SOAP. El fichero WSDL que define este servicio estará disponible en la página web del Servicio Público de Empleo Estatal. El centro deberá implementar este servicio web al que invocarán los sistemas del Servicio Público de Empleo Estatal.
  3. La recogida, tratamiento y cesión de los datos para el seguimiento de las acciones formativas de formación profesional para el empleo en modalidad de teleformación se efectuará a través del correspondiente fichero automatizado de datos, que deberá ser creado por cada centro de formación de conformidad con lo establecido en la Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal.

El centro de formación, como responsable del contenido del fichero, deberá informar previamente a toda persona física titular de los datos incluidos en el mismo, de la existencia de este fichero, cuya exclusiva finalidad es realizar la evaluación, seguimiento y control de las acciones formativas desarrolladas por el centro y cuyo destinatario es el Servicio Público de Empleo Estatal, recabando su consentimiento expreso para el tratamiento de los datos personales que le conciernen, así como de la posibilidad de ejercer los derechos de acceso, rectificación, cancelación y oposición.

Cada centro de formación deberá adoptar las medidas de índole técnica y organizativa necesarias que garanticen la seguridad e integridad de los datos de carácter personal contenidos en el fichero.

  1. Una vez que al centro de formación acreditado o inscrito se le asigne el correspondiente código de centro para su inclusión en el Registro de centros del Servicio Público de Empleo Estatal, dicho Servicio Público de Empleo Estatal invocará al servicio web de seguimiento, facilitando todos los datos de identificación que dicho centro de formación hizo constar en su solicitud de acreditación o inscripción, así como el código de centro asignado. Esta es la situación inicial del servicio web de seguimiento, por lo por lo que el centro de formación habrá de eliminar cualquier acción formativa de prueba creada en el proceso de acreditación o inscripción.
  2. El seguimiento de cada acción formativa se realizará desde la fecha de inicio prevista en la solicitud de autorización para el desarrollo de las acciones formativas, hasta 30 días después de la fecha de finalización prevista para dicha acción.
  3. Durante este período, la información sobre cada acción formativa debe estar disponible para su obtención, pudiéndose eliminar únicamente cuando el período de seguimiento antes señalado haya concluido.
  4. El seguimiento se llevará a cabo con la siguiente periodicidad:

a)     Al comienzo de la acción formativa, una vez que se haya producido la comunicación de inicio de la misma.

b)     Durante el desarrollo de cada acción formativa, con la periodicidad que determine el Servicio Público de Empleo Estatal.

c)     Después de la finalización de la acción formativa, durante los 30 días siguientes a que la misma tenga lugar, al objeto de obtener los resultados alcanzados.

  1. Una vez que el Servicio Público de Empleo Estatal obtenga los primeros datos de seguimiento sobre la actividad formativa de un centro concreto, la sucesiva información de esta naturaleza que se obtenga eliminará y sustituirá a la registrada la vez anterior, a fin de evitar datos erróneos, inexactos o duplicados.
  2. Todos los códigos de centros de formación y de especialidades formativas utilizados en el seguimiento se refieren a centros y especialidades mantenidos en los ficheros del Servicio Público de Empleo Estatal y, por lo tanto, su origen se codificará siempre con el valor 20 que corresponde a dicho Servicio Público de Empleo Estatal.
  3. Los datos de seguimiento sobre las acciones formativas iniciadas en el centro se estructuran en dos ámbitos:

 

Y ahora viene el problema:

Todo esto es lo que piden y la pregunta es... como hacer que moodle comunique todos estos datos??

Se podría crear un módulo para que cree todas estas nuevas tablas en la base de datos?? Hacer una base de datos externa a Moodle?? Y que pasa con las estadísticas, otro nuevo módulo? Se podría modificar el módulo dedication??

En fin que por ahora estamos algo confundidos y necesitamos ayuda, haber si entre todos sacamos algo en claro.

Gracias

Promedio de valoraciones:Útil (2)
En respuesta a jose luis garcia

Re: Crear nuevo módulo para homologar moodle

de Isaac Marco Blancas -

El SEPE acaba de publicar las especificaciones de los webservices a implementar para poder hologar LMSs para la impartición de certificados de profesionalidad en modalidad de teleformación. Esto tiene mucha miga...

http://www.sepe.es/contenido/empleo_formacion/formacion/formacion_para_el_empleo/formacion_profesional_para_el_empleo/centros_y_entidades_de_formacion/acreditacionCentros.html#enlace2

En respuesta a Isaac Marco Blancas

Re: Crear nuevo módulo para homologar moodle

de Germán Micale -

Cierto, sí tiene miga. Entiendo que todos los centros utilizarán Moodle y la información a otorgar al SEPE es la misma por lo que el desarrollo colaborativo nos ahorraría recursos a todos.

Si alguien está interesado en repartir esfuerzos o hay alguna iniciativa en marcha podéis contar conmigo.

Un saludo

En respuesta a Germán Micale

Re: Crear nuevo módulo para homologar moodle

de Hector Muñoz -

Hola

Si, tengo los documentos imprimidos y dan impresion, jeje. Por supuesto que estoy interesado en compartir esfuerzos, lo que no se es como, pero me interesa, voy a contactar con la empresa que dicen por ahí. Cualquier cosa que pueda aportar la aportaria, yo estoy en un centro de enseñanza pequeño y estoy solo yo para este tema. Al SEPE le escribi pero no me contestan, pues eso que estamos en contacto y gracias de antemano.

Un saludo

Hector

En respuesta a Hector Muñoz

Re: Crear nuevo módulo para homologar moodle

de Rodrigo Rodríguez -

Hola, 

La verdad es que sí, yo también los tengo impresos y asustan un poco... jajaja A mi el SEPE tampoco me contestan, por lo que leí en otro foro ahora van a enviar más documentación con algunos cambios que han realizado, creo que han complicado un poco las cosas con lo que piden, podría ser algo más sencillo.

En respuesta a Rodrigo Rodríguez

Re: Crear nuevo módulo para homologar moodle

de Hector Muñoz -

Hola

Primero gracias por contestar, pues solo podemos esperar haber que dicen, haber si entre todos podemos sacarlo, estaria muy bien, por mi parte todo lo que pueda ayudar lo hare, por mi parte tengo moodle instalado con un tema responsive, con el modulo de accesibilidad puesto, funciona todo, menos los paquetes SCORM en los moviles, te funcionan a ti?

 

En respuesta a Hector Muñoz

Re: Crear nuevo módulo para homologar moodle

de Rodrigo Rodríguez -

Para que te funcione en los móviles utiliza alguna herramienta que exporte los paquetes SCORM en html5, así no tendrás problemas.

En respuesta a jose luis garcia

Re: Crear nuevo módulo para homologar moodle

de No name -

Nosotros también estamos echándole un ojo a esto y tiene mucha mucha miga.

Antes que centrarnos en los problemas que planteas en tu entrada y en los interrogantes que plantea, yo iría a algo más mundano: la autenticación.

En el documento se requiere que la autenticación de este servicio web sea usando, y cito textualmente añadiendo un enlace: "la utilización del estándar Web Services Security UsernameToken Profiles 1.0 OASIS Standard 200401, March 2004"

Hasta donde yo sé, para poder integrar realmente servicios web en Moodle, la autenticación y la seguridad deben estar integrados en Moodle: el servicio se autentica en Moodle, recibe un token, se usa el token en el servicio, se validan los permisos... El tener que usar un método de autenticación distinto implica que, o se integra éste con Moodle (no he encontrado ningún plugin que lo haga), o se hacen servicios web autónomos que no utilicen la funcionalidad del core de Moodle -y su API-, así que hay que inventar la rueda.

¿Cómo se os ocurre que se puede solucionar este problema? Poder utilizar las funcionalidades de Moodle (sobre todo las que trae Moodle 2.7 con los eventos y el sistema de logs) facilitaría mucho el asunto.

Un saludo!

En respuesta a No name

Re: Crear nuevo módulo para homologar moodle

de F Caracuel -

Hola a todos. 


Estoy haciendo las prácticas en una empresa de teleformación y soy el encargado de convertir moodle en algo más accesible y crear el servidor para que se comunique el SEPE.


De momento el tema de la accesibilidad está acabado y con respecto a lo más complicado, el servidor SOAP, deciros que estoy implementando una api externa a moodle en php y que comunica con una base de datos propia y de moodle para algunos datos.


De momento tengo funcional al 100% "Crear Centro", "Obtener datos centro" y "Crear acción".


En cuanto a la autenticación, la voy a dejar para lo último.


Mi intención es, una vez que tenga terminado el servidor, subirlo a Github y poder explicaros como implementarlo para vuestras plataformas. La verdad que es un coñazo... pero entre todos creo que se podrá hacer sin problema.


Un saludo!

En respuesta a F Caracuel

Re: Crear nuevo módulo para homologar moodle

de Hector Muñoz -

Hola

Yo estoy con Moodle tambien, la accesibilidad la estoy comprobando con WAVE y parece que no me da ningun fallo importante, estaria genial eso que comentas, yo todo los que pueda aportar...

Un saludo

Hector

En respuesta a F Caracuel

Re: Crear nuevo módulo para homologar moodle

de Silvia Fernández -

Buenos días Fran,

me alegro mucho que puedas ayudarnos a todos con esto. Yo estoy teniendo muchos problemas con la implementación, como muchos otros "compañeros" que escriben en los foros (entre otros, en https://moodle.org/mod/forum/discuss.php?d=258222)....

¿podrías ir adelantandonos alguna de las partes ya realizadas para ver si con ello vamos consiguiendo avanzar?

Muchísimas gracias por tu apoyo, un saludo

En respuesta a Silvia Fernández

Re: Crear nuevo módulo para homologar moodle

de F Caracuel -

Buenas tardes, estoy esperando la confirmación para ver si puedo subir a GitHub el proyecto.

En cuanto la tenga, os subo lo que tengo hecho y os explico como funciona y que datos tenéis que cambiar.


En el fondo no se si es 100% correcto como lo estoy haciendo, solo sé que recibo los errores correctos y que toda la validación que se debe cumplir con el archivo .wsdl está perfectamente.


El cliente que utilizo para hacer pruebas está también en php y no tendría problemas con que el del SEPE sea en Java.


Ya os confirmo en estos días. Un saludo.

En respuesta a No name

Re: Crear nuevo módulo para homologar moodle

de F Caracuel -

De momento no me han contestado...

Lo que si puedo hacer mientras es, indicar como se puede empezar. Las dudas que tengáis, podéis exponerlas aquí o en otro post y yo os digo como se va haciendo. Si lo hacéis en otro post, ponedme el link aquí.

Un saludo!

En respuesta a F Caracuel

Re: Crear nuevo módulo para homologar moodle

de Hector Muñoz -

Hola

Yo estoy a la espera, he revisado la accesibilidad de mi plataforma moodle y parece que no da errores graves, pero con el tema de WSDL estoy muy verde, lo único que he hecho es instalarme el programa SOAPUI-5.0.0, hay e cargado el fichero WSDL pero no se como probarlo bien, ni como usarlo. Muchas gracias de antemano.

Un saludo

Hector

En respuesta a Hector Muñoz

Re: Crear nuevo módulo para homologar moodle

de Manuel García García -

Hola Hector! Pues yo me he instalado el SOAPUI y estoy igual que tu. No sé ni como empezar. Tengo habilitado los web services para poder acceder desde el móvil. No sé si tengo que agregar unos web services personalizados o funciones.. Ando muy perdido y lo único que encuentro son empresas que venden el modulo. Si has conseguido algún avance te estaría muy agradecido.



En respuesta a F Caracuel

Re: Crear nuevo módulo para homologar moodle

de Silvia Fernández -

Lo ideal sería exponer un ejemplo de alguna de las partes que has realizado, para que cada uno pueda ir identificando dónde están sus errores...

Muchas gracias!

En respuesta a F Caracuel

Re: Crear nuevo módulo para homologar moodle

de Javier Del Olmo -

Hola a todos , yo también ando liado con el servicio web que ha puesto el sepe y ahora mismo me devuelve :

Captura

No me sale los atributos ent y sal y no codifica bien los acentos. ¿Alguno le ha pasado y ha solucionado el problema?

Saludos y gracias 

En respuesta a F Caracuel

Re: Crear nuevo módulo para homologar moodle

de F Caracuel -

Primeros pasos para la creación del Servidor SOAP para el SEPE


Voy a poner aquí cómo empezar. Tanto el servidor como el cliente de prueba están en php. Para que sea más fácil, comencemos con la función obtenerDatosCentro().


Siento ser tan "breve" en la explicación, no puedo dar muchos más datos.


Lo primero es crear la tabla en la base de datos para guardar la información del centro:


Nombre de la base de datos: SEPE

Nombre de la tabla: SEPE_CENTRO


create database IF NOT EXISTS `SEPE` CHARACTER SET utf8 COLLATE utf8_general_ci;

use SEPE;

create table IF NOT EXISTS `SEPE_CENTRO` (id int(11) primary key auto_increment,
`ORIGEN_CENTRO` char(2) not null,
`CODIGO_CENTRO` char(10) not null,
`NOMBRE_CENTRO` varchar(40) not null,
`URL_PLATAFORMA` text not null,
`URL_SEGUIMIENTO` text not null,
`TELEFONO` varchar(15) not null,
`EMAIL` varchar(250) not null) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


Mientras que se crea la función crearCentro(), meted los datos a mano a través de mySql.


Veamos ahora la distribución de los archivos.  En la raíz de nuestro proyecto tendremos un archivo "server.php", un archivo "config.php", una carpeta "include" y otra carpeta "wsdl":

  • server.php
  • config.php
  • include
  • wsdl


  • config.php: solo tiene una constante que es la ruta del archivo .wsdl.
<?php
define ('URL_WSDL', 'http://localhost/*****/ProveedorCentroTFWS.wsdl');
?>


Dentro de la carpeta include tendremos un archivo "config.php", un archivo "dbConnect.php" y un archivo "dbHandler.php":

  • include/config.php tendrá las constantes para conectar a la base de datos
<?php

/**
* Database configuration
*/
define('DB_USERNAME', '****');
define('DB_PASSWORD', '****');
define('DB_HOST', 'localhost');
define('DB_NAME', 'SEPE');

?>


  • include/dbConnect.php es una clase que usaremos en dbHandler.php.
<?php

class DbConnect {

private $conn;

function __construct() {

}

/**
* Establishing database connection
* @return database connection handler
*/
function connect() {

i?> nclude_once dirname(__FILE__) . '/config.php';

// Connecting to mysql database
$this->conn = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);

// misqli commit is required to do the transaction
$this->conn->autocommit(FALSE);

// Check for database connection error
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// returing connection resource
return $this->conn;

}

}

?>



  • include/dbHandler.php . En esta clase será donde estará el CRUD (todas las consultas, inserciones, actualizaciones y borrados de la base de datos). Se conectará con la base de datos, se procesará la información y se devolverá un array con un resultado, que se recogerá en server.php.
<?php

class DbHandler {

private $conn;

function __construct() {
require_once dirname(__FILE__) . '/dbConnect.php';
// opening db connection
$db = new DbConnect();
$this->conn = $db->connect();
}

/**
*
* ********************** Métodos de la tabla CENTRO ********************* *
*
*/

/**
* Según la tabla del punto 9 de la página 4 del "Modelo de datos de seguimiento Teleformación 20140328.pdf",
* si es correcto, "CODIGO_RETORNO" debe ser 0 y "ETIQUETA_ERROR" debe ser "Correcto".
*
* @return array con los datos.
*
*/
public function obtenerDatosCentro() {

//Se consulta a la tabla CENTRO y solo recogerá la primera tupla,
//ya que no debemos tener más centros en nuestra tabla
$stmt = $this->conn->prepare("SELECT * FROM SEPE_CENTRO LIMIT 1");

if ($stmt->execute()) {

$res = array();

$stmt->bind_result($id, $origenCentro, $codigoCentro, $nombreCentro, $urlPlataforma, $urlSeguimiento, $telefono, $email);
$stmt->fetch();

$res["ORIGEN_CENTRO"] = $origenCentro;
$res["CODIGO_CENTRO"] = $codigoCentro;
$res["NOMBRE_CENTRO"] = $nombreCentro;
$res["URL_PLATAFORMA"] = $urlPlataforma;
$res["URL_SEGUIMIENTO"] = $urlSeguimiento;
$res["TELEFONO"] = $telefono;
$res["EMAIL"] = $email;

$stmt->close();

return $res;
} else {
return null;
}
}
}

?>



  • En la carpeta wsdl tendremos el archivo "ProveedorCentroTFWS.wsdl", que se ha sacado de los archivos que nos da el SEPE. Sobre él nos basamos para crear todo el servidor y en caso de que algún dato no sea del tipo que se requiere en él, automáticamente devolverá un error y sabremos que algo está mal.

Solo hay que modificar una línea, está justo al final y en ella incluye la ruta hacia donde está el archivo principal del servidor:

<soap:address location="http://localhost/******/server.php"/>


  • server.php . Es el archivo principal y en el están los métodos que requiere el archivo .wsdl. Se creará un objeto SoapServer que lo encontramos ya por defecto en php. Es importante, al final del todo, declarar los métodos que usaremos con la comunicación  con el cliente (está en negrita), si no, no funcionarán.

Hay que tener en cuenta que he tenido que quitar muchas funciones sobre todo respecto al tema de la validación y de devolver el código de error correspondiente. Si os fijáis "CODIGO_RETORNO" y "ETIQUETA_ERROR" tiene literales como valor. Una vez que os funcione habría que comprobar si existe algún centro en la base de datos, si los datos que devuelve la base de datos son correctos, etc. Dependiendo de todo eso se devolverá un error u otro, de momento, mejor es probar así.

<?php

//Se importa el archivo con las constantes
require_once 'config.php';
require_once 'include/dbHandler.php';

//Se carga la librería soap
if (!extension_loaded("soap")) {
dl("php_soap.dll");
}

//Deshabilita que se guarde en caché la info del wsdl
ini_set("soap.wsdl_cache_enabled", "0");

//Se crea un objeto SoapServer poniendo la ruta donde esta el archivo .wsdl
//La ruta se recoge de la constante URL_WSDL
$server = new SoapServer(URL_WSDL, array('encoding' => 'ISO-8859-1'));



/**
* Devuelve los datos del centro
*
* @return array
*/
function obtenerDatosCentro() {

//Se crea un objeto de la clase DbHandler, donde hay métodos auxiliares que
//trabajan con la BD
$dbHandler = new DbHandler();

$res=$dbHandler->obtenerDatosCentro();

//Se devuelve el array con el codigo y etiqueta correspondientes y además,
//los datos serán los mismos que le llegan, pueden estar correctos o vacíos
//pero es el codigo_error el encargado de avisar
return array('RESPUESTA_DATOS_CENTRO' => array(
'CODIGO_RETORNO' => 0,
'ETIQUETA_ERROR' => "Correcto", 'DATOS_IDENTIFICATIVOS' => array(
'ID_CENTRO' => array('ORIGEN_CENTRO' => $res['ORIGEN_CENTRO'], 'CODIGO_CENTRO' => $res['CODIGO_CENTRO']),
'NOMBRE_CENTRO' => $res['NOMBRE_CENTRO'],
'URL_PLATAFORMA' => $res['URL_PLATAFORMA'],
'URL_SEGUIMIENTO' => $res['URL_SEGUIMIENTO'],
'TELEFONO' => $res['TELEFONO'],
'EMAIL' => $res['EMAIL']))

}


$server->AddFunction("obtenerDatosCentro");
$server->handle();

?>



Y para ver el resultado, es necesario el cliente. Lo podéis poner donde queráis, yo lo tengo en la misma carpeta que server.php.

Es muy sencillo, se crea un cliente en el que se le indica donde está la ruta del archivo .wsdl. Como lo he metido en la carpeta que server.php, aprovecho la constante para indicarlo.


El método obtiene un array con el resultado, para verlo, solo hay que hacer var_dump() a ese array.


<?php

require_once 'config.php';

try {

$clientSOAP = new SoapClient(URL_WSDL);

$result = $clientSOAP->obtenerDatosCentro();

var_dump($result);

} catch (SoapFault $e) {
var_dump($e);
}

?>


Y con esto ya deberíais tener para comenzar quien no sepa. Esto es solo un 5% del servidor, si llega. Hay que ir poco a poco y comprendiendo como funciona. También hay que tener en cuenta que no está la autenticación (en mi caso es lo único que me falta).


Espero que esté medianamente claro y cualquier duda intentaré resolverla.


Para probarlo tenéis que ejecutar el archivo client.php y eso devolverá "algo". ¿Cómo sabréis que todo está correcto? Debéis obtener un mensaje así en el navegador (obviamente sin ***):

object(stdClass)#2 (1) {
  ["RESPUESTA_DATOS_CENTRO"]=>
  object(stdClass)#3 (3) {
    ["CODIGO_RETORNO"]=>
    int(0)
    ["ETIQUETA_ERROR"]=>
    string(8) "Correcto"
    ["DATOS_IDENTIFICATIVOS"]=>
    object(stdClass)#4 (6) {
      ["ID_CENTRO"]=>
      object(stdClass)#5 (2) {
        ["ORIGEN_CENTRO"]=>
        string(2) "20"
        ["CODIGO_CENTRO"]=>
        string(10) "8055555555"
      }
      ["NOMBRE_CENTRO"]=>
      string(15) "************"
      ["URL_PLATAFORMA"]=>
      string(29) "http://www.*********.com"
      ["URL_SEGUIMIENTO"]=>
      string(48) "http://localhost/**********/server.php"
      ["TELEFONO"]=>
      string(9) "902******"
      ["EMAIL"]=>
      string(23) "info@***********.com"
    }
  }
}


Un saludo!

En respuesta a F Caracuel

Re: Crear nuevo módulo para homologar moodle

de prosem web -

Muchas gracias por toda la información! Tanto éste como otros hilos son muy útiles.

Estamos también mirando los pasos a seguir para adaptar la plataforma de formación a las normas del SEPE.

Parece que las tres tareas principales son las de accesibilidad, crear los nuevos informes de seguimiento y el tema SOAP. ¿Algún consejo?

Nuestra plataforma está basada en un moodle 2.1, ¿Creéis que es posible adaptarlo todo a esa versión o es mejor empezar de cero e instalar la última versión de moodle? En teoría se puede actualizar pero suele ser un proceso más laborios muchas veces que instalar desde cero.

Espero que entre todos podamos sacar esto adelante!

En respuesta a prosem web

Re: Crear nuevo módulo para homologar moodle

de Silvia Fernández -

Buenas tardes Prosem,

la verdad es que es mejor tener las plataformas actualizadas, para contar con las nuevas funcionalidades que ofrecen. Por lo que puede ser un buen momento para que actualicéis la versión, ya que la 2.1 es un poco obsoleta...

El proceso de actualización es fácil y sencillo (siempre tienes que mirar las especificaciones por si puedes saltar entre versiones, y debes contar con una copia de seguridad por si algo sale mal...) sobre todo si no has realizado modificaciones sobre tus bloques y módulos. Este proceso conlleva que sigues teniendo tus cursos en la misma plataforma.

Un saludo

En respuesta a F Caracuel

Re: Crear nuevo módulo para homologar moodle

de Javier Del Olmo -

He conseguido arreglar lo de los caracteres  y basandome en el tutorial que has puesto me sale  esto:

Lo paso en el corrector y me sigue dando error.Algunas cabeceras como estas no me aperecen

 <xsd:import namespace="http://salida.bean.domain.common.proveedorcentro.meyss.spee.es"/><xsd:import namespace="http://entsal.bean.domain.common.proveedorcentro.meyss.spee.es"/> ¿Alguien le valida el ObtenerCentro?  

En respuesta a Javier Del Olmo

Re: Crear nuevo módulo para homologar moodle

de Silvia Fernández -

Buenas tardes Javier,

para añadir las "cabeceras" debes añadirlas a los namespaces (lo que depende de cómo estés realizando el desarrollo...).

Ten en cuenta que támbien puede fallar por la codificación (debe ser UTF8). Para asegurarte, haz una prueba sin acentos.

Además, la etiqueta <RESPUESTA_DATOS_DENTRO> debe ser algo como <sal:RESPUESTA_DATOS_DENTRO>.

Un saludo


En respuesta a Silvia Fernández

Re: Crear nuevo módulo para homologar moodle

de Javier Del Olmo -

Hola Silvia, yo estoy haciendo el código mediante php.Los caracteres en principio no me da fallo,para añadir los namespace ¿hay que usar alguna función en particular?

Un saludo y gracias

En respuesta a Javier Del Olmo

Re: Crear nuevo módulo para homologar moodle

de Silvia Fernández -

Hola Javier,
siento no poder ayudarte más, ya que yo he utilizado nusoap para el desarrollo,
Un saludo

En respuesta a Silvia Fernández

Re: Crear nuevo módulo para homologar moodle

de Javier Del Olmo -

La libreria nusoap ¿es de php no? Estoy viendo como hacer lo de los namespaces de forma nativa pero no veo forma  y si me puedes decir la manera en nusoap igual cambio ya que eso en principio no me afecta a la parte de datos.

Un saludo y Gracias

En respuesta a Javier Del Olmo

Re: Crear nuevo módulo para homologar moodle

de Rodrigo Rodríguez -
En respuesta a F Caracuel

Re: Crear nuevo módulo para homologar moodle

de Sergiu Popa -

Buenas,

Utilizando el fichero WSDL proporcionado en la web de SEPE, a mi me sale un error al crear el servidor (new SoapServer()):

<SOAP-ENV:Envelope>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>WSDL</faultcode>
<faultstring>SOAP-ERROR: Parsing WSDL: Unknown required WSDL extension 'http://schemas.xmlsoap.org/ws/2004/09/policy'</faultstring>;
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

¿Qué fichero WSDL utilizas?

Edit: en SoapUI 5.0.0 he logrado importar el fichero, aunque no soy capaz de hacer el servidor en PHP.

Un saludo

En respuesta a Sergiu Popa

Re: Crear nuevo módulo para homologar moodle

de Jose Antonio Ucles Gamiz -

Si no has implementando la seguridad para el servicio debes de modificar la linea

<wsp:PolicyReference URI="#UsernameTokenPolicy" wsdl:required="true"/>

por 

<wsp:PolicyReference URI="#UsernameTokenPolicy" wsdl:required="false"/>

 

Con eso debe de solucionarse temporalmente.

En respuesta a Jose Antonio Ucles Gamiz

Re: Crear nuevo módulo para homologar moodle

de José Antonio Castillo -

Buenas aqui estamos sufriendo tambien con el servicio. Al final optamos por realizarlo con php usando la libreria SOAp  que trae por defecto. Despues de muchas pruebas, conseguimos que la mayoria de las funciones realicen su cometido.
Pero el gran problema esta al lanzar el autovalidador del sepe.
Conseguimos un 'KO' en casi todo, pero internamente comprobamos que se realizan todas las modificaciones en base de datos  segun el sitema de log que hemos añadido.
Entonces mi consulta es por si sabriais decirnos que nos puede estar pasando.  Las diferencias principales que  vemos son referentes a los namespace, no estamos seguros si deben ser obligatorios y por ello obtener un error.

Ademas no hemos visto si estuviesen especificados por algun sitio, para generarlos.
 
Error que nos aparece en el test
org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpecte
d subelement RESPUESTA_DATOS_CENTRO
...
obtenerDatosCentro     -     datos identificativos correctos     -      KO


Nuestra respuesta que no valida
<SOAP-ENV:Envelope
   <SOAP-ENV:Body>
      <ns1:obtenerDatosCentroResponse>
         <RESPUESTA_DATOS_CENTRO>

Respuesta que propone el SEPE
<soapenv:Envelope
   <soapenv:Header/>
   <soapenv:Body>
      <p867:obtenerDatosCentroResponse
         <p148:RESPUESTA_DATOS_CENTRO

Usando el SoapUI, vemos que obtenemos practicamente el mismo esquema esperado pero con los nombres de namespace diferentes o faltando.
Pero todo nos da error KO. Aunque devolvamos la opcion de codigo de error, a cero que en principio es lo que espera en casi todas las pruebas.

Estamos un poco apurados de tiempo. Agradeceria cualquier nocion sobre lo que nos falta para hacer que todo sea aceptado.  Seguimos manteniendo la opcion en el WSDL a false en el UsernameTokenpolicy.  Por si esto tambien afectase.
 
Por otro lado nosotros hemos planteado realizar una aplicacion aparte para la gestion manual de los cursos.
Y una aplicacion que periodicamente realice el proceso de paso de datos de moodle a la base de datos externa. La a actualizacion se automatizaria para que se realice una o dos veces al dia.

 Saludos y Gracias de antemanos

En respuesta a José Antonio Castillo

Re: Crear nuevo módulo para homologar moodle

de Raquel Flor -

Hola José Antonio Castillo:

Pudiste arreglar este error me encuentro con el mismo problema. Si lo solucionaste, podrías ayudarme estoy atascada en este punto y no consigo avanzar. Gracias.

En respuesta a jose luis garcia

Re: Crear nuevo módulo para homologar moodle

de I. S. -

Buenas.

Yo tengo implementado ya el servicio web pero me falta la comunicación con Moodle. He creado una BBDD externa dedicada solo para el SEPE y para que pase el kit de autoevaluación. 

Mi duda, por tanto, es cómo unir la lógica del SEPE con la de Moodle. Cuando SEPE llama a la acción crearAccionFormativa se crea el curso en Moodle? Se vincula? Qué sucede?

Si alguien puede arrojar un poco de luz sobre el asunto se agradecería sonrisa

Un saludo.

En respuesta a I. S.

Re: Crear nuevo módulo para homologar moodle

de No name -

Hola Isabel,

Pues si ya tienes hecho el servicio del SEPE, tienes una parte importante. Estaría genial si pudieras compartirlo con la comuinidad, con nosotros, y así entre todos seguro que podemos aportarte algo.

Sobre tu pregunta, decirte que depende de muchas cosas y que digamos que es una decisión de diseño. Realmente al SEPE le da igual cómo lo gestiones de puertas para adentro, así que puedes montarlo como quieras.

Quizá sea más sencillo que tanto para los cursos como para las matriculaciones no crees los usuarios en Moodle, sino que asocies los registros existentes en Moodle con tu base de datos propia.

Pero, como te digo, yo creo que los dos enfoques son posibles.

Si hay alguien que lo tenga más avanzado y quiera dejar su opinión/experiencia...

Un saludo!

En respuesta a No name

Re: Crear nuevo módulo para homologar moodle

de I. S. -

Hola Emilio! Gracias por contestar sonrisa

Pues mira, para empezar con todo cogí el WSDL del SEPE y me cree los servicios web en Java con el wdsl2java. Eso te crea una serie de clases que luego ya tienes tu que implementar pero al menos te monta todo lo que hay alrededor. Para probar las 6 operaciones me baje el programa SoapUI y está genial, además te permite poner la cabecera de autentificación para probar que efectivamente si accedes con el usuario SEPE y con contraseña errónea da error. El desarrollo de los servicios web está hecho en Java con Axis2 y lo tengo corriendo con un Tomcat 6.

Luego me creé una base de datos replicando el modelo de datos del SEPE pero más simplificado, es decir, si el centro tiene código y origen no tengo una tabla para el código y el origen sino que en la misma tabla tengo centro_codigo y centro_origen. Pero claro, de esta base de datos luego habrá cosas que sean de Moodle y que cuando las pida el SEPE o bien de las paso de Moodle directamente o Moodle se las pasa a estas tablas y el SEPE lo adquiere todo de aqui, no sé como haré la verdad...

Como tuve problemas a la hora de pasar los test de autoevaluación del SEPE (porque según mi lógica devolvían cosas correctas pero el test me daba KO) descompilé su .jar y ahí se puede ver todo el código fuente y lo que realmente ellos esperan que tus servicios web devuelvan. Especialmente me acuerdo que cuando la contraseña estaba mal yo devolvía un -2 y lo que ellos esperaban era un -1 y eso lo vi destripando el código.

A ver si alguien que lo tenga ya enganchado con Moodle nos puede dar alguna idea de como unir ambos modelos de datos porque estoy muy perdida en esa parte y es lo que me falta para tenerlo todo o eso creo sonrisa

Saludos!!

 

En respuesta a I. S.

Re: Crear nuevo módulo para homologar moodle

de Antonio V -

Buenos días a todos!

Otro que está sufriendo esto del Sepe!.

A los que hayais obtenido OK en obtenerAccion:

¿Es necesario devolver todos los campos de una Acción Formativa con algún valor? Es decir, no puede haber ningún campo vacío?

Es que creo que me lo devuelve bien, pero me sale todos KO en obtenerAccion.

Gracias.

Un saludo.

En respuesta a Antonio V

Re: Crear nuevo módulo para homologar moodle

de Antonio V -

Me sale lo siguiente:


C:\sepe>set WEB_SERVICE=http://localhost/sepe/productlist.php

C:\sepe>set PASSWORD=12abcd#24

C:\sepe>set XML_PATH=c:\sepe\prueba.xml

C:\sepe>java -Djavax.net.ssl.trustStoreType= -Djavax.net.ssl.trustStore= -Djavax.net.ssl.trustStorePassword= -jar ProvCentTFVal.jar http://localhost/sepe/productlist.php 12abcd#24 c:\sepe\prueba.xml
-----------------------------------------------
Iniciando programa de ProveedorCentroTFValidador...
obtenerDatosCentro     -     password incorrecto 'EPESSEPECESEPE'     -     OK
org.apache.axis2.AxisFault: First Element must contain the local name, Envelope , but found br
    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
    at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:123)
    at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:67)
    at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:354)
    at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)
    at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
    at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.obtenerDatosCentro(ProveedorCentroTFWSStub.java:255)
    at es.spee.meyss.proveedorcentro.cliente.business.services.impl.ProveedorCentroSvcImpl.validarObtenerDatosCentro(ProveedorCentroSvcImpl.java:193)
    at es.spee.meyss.proveedorcentro.cliente.business.services.impl.ProveedorCentroSvcImpl.validarObtenerDatosCentro(ProveedorCentroSvcImpl.java:170)
    at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.validarObtenerDatosCentro(ProveedorCentroTFValidador.java:159)
    at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.main(ProveedorCentroTFValidador.java:49)
Caused by: org.apache.axiom.soap.SOAPProcessingException: First Element must contain the local name, Envelope , but found br
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.constructNode(StAXSOAPModelBuilder.java:299)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createOMElement(StAXSOAPModelBuilder.java:246)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createNextOMElement(StAXSOAPModelBuilder.java:228)
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:249)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.getSOAPEnvelope(StAXSOAPModelBuilder.java:198)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.<init>(StAXSOAPModelBuilder.java:154)
    at org.apache.axiom.om.impl.llom.factory.AbstractOMMetaFactory.internalCreateStAXSOAPModelBuilder(AbstractOMMetaFactory.java:119)
    at org.apache.axiom.om.impl.llom.factory.AbstractOMMetaFactory.createSOAPModelBuilder(AbstractOMMetaFactory.java:129)
    at org.apache.axiom.om.OMXMLBuilderFactory.createSOAPModelBuilder(OMXMLBuilderFactory.java:426)
    at org.apache.axiom.om.OMXMLBuilderFactory.createSOAPModelBuilder(OMXMLBuilderFactory.java:405)
    at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:55)
    at org.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:179)
    at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:145)
    at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:108)
    ... 10 more
obtenerDatosCentro     -     datos identificativos correctos     -      KO
crearCentro     -     ORIGEN_CENTRO='20' y CODIGO_CENTRO='9999999999'    -     OK
obtenerDatosCentro     -     referencia con '20' y '9999999999'    -     OK
obtenerListaAcciones     -     vacía     -     OK
crearAccion     -     ORIGEN_ACCION=20 CODIGO_ACCION=2014280010     -     OK
crearAccion     -     ORIGEN_ACCION=20 CODIGO_ACCION=2014280012     -     OK
crearAccion     -     ORIGEN_ACCION=20 CODIGO_ACCION=2014280013     -     OK
crearAccion     -     ORIGEN_ACCION=20 CODIGO_ACCION=2014280014     -     OK
crearAccion     -     ORIGEN_ACCION=20 CODIGO_ACCION=2014280011     -     OK
obtenerListaAcciones     -     coincide     -     OK
crearAccion     -     ya creada     -     OK
org.apache.axis2.AxisFault
    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.fromOM(ProveedorCentroTFWSStub.java:2575)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.obtenerAccion(ProveedorCentroTFWSStub.java:896)
    at es.spee.meyss.proveedorcentro.cliente.business.services.impl.ProveedorCentroSvcImpl.validarObtenerAccion(ProveedorCentroSvcImpl.java:381)
    at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.validarObtenerAccionesCoincidentes(ProveedorCentroTFValidador.java:93)
    at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.main(ProveedorCentroTFValidador.java:69)
Caused by: java.lang.RuntimeException
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ID_CONTRATO_CFA_type3.setID_CONTRATO_CFA_type2(ID_CONTRATO_CFA_type3.java:48)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ID_CONTRATO_CFA_type3$Factory.parse(ID_CONTRATO_CFA_type3.java:422)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.CONTRATO_FORMACION_type1$Factory.parse(CONTRATO_FORMACION_type1.java:604)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.PARTICIPANTE_type1$Factory.parse(PARTICIPANTE_type1.java:591)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.PARTICIPANTES_type1$Factory.parse(PARTICIPANTES_type1.java:492)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ACCION_FORMATIVA_type0$Factory.parse(ACCION_FORMATIVA_type0.java:1164)
    at es.spee.meyss.proveedorcentro.common.domain.bean.salida.RESPUESTA_OBT_ACCION_type0$Factory.parse(RESPUESTA_OBT_ACCION_type0.java:569)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ObtenerAccionResponse$Factory.parse(ObtenerAccionResponse.java:418)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.fromOM(ProveedorCentroTFWSStub.java:2521)
    ... 4 more
org.apache.axis2.AxisFault
    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.fromOM(ProveedorCentroTFWSStub.java:2575)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.obtenerAccion(ProveedorCentroTFWSStub.java:896)
    at es.spee.meyss.proveedorcentro.cliente.business.services.impl.ProveedorCentroSvcImpl.validarObtenerAccion(ProveedorCentroSvcImpl.java:381)
    at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.validarObtenerAccionesCoincidentes(ProveedorCentroTFValidador.java:93)
    at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.main(ProveedorCentroTFValidador.java:69)
Caused by: java.lang.RuntimeException
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ORIGEN_CENTRO_type11.setORIGEN_CENTRO_type10(ORIGEN_CENTRO_type11.java:48)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ORIGEN_CENTRO_type11$Factory.parse(ORIGEN_CENTRO_type11.java:422)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.CENTRO_PRESENCIAL_type1$Factory.parse(CENTRO_PRESENCIAL_type1.java:456)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.CENTROS_SESIONES_PRESENCIALES_type1$Factory.parse(CENTROS_SESIONES_PRESENCIALES_type1.java:494)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ESPECIALIDAD_type2$Factory.parse(ESPECIALIDAD_type2.java:894)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ESPECIALIDADES_ACCION_type1$Factory.parse(ESPECIALIDADES_ACCION_type1.java:493)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ACCION_FORMATIVA_type0$Factory.parse(ACCION_FORMATIVA_type0.java:1143)
    at es.spee.meyss.proveedorcentro.common.domain.bean.salida.RESPUESTA_OBT_ACCION_type0$Factory.parse(RESPUESTA_OBT_ACCION_type0.java:569)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ObtenerAccionResponse$Factory.parse(ObtenerAccionResponse.java:418)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.fromOM(ProveedorCentroTFWSStub.java:2521)
    ... 4 more
org.apache.axis2.AxisFault
    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.fromOM(ProveedorCentroTFWSStub.java:2575)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.obtenerAccion(ProveedorCentroTFWSStub.java:896)
    at es.spee.meyss.proveedorcentro.cliente.business.services.impl.ProveedorCentroSvcImpl.validarObtenerAccion(ProveedorCentroSvcImpl.java:381)
    at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.validarObtenerAccionesCoincidentes(ProveedorCentroTFValidador.java:93)
    at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.main(ProveedorCentroTFValidador.java:69)
Caused by: java.lang.RuntimeException
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ORIGEN_CENTRO_type11.setORIGEN_CENTRO_type10(ORIGEN_CENTRO_type11.java:48)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ORIGEN_CENTRO_type11$Factory.parse(ORIGEN_CENTRO_type11.java:422)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.CENTRO_PRESENCIAL_type1$Factory.parse(CENTRO_PRESENCIAL_type1.java:456)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.CENTROS_SESIONES_PRESENCIALES_type1$Factory.parse(CENTROS_SESIONES_PRESENCIALES_type1.java:494)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ESPECIALIDAD_type2$Factory.parse(ESPECIALIDAD_type2.java:894)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ESPECIALIDADES_ACCION_type1$Factory.parse(ESPECIALIDADES_ACCION_type1.java:493)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ACCION_FORMATIVA_type0$Factory.parse(ACCION_FORMATIVA_type0.java:1143)
    at es.spee.meyss.proveedorcentro.common.domain.bean.salida.RESPUESTA_OBT_ACCION_type0$Factory.parse(RESPUESTA_OBT_ACCION_type0.java:569)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ObtenerAccionResponse$Factory.parse(ObtenerAccionResponse.java:418)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.fromOM(ProveedorCentroTFWSStub.java:2521)
    ... 4 more
org.apache.axis2.AxisFault
    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.fromOM(ProveedorCentroTFWSStub.java:2575)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.obtenerAccion(ProveedorCentroTFWSStub.java:896)
    at es.spee.meyss.proveedorcentro.cliente.business.services.impl.ProveedorCentroSvcImpl.validarObtenerAccion(ProveedorCentroSvcImpl.java:381)
    at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.validarObtenerAccionesCoincidentes(ProveedorCentroTFValidador.java:93)
    at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.main(ProveedorCentroTFValidador.java:69)
Caused by: java.lang.RuntimeException
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ORIGEN_CENTRO_type11.setORIGEN_CENTRO_type10(ORIGEN_CENTRO_type11.java:48)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ORIGEN_CENTRO_type11$Factory.parse(ORIGEN_CENTRO_type11.java:422)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.CENTRO_PRESENCIAL_type1$Factory.parse(CENTRO_PRESENCIAL_type1.java:456)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.CENTROS_SESIONES_PRESENCIALES_type1$Factory.parse(CENTROS_SESIONES_PRESENCIALES_type1.java:494)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ESPECIALIDAD_type2$Factory.parse(ESPECIALIDAD_type2.java:894)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ESPECIALIDADES_ACCION_type1$Factory.parse(ESPECIALIDADES_ACCION_type1.java:493)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ACCION_FORMATIVA_type0$Factory.parse(ACCION_FORMATIVA_type0.java:1143)
    at es.spee.meyss.proveedorcentro.common.domain.bean.salida.RESPUESTA_OBT_ACCION_type0$Factory.parse(RESPUESTA_OBT_ACCION_type0.java:569)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ObtenerAccionResponse$Factory.parse(ObtenerAccionResponse.java:418)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.fromOM(ProveedorCentroTFWSStub.java:2521)
    ... 4 more
org.apache.axis2.AxisFault
    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.fromOM(ProveedorCentroTFWSStub.java:2575)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.obtenerAccion(ProveedorCentroTFWSStub.java:896)
    at es.spee.meyss.proveedorcentro.cliente.business.services.impl.ProveedorCentroSvcImpl.validarObtenerAccion(ProveedorCentroSvcImpl.java:381)
    at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.validarObtenerAccionesCoincidentes(ProveedorCentroTFValidador.java:93)
    at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.main(ProveedorCentroTFValidador.java:69)
Caused by: java.lang.RuntimeException
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ORIGEN_CENTRO_type11.setORIGEN_CENTRO_type10(ORIGEN_CENTRO_type11.java:48)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ORIGEN_CENTRO_type11$Factory.parse(ORIGEN_CENTRO_type11.java:422)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.CENTRO_PRESENCIAL_type1$Factory.parse(CENTRO_PRESENCIAL_type1.java:456)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.CENTROS_SESIONES_PRESENCIALES_type1$Factory.parse(CENTROS_SESIONES_PRESENCIALES_type1.java:494)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ESPECIALIDAD_type2$Factory.parse(ESPECIALIDAD_type2.java:894)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ESPECIALIDADES_ACCION_type1$Factory.parse(ESPECIALIDADES_ACCION_type1.java:493)
    at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ACCION_FORMATIVA_type0$Factory.parse(ACCION_FORMATIVA_type0.java:1143)
    at es.spee.meyss.proveedorcentro.common.domain.bean.salida.RESPUESTA_OBT_ACCION_type0$Factory.parse(RESPUESTA_OBT_ACCION_type0.java:569)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ObtenerAccionResponse$Factory.parse(ObtenerAccionResponse.java:418)
    at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.fromOM(ProveedorCentroTFWSStub.java:2521)
    ... 4 more
obtenerAccion     -     ORIGEN_ACCION=20 CODIGO_ACCION=2014280010     -      KO
obtenerAccion     -     ORIGEN_ACCION=20 CODIGO_ACCION=2014280012     -      KO
obtenerAccion     -     ORIGEN_ACCION=20 CODIGO_ACCION=2014280013     -      KO
obtenerAccion     -     ORIGEN_ACCION=20 CODIGO_ACCION=2014280014     -      KO
obtenerAccion     -     ORIGEN_ACCION=20 CODIGO_ACCION=2014280011     -      KO
eliminarAccion     -     ORIGEN_ACCION=20 CODIGO_ACCION=2014280010     -     OK
eliminarAccion     -     ORIGEN_ACCION=20 CODIGO_ACCION=2014280012     -     OK
eliminarAccion     -     ORIGEN_ACCION=20 CODIGO_ACCION=2014280013     -     OK
eliminarAccion     -     ORIGEN_ACCION=20 CODIGO_ACCION=2014280014     -     OK
eliminarAccion     -     ORIGEN_ACCION=20 CODIGO_ACCION=2014280011     -     OK
Finalización programa de ProveedorCentroTFValidador...

Alguien sabe porque me sale KO en obtenerCentro?

Gracias.

Un saludo.

En respuesta a Antonio V

Re: Crear nuevo módulo para homologar moodle

de I. S. -

Hola Antonio.

A mí también me sucede eso la PRIMERA vez que lo ejecuto porque el ejecutable de pruebas está mal. Cómo llaman a obtenerDatosCentro antes de crearCentro??? La segunda vez que lo ejecuta como ya tiene los datos creados ya no me da el error. Yo he puesto que todos los datos tienen que ser obligatorios como deduzco del modelo de datos.

Un saludo.

En respuesta a I. S.

Re: Crear nuevo módulo para homologar moodle

de Sergio Martín -

Buenas tardes.


Yo con la parte de BBDD y Moodle podría ayudar ... lo que me ocurre es que no logro terminar de montarme el SOAP. Desconozco cómo hacerme el CrearDatosCentro y por tanto la primera - como dice Isabel - y sucesivas me sale el mismo error que a Antonio ...


¿Aunamos esfuerzos?

En respuesta a Sergio Martín

Re: Crear nuevo módulo para homologar moodle

de Laura Marcelo -

Hola a todos,

Estoy implementando también las funciones para el Servicio Web de seguimiento del SEPE.

Estoy utilizando la clase soapServer y al pasar el kit de pruebas en obtenerDatosCentro obtengo lo siguiente:

obtenerDatosCentro     -     password incorrecto 'EPESSEPECESEPE'     -     OK

org.apache.axis2.AxisFault: Header not understood

        at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:531)

        at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:375)

        at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)

        at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)

        at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)

        at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.obtenerDatosCentro(ProveedorCentroTFWSStub.java:255)

        at es.spee.meyss.proveedorcentro.cliente.business.services.impl.ProveedorCentroSvcImpl.validarObtenerDatosCentro(ProveedorCentroSvcImpl.java:193)

        at es.spee.meyss.proveedorcentro.cliente.business.services.impl.ProveedorCentroSvcImpl.validarObtenerDatosCentro(ProveedorCentroSvcImpl.java:170)

        at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.validarObtenerDatosCentro(ProveedorCentroTFValidador.java:159)

        at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.main(ProveedorCentroTFValidador.java:49)

obtenerDatosCentro     -     datos identificativos correctos     -      KO

Si hago la llamada desde SoapUi obtengo la siguiente respuesta.


¿Alguna idea de por qué no paso el test? Mil gracias!

En respuesta a Laura Marcelo

Re: Crear nuevo módulo para homologar moodle

de Fernando Navarro Páez -

Hola Laura.

Una pista la puedes encontrar en el primer mensaje de error: "org.apache.axis2.AxisFault: Header not understood"

Salu2

Fernando

En respuesta a Fernando Navarro Páez

Re: Crear nuevo módulo para homologar moodle

de Laura Marcelo -
Muchas gracias por la respuesta Fernando.

He estado mirando por distintas web y foros y no encuentro una explicación clara de cómo resolver este Hearder not understood. 

Si alguien pudiera darme alguna idea sería genial.

Un saludo

En respuesta a Laura Marcelo

Re: Crear nuevo módulo para homologar moodle

de I. S. -

Hola Laura.

Creo que la mayoría hemos pasado por ese problema sonrisa Tienes que cambiar en la cabecera del XML el atributo "mustunderstand" a valor 0, al menos en mi caso lo resolví de esa manera.

Saludos.

En respuesta a I. S.

Re: Crear nuevo módulo para homologar moodle

de Laura Marcelo -
Mil gracias por la ayuda Isabel!!!! Voy a probarlo y os comento los resultados.

 

Saludos


En respuesta a Laura Marcelo

Re: Crear nuevo módulo para homologar moodle

de A. Álvarez -

Hola a todos,

alguien sabría decirme si es obligatorio mantener:

<wsp:PolicyReference URI="#UsernameTokenPolicy" wsdl:required="true"/>

o puede estar como false.

Gracias!!!


En respuesta a Laura Marcelo

Re: Crear nuevo módulo para homologar moodle

de Programacio Fundació Pere Tarres -

Hola Laura,


¿Conseguiste que te funcionara el kit de pruebas?, nosotros tenemos el mismo problema, hemos desarrollado un WCF en C# 4.5.1 y no conseguimos una respuesta OK.


Muchas gracias

En respuesta a Programacio Fundació Pere Tarres

Re: Crear nuevo módulo para homologar moodle

de Laura Marcelo -

Hola,

Yo no logré el OK tampoco. Sigo teniendo el error que comentaba en posts anteriores. 

 Isabel tengo una duda con respecto al atributo mustunderstand, entiendo que este parámetro se añadiría en la cabecera del cliente SOAP. ¿A qué xml te refieres?

Veo que el proyecto de SOAPUI que viene como ejemplo en el kit de pruebas tienen valor 0 para cada una de las llamadas, pero en el archivo de pruebas del centro pruebaDatosDelCentro_20140619.xml no veo cómo añadir este atributo.


Muchas gracias por tu ayuda y saludos!

En respuesta a Laura Marcelo

Re: Crear nuevo módulo para homologar moodle

de hernani moodle -

Buenos días,


Laura, nosotros estamos igual que tú, a ver si alguien puede ayudarnos...

Por otro lado, estamos con la función de crearCentro y no sé si he entendido bien lo que tiene que hacer: recoger los datos del archivo PruebasDatosCentro.xml y meterlos en en una base de datos (externa o de moodle) , verdad??

Insertarlos en la BBDD vale pero... alguien podría explicarme cómo se recogen estos datos?


Gracias por vuestra ayuda! 

En respuesta a hernani moodle

Re: Crear nuevo módulo para homologar moodle

de Josué Torres Gutiérrez -

Buenos días nuestra empresa estaba tramitando lo de la homologación para el sepe, contamos con la plataforma moodle y quería a ver si me podrían guiar a ver por donde empezar a adaptar la plataforma.

Muchas gracias de antemano

En respuesta a I. S.

Re: Crear nuevo módulo para homologar moodle

de María sss -

Hola!

me sale el mismo error pero no se en qué XML debo cambiar lo de mustunderstand. En el pruebaDatosDelCentro_20140619.xml del KIT no lo encuentro.


Muchas gracias. Soy muy novatilla en esto de Moodle y webservices.


Un saludo.

En respuesta a Antonio V

Re: Crear nuevo módulo para homologar moodle

de Cristian Blanquer -

Hola, yo estoy en obtenerAccion y sigo peleandome por el KO...

Se supone que la salida que ellos esperan de obtenerAccion es la siguiente:

   <soapenv:Body>

      <p867:obtenerAccionResponse xmlns:p867="http://impl.ws.application.proveedorcentro.meyss.spee.es">

         <p148:RESPUESTA_OBT_ACCION xmlns:p465="http://entsal.bean.domain.common.proveedorcentro.meyss.spee.es" xmlns:p148="http://salida.bean.domain.common.proveedorcentro.meyss.spee.es">

            <CODIGO_RETORNO>1</CODIGO_RETORNO>

            <ETIQUETA_ERROR xsi:nil="true"/>

            <p465:ACCION_FORMATIVA xsi:nil="true"/>

         </p148:RESPUESTA_OBT_ACCION>

      </p867:obtenerAccionResponse>

   </soapenv:Body>

La que obtengo yo es la siguiente:

   <SOAP-ENV:Body>

      <obtenerAccionResponse xmlns="http://impl.ws.application.proveedorcentro.meyss.spee.es">

         <RESPUESTA_OBT_ACCION xmlns="http://salida.bean.domain.common.proveedorcentro.meyss.spee.es">

            <CODIGO_RETORNO xmlns="">1</CODIGO_RETORNO>

            <ETIQUETA_ERROR xmlns="">Accion inexistente</ETIQUETA_ERROR>

            <ACCION_FORMATIVA xmlns="http://entsal.bean.domain.common.proveedorcentro.meyss.spee.es"/>

         </RESPUESTA_OBT_ACCION>

      </obtenerAccionResponse>

   </SOAP-ENV:Body>

Y me sale el error de Unexpected Element(que desaparece rellenando DE DATOS el array que esperan), el error es el siguiente:

org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement {http://entsal.bean.domain.common.proveedorcentro.meyss.spee.es}ACCION_FOR

MATIVA

        at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)

        at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.fromOM(ProveedorCentroTFWSStub.java:2575)

        at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.obtenerAccion(ProveedorCentroTFWSStub.java:896)

        at es.spee.meyss.proveedorcentro.cliente.business.services.impl.ProveedorCentroSvcImpl.validarObtenerAccion(ProveedorCentroSvcImpl.java:381)

        at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.validarObtenerAccionesCoincidentes(ProveedorCentroTFValidador.java:93)

        at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.main(ProveedorCentroTFValidador.java:69)

Caused by: java.lang.Exception: org.apache.axis2.databinding.ADBException: Unexpected subelement {http://entsal.bean.domain.common.proveedorcentro.meyss.spee.es}ACCION

_FORMATIVA

        at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ACCION_FORMATIVA_type0$Factory.parse(ACCION_FORMATIVA_type0.java:1188)

        at es.spee.meyss.proveedorcentro.common.domain.bean.salida.RESPUESTA_OBT_ACCION_type0$Factory.parse(RESPUESTA_OBT_ACCION_type0.java:563)

        at es.spee.meyss.proveedorcentro.application.ws.impl.ObtenerAccionResponse$Factory.parse(ObtenerAccionResponse.java:418)

        at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWSStub.fromOM(ProveedorCentroTFWSStub.java:2521)

        ... 4 more

Caused by: org.apache.axis2.databinding.ADBException: Unexpected subelement {http://entsal.bean.domain.common.proveedorcentro.meyss.spee.es}ACCION_FORMATIVA

        at es.spee.meyss.proveedorcentro.common.domain.bean.entsal.ACCION_FORMATIVA_type0$Factory.parse(ACCION_FORMATIVA_type0.java:918)

        ... 7 more

¿Alguien que haya pasado por esto me podría ayudar?

Gracias!

En respuesta a jose luis garcia

Re: Crear nuevo módulo para homologar moodle

de Sebastián Torres -

Homologación conseguida por parte del SEPE para la impartición de certificados de profesionalidad en modalidad online

Hola. Tengo la enorme satisfacción y el orgullo personal tras varios años trabajando en el tema de los certificados de profesionalidad como director técnico de DGF, de comunicar que se nos ha informado por parte del SEPE sobre la homologación de 5 certificados presentados, dando por tanto el visto bueno a plataforma, desarrollo del sistema de seguimiento (SOAP), diseño metodológico implementado en la plataforma, informes de evaluación, contenido y documentación presentada (proyecto formativo, guía del alumno, guía del tutor-formador, y manual de la plataforma). Todo ello ha sido desarrollado en unas de las últimas versiones de Moodle, en su versión 2.7.2+.


Aprovecho también para felicitar a muchos de nuestros clientes a los que ya están comunicando también la homologación de los certificados y plataforma que contrataron con nosotros.


En respuesta a jose luis garcia

Re: Crear nuevo módulo para homologar moodle

de Silvia Fernández -

Buenas tardes,

quería realizar una consulta sobre el kit de pruebas facilitado por el SEPE.

A fecha de julio de este año, tenía el servicio de seguimiento completamento operativo, con todas las funciones OK. Pero esta semana he probado de nuevo el servicio, y mi sorpresa es que me aparece un error similar al que muestro a continuación.

He visto que en septiembre sacaron una nueva versión del kit de pruebas, y no se si esto puede influir (aunque el sistema de validación tiene la misma fecha que la versión de julio...) o puede ser que sea necesario que el certificado esté validado por un centro de confianza...

Agracecería vuestra ayuda, o saber si a alguien le ha ocurrido algo parecido.

Muchas gracias de antemano.


org.apache.axis2.AxisFault: Connection has been shutdown: javax.net.ssl.SSLHands
hakeException: sun.security.validator.ValidatorException: PKIX path building fai
led: sun.security.provider.certpath.SunCertPathBuilderException: unable to find
valid certification path to requested target
        at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
        at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMess
ageFormatter.java:78)
        at org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRe
questEntity.java:84)
        at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequ
estBody(EntityEnclosingMethod.java:499)
        at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodB
ase.java:2114)
        at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.j
ava:1096)
        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(Htt
pMethodDirector.java:398)
        at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMe
thodDirector.java:171)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.jav
a:397)
        at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(Abst
ractHTTPSender.java:621)
        at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.jav
a:193)
        at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
        at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessa
geWithCommons(CommonsHTTPTransportSender.java:404)
        at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(Com
monsHTTPTransportSender.java:231)
        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
        at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisO
peration.java:406)
        at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(Out
InAxisOperation.java:229)
        at org.apache.axis2.client.OperationClient.execute(OperationClient.java:
165)
        at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWS
Stub.obtenerDatosCentro(ProveedorCentroTFWSStub.java:255)
        at es.spee.meyss.proveedorcentro.cliente.business.services.impl.Proveedo
rCentroSvcImpl.validarObtenerDatosCentro(ProveedorCentroSvcImpl.java:193)
        at es.spee.meyss.proveedorcentro.cliente.business.services.impl.Proveedo
rCentroSvcImpl.validarObtenerDatosCentro(ProveedorCentroSvcImpl.java:170)
        at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.va
lidarObtenerDatosCentro(ProveedorCentroTFValidador.java:159)
        at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.ma
in(ProveedorCentroTFValidador.java:49)
Caused by: com.ctc.wstx.exc.WstxIOException: Connection has been shutdown: javax
.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX
path building failed: sun.security.provider.certpath.SunCertPathBuilderException
: unable to find valid certification path to requested target
        at com.ctc.wstx.sw.BaseStreamWriter.finishDocument(BaseStreamWriter.java
:1692)
        at com.ctc.wstx.sw.BaseStreamWriter.close(BaseStreamWriter.java:288)
        at org.apache.axiom.util.stax.wrapper.XMLStreamWriterWrapper.close(XMLSt
reamWriterWrapper.java:46)
        at org.apache.axiom.om.impl.MTOMXMLStreamWriter.close(MTOMXMLStreamWrite
r.java:222)
        at org.apache.axiom.om.impl.dom.ChildNode.serializeAndConsume(ChildNode.
java:425)
        at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMess
ageFormatter.java:74)
        ... 21 more
Caused by: javax.net.ssl.SSLException: Connection has been shutdown: javax.net.s
sl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path b
uilding failed: sun.security.provider.certpath.SunCertPathBuilderException: unab
le to find valid certification path to requested target
        at sun.security.ssl.SSLSocketImpl.checkEOF(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.checkWrite(Unknown Source)
        at sun.security.ssl.AppOutputStream.write(Unknown Source)
        at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
        at java.io.BufferedOutputStream.flush(Unknown Source)
        at java.io.FilterOutputStream.flush(Unknown Source)
        at org.apache.commons.httpclient.ChunkedOutputStream.flush(ChunkedOutput
Stream.java:191)
        at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:99)
        at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:214)

        at com.ctc.wstx.sw.BufferingXmlWriter.close(BufferingXmlWriter.java:194)

        at com.ctc.wstx.sw.BaseStreamWriter.finishDocument(BaseStreamWriter.java
:1690)
        ... 26 more
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.Validator
Exception: PKIX path building failed: sun.security.provider.certpath.SunCertPath
BuilderException: unable to find valid certification path to requested target
        at sun.security.ssl.Alerts.getSSLException(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
        at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
        at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
        at sun.security.ssl.Handshaker.processLoop(Unknown Source)
        at sun.security.ssl.Handshaker.process_record(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source
)
        at sun.security.ssl.SSLSocketImpl.writeRecord(Unknown Source)
        at sun.security.ssl.AppOutputStream.write(Unknown Source)
        at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
        at java.io.BufferedOutputStream.flush(Unknown Source)
        at java.io.FilterOutputStream.flush(Unknown Source)
        at org.apache.commons.httpclient.ChunkedOutputStream.flush(ChunkedOutput
Stream.java:191)
        at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:99)
        at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:214)

        at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:311)
        at org.apache.axiom.util.stax.wrapper.XMLStreamWriterWrapper.flush(XMLSt
reamWriterWrapper.java:50)
        at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWrite
r.java:230)
        at org.apache.axiom.om.impl.dom.ChildNode.serializeAndConsume(ChildNode.
java:423)
        ... 22 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed:
 sun.security.provider.certpath.SunCertPathBuilderException: unable to find vali
d certification path to requested target
        at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
        at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
        at sun.security.validator.Validator.validate(Unknown Source)
        at sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source)
        at sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source)
        at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Sour
ce)
        ... 40 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to
 find valid certification path to requested target
        at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown
 Source)
        at java.security.cert.CertPathBuilder.build(Unknown Source)
        ... 46 more
obtenerDatosCentro     -     datos identificativos correctos     -      KO
org.apache.axis2.AxisFault: Connection has been shutdown: javax.net.ssl.SSLHands
hakeException: sun.security.validator.ValidatorException: PKIX path building fai
led: sun.security.provider.certpath.SunCertPathBuilderException: unable to find
valid certification path to requested target
        at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
        at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMess
ageFormatter.java:78)
        at org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRe
questEntity.java:84)
        at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequ
estBody(EntityEnclosingMethod.java:499)
        at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodB
ase.java:2114)
        at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.j
ava:1096)
        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(Htt
pMethodDirector.java:398)
        at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMe
thodDirector.java:171)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.jav
a:397)
        at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(Abst
ractHTTPSender.java:621)
        at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.jav
a:193)
        at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
        at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessa
geWithCommons(CommonsHTTPTransportSender.java:404)
        at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(Com
monsHTTPTransportSender.java:231)
        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
        at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisO
peration.java:406)
        at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(Out
InAxisOperation.java:229)
        at org.apache.axis2.client.OperationClient.execute(OperationClient.java:
165)
        at es.spee.meyss.proveedorcentro.application.ws.impl.ProveedorCentroTFWS
Stub.crearCentro(ProveedorCentroTFWSStub.java:1519)
        at es.spee.meyss.proveedorcentro.cliente.business.services.impl.Proveedo
rCentroSvcImpl.validarCrearCentro(ProveedorCentroSvcImpl.java:113)
        at es.spee.meyss.proveedorcentro.cliente.business.services.impl.Proveedo
rCentroSvcImpl.validarCrearCentro(ProveedorCentroSvcImpl.java:83)
        at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.va
lidarCrearCentro(ProveedorCentroTFValidador.java:151)
        at es.spee.meyss.proveedorcentro.validador.ProveedorCentroTFValidador.ma
in(ProveedorCentroTFValidador.java:52)
Caused by: com.ctc.wstx.exc.WstxIOException: Connection has been shutdown: javax
.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX
path building failed: sun.security.provider.certpath.SunCertPathBuilderException
: unable to find valid certification path to requested target
        at com.ctc.wstx.sw.BaseStreamWriter.finishDocument(BaseStreamWriter.java
:1692)
        at com.ctc.wstx.sw.BaseStreamWriter.close(BaseStreamWriter.java:288)
        at org.apache.axiom.util.stax.wrapper.XMLStreamWriterWrapper.close(XMLSt
reamWriterWrapper.java:46)
        at org.apache.axiom.om.impl.MTOMXMLStreamWriter.close(MTOMXMLStreamWrite
r.java:222)
        at org.apache.axiom.om.impl.dom.ChildNode.serializeAndConsume(ChildNode.
java:425)
        at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMess
ageFormatter.java:74)
        ... 21 more
Caused by: javax.net.ssl.SSLException: Connection has been shutdown: javax.net.s
sl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path b
uilding failed: sun.security.provider.certpath.SunCertPathBuilderException: unab
le to find valid certification path to requested target
        at sun.security.ssl.SSLSocketImpl.checkEOF(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.checkWrite(Unknown Source)
        at sun.security.ssl.AppOutputStream.write(Unknown Source)
        at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
        at java.io.BufferedOutputStream.flush(Unknown Source)
        at java.io.FilterOutputStream.flush(Unknown Source)
        at org.apache.commons.httpclient.ChunkedOutputStream.flush(ChunkedOutput
Stream.java:191)
        at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:99)
        at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:214)

        at com.ctc.wstx.sw.BufferingXmlWriter.close(BufferingXmlWriter.java:194)

        at com.ctc.wstx.sw.BaseStreamWriter.finishDocument(BaseStreamWriter.java
:1690)
        ... 26 more
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.Validator
Exception: PKIX path building failed: sun.security.provider.certpath.SunCertPath
BuilderException: unable to find valid certification path to requested target
        at sun.security.ssl.Alerts.getSSLException(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
        at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
        at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
        at sun.security.ssl.Handshaker.processLoop(Unknown Source)
        at sun.security.ssl.Handshaker.process_record(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source
)
        at sun.security.ssl.SSLSocketImpl.writeRecord(Unknown Source)
        at sun.security.ssl.AppOutputStream.write(Unknown Source)
        at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
        at java.io.BufferedOutputStream.flush(Unknown Source)
        at java.io.FilterOutputStream.flush(Unknown Source)
        at org.apache.commons.httpclient.ChunkedOutputStream.flush(ChunkedOutput
Stream.java:191)
        at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:99)
        at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:214)

        at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:311)
        at org.apache.axiom.util.stax.wrapper.XMLStreamWriterWrapper.flush(XMLSt
reamWriterWrapper.java:50)
        at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWrite
r.java:230)
        at org.apache.axiom.om.impl.dom.ChildNode.serializeAndConsume(ChildNode.
java:423)
        ... 22 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed:
 sun.security.provider.certpath.SunCertPathBuilderException: unable to find vali
d certification path to requested target
        at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
        at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
        at sun.security.validator.Validator.validate(Unknown Source)
        at sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source)
        at sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source)
        at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Sour
ce)
        ... 40 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to
 find valid certification path to requested target
        at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown
 Source)
        at java.security.cert.CertPathBuilder.build(Unknown Source)
        ... 46 more
En respuesta a Silvia Fernández

Re: Crear nuevo módulo para homologar moodle

de Fernando Navarro Páez -

Hola Silvia.

La pista está al principio: "PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target": Basicamente hay un problema con el certificado SSL (unable to find valid certification path to requested target)


Salu2

Fernando

En respuesta a Fernando Navarro Páez

Re: Crear nuevo módulo para homologar moodle

de Silvia Fernández -

Hola Fernando,

quería consultarte sobre el problema del certificado.

¿crees que es debido a que no está autorizado? ¿o a que está mal configurado/creado y no se tiene acceso?

La solución que siempre encuentro es que puede ser porque Java no lo encuentra como certificado de confianza, y supuestamente se solventa importando el certificado en la configuración de Java, pero no me funciona...

No controlo sobre el tema de SSL y estoy muy estancada...

Muchísimas gracias

En respuesta a Silvia Fernández

Re: Crear nuevo módulo para homologar moodle

de Fernando Navarro Páez -

Hola Silvia.

¿Conseguiste más información?

Salu2

Fernando

En respuesta a Fernando Navarro Páez

Re: Crear nuevo módulo para homologar moodle

de Silvia Fernández -

Hola fernando,

vamos a ver si en estos días validamos el certificado con una entidad, y si ver si ese es el problema...

Gracias, un saludo


En respuesta a Fernando Navarro Páez

Re: Crear nuevo módulo para homologar moodle

de Silvia Fernández -

Buenos días,

ya he realizado la validación del certificado con RAPID SSL, pero el sistema me sigue proporcionando el mismo error...

org.apache.axis2.AxisFault: Connection has been shutdown: javax.net.ssl.SSLHands
hakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
............

¿Alguien más tiene este problema?

Muchas gracias, un saludo

En respuesta a Silvia Fernández

Re: Crear nuevo módulo para homologar moodle

de Silvia Fernández -

Buenos días de nuevo,

por si a alguien puede ayudarle mi problema se encontraba al disponer de varios certificados SSL para varios campus dentro del mismo servidor y bajo la misma IP.

Aún no sé como solventar el tema de tener más de un campus y que valide correctamente, pero con uno solo funciona a la perfección.

Gracias Fernando por toda tu ayuda.

Un saludo

En respuesta a jose luis garcia

Re: Crear nuevo módulo para homologar moodle

de Marta Gómez -

Buenos días.

Soy nueva en todo esto y estoy creando el servicio web para el seguimiento del SEPE. Ya tengo creado obtenerDatosCentro y creo que funciona sin problema. Ahora estoy con crearCentro y la respuesta que recibo es la siguiente:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
         <faultcode>SOAP-ENV:Server</faultcode>
         <faultstring>Cannot use object of type stdClass as array</faultstring>
      </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Ya estuve mirando por Internet pero no conseguí solucionarlo. Como ya os dije, soy nueva en todo esto, disculpame por adelantado. Si alguien pudiese ayudarme se lo agradecería.

Muchas gracias.

En respuesta a Marta Gómez

Re: Crear nuevo módulo para homologar moodle

de Marta Gómez -
Olvidaros de mi pregunta. No estaba haciendo lo que debía.
Disculpadme.
En respuesta a Marta Gómez

Re: Crear nuevo módulo para homologar moodle

de hernani moodle -

MARTA, has conseguido el OK de obtenerDatosCentro en la autoevaluación?  

Nosotras nos estamos volviendo locas con la autentifcación...

En respuesta a hernani moodle

Re: Crear nuevo módulo para homologar moodle

de Marta Gómez -
No conseguí el OK, tengo las cosas un poco verdes y la verdad es que también me estoy volviendo un poco loca :S . Siento no poder ayudarte.
En respuesta a Marta Gómez

Re: Crear nuevo módulo para homologar moodle

de hernani moodle -

Esto está un poco abandonado pero por si lo lee alguien que haya pasado por esto:

1. ¿Cómo puedo ver los errores de crearAccion?

Cuando ejecuto la autoevaluación sólo me da que KO para todas las acciones pero no me muestra ningún error de java ni nada...

He hecho pruebas en el SOAPUI y obtengo respuestas correctas para todos los crearAccion... Y de aquí surge mi segunda pregunta. Al leer las request, tengo que hacerlo de diferente manera si leo la request del SOAPUI que si leo las del cliente de la autoevaluación cuando se supone que deberían ser exactamente iguales. Aunque las request sean aparentemente sean iguales, cuando leo las del SOAPUI de un startElement me salta a un character y luego al siguiente startElement, mientras que en el otro pasa de startElemtent a startElement...

2. ¿A alguien le ha pasado? ¿Hay alguna manera para poner la request del SOPAUI exactamente igual que la del cliente de la autoevaluación?

Me estoy volviendo loca..

En respuesta a hernani moodle

Re: Crear nuevo módulo para homologar moodle

de Raquel Carcelen -

Buenas tardes,

Estoy empezando ahora con la homologación de la plataforma.

Tras instalar netbeans y probar con los servidores glassfish y tomcat no he conseguido que me depure al 100% el fichero wsdl, cada vez me da un error distinto y ya no se que hacer.


¿A alguien más le ha pasado esto?

Os agradecería vuestra ayuda.


Un Saludo

En respuesta a Raquel Carcelen

Re: Crear nuevo módulo para homologar moodle

de Jose Maria Blanquer -

Buenos dias raquel, yo empece hace poco con el tema de la homologación también, y empecé con JAVA, y servidor tomcat, después vi estos temas(aqui en el foro de moodle hay mucha ayuda) he conseguido avanzar pero no lo tengo aún terminado, he usado NUSOAP y lo estoy haciendo con PHP. 

Si sigues este enlace podrás empezar, hay un ejemplo muy bueno de F Caracuel, a mi me ayudó bastante para empezar.

Saludos

En respuesta a Jose Maria Blanquer

Re: Crear nuevo módulo para homologar moodle

de Raquel Carcelen -

Buenos días José María,

Si, había ledio todos los post y vi tb el de  F Caracuel. Pero mi problema era validar el wsdl. Me da error.

De todas maneras tengo que dejar apartado este tema.


Muchas gracias por tu ayuda


Un Saludo

En respuesta a jose luis garcia

Re: Crear nuevo módulo para homologar moodle

de Jose Maria Blanquer -

Alguien me puede orientar con el tema de la identificación del KIT?

Estoy teniendo KO en las dos primeras pruebas, y no se realmente como hay que hacerlo, he leido en el pdf de Notas para desarrolladores que hay que usar el WS:Security... ¿Para la libreria NUSOAP realmente hace falta utilizarlo?.. Y si si que se tiene que usar...¿hay que ponerlo en la parte del servidor? muchas gracias

En respuesta a Jose Maria Blanquer

Re: Crear nuevo módulo para homologar moodle

de Jesús Cárdenas -

Buenas tardes,

He seguido las instrucciones de F Carousel para el montaje del servidor soap pero tengo un pequeño problema y es el siguiente:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">

<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>WSDL</faultcode>
<faultstring>
SOAP-ERROR: Parsing WSDL: Unknown required WSDL extension 'http://schemas.xmlsoap.org/ws/2004/09/policy'
</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

No se a que es debido si alguien me pudiera ayudar se lo agradecería, llevo bastantes días dándole vueltas y no entiendo el problema.

En respuesta a Jesús Cárdenas

Re: Crear nuevo módulo para homologar moodle

de Jose Maria Blanquer -

Hola Jesus, la direccion donde esta apuntando ese .WSDL es correcta?

Explica un poco como lo tienes montado y a ver si te puedo ayudar en algo..


Saludos!

En respuesta a Jose Maria Blanquer

Re: Crear nuevo módulo para homologar moodle

de Jesús Cárdenas -

Hola muy buenas, 

Antes de nada darte las gracias por contestarme pues llevo tiempo dándole vueltas.


El como lo tengo montado es como F Carrousel postea en este debate. 

Sobre la url si existe ya que va a un dirección que no está rota, comentar que ese archivo lo proporciona el SEPE y son ellos los que dan toda esa información yo la he comprobado y me parece correcta. En el siguiente enlace podrás ver el archivo wsdl que estoy usando.


https://www.sepe.es/contenidos/personas/formacion/centros_formacion/pdf/ProveedorCentroTFWS_20140619.wsdl


Gracias.

En respuesta a Jesús Cárdenas

Re: Crear nuevo módulo para homologar moodle

de Jose Maria Blanquer -

Hola de nuevo Jesus..

Entiendo que cuando dices J Carrousel te refieres a F. Caracuel, sino, pasame el enlace y le pego un vistazo

Ese archivo .wsdl tienes que tenerlo en el servidor(obviamente, descargatelo) y en el webservice tienes que apuntar al .wsdl

Cuando apuntes a el, ya puedes ir haciendo pruebas con el SOAP UI.

Ya comentas algo ;)


En respuesta a Jose Maria Blanquer

Re: Crear nuevo módulo para homologar moodle

de Jesús Cárdenas -

Buenos días Jose María, 

Si me refiero a F. Caracuel, y a la vez comunicarte que si tengo el archivo wsdl dentro del servidor descargado, mi webservice apunta al wsdl.


Sobre lo que comenta Wimd Wimd sobre el tema del http, indicarle que lo tengo en un dominio con https, pero me podría aclarar ese tema?? en un principio entendí que el problema podría andar por no tener el servidor en un https pero ahora mismo si esta en uno. 


Gracias a los dos.

En respuesta a Jesús Cárdenas

Re: Crear nuevo módulo para homologar moodle

de Jose Maria Blanquer -

Hola de nuevo.. con la explicación de Caracuel, no deberías tener ningún problema.. 

de todas maneras...  me puedes confirmar que en el WSDL tienes la siguiente linea así? :

           <wsp:PolicyReference URI="#UsernameTokenPolicy" wsdl:required="false" />

El wsdl del SEPE está en true, cámbiala a false

Saludos

En respuesta a Jose Maria Blanquer

Re: Crear nuevo módulo para homologar moodle

de Jesús Cárdenas -

Cambiando esa linea a false, ya el servidor no me da error, ya es el cliente el que tengo que ir retocando para que funcione correctamente, intentare solucionar este problema, cualquier duda os pediré ayuda pues me habéis ayudado bastante.


Muchas gracias.

En respuesta a Jose Maria Blanquer

Re: Crear nuevo módulo para homologar moodle

de Manuel Vega -

Buenas tardes,


Espero puedan ayudarme. Estoy liado con la conexión al servidor SOAP he realizado lo mismo que hace F. CARACUEL y me estaba dando error en la URL del WSDL. Lo he modificado y me salia la excepción que os ha salido a ustedes. Por lo que tal y como decis me fui al archivo wsdl y modifiqué la linea wsdl: required= "false" y me sale el siguiente error.

Todo esto lo tengo en  wampserver y estoy haciendo las pruebas sobre localhost llamando a client.php


Que es lo que estoy haciendo mal??¿


Gracias!

Adjunto Prueba.png
En respuesta a Jesús Cárdenas

Re: Crear nuevo módulo para homologar moodle

de Wimd Wimd -

Si las pruebas las realizas sobre HTTP, tendrías que modificar el wdsl y donde pone wsp marcar el required a false


¿Cómo se solucionaría el problema que aparece con el kit "Header Not Understood"? No se donde indicar en el mustunderstand none

En el SOAP UI puedo validar las funciones sin problemas

En respuesta a Wimd Wimd

Re: Crear nuevo módulo para homologar moodle

de Jose Maria Blanquer -

Solo te da problema el header not understood? no te sale ningún error más aparte de este?

Si pudieses poner una captura sería genial

En respuesta a Jose Maria Blanquer

Re: Crear nuevo módulo para homologar moodle

de Wimd Wimd -

Sí, solamente me sale ese problema. Aparece siempre, da igual que tenga las funciones definidas en el Web Service que no, así que debe ser otra cosa, pero no doy con ello.

Adjunto un fichero txt con los resultados de la ejecución del kit de autoevaluación.

Al final de ese mismo fichero he incluido también la respuesta que estoy obteniendo en SOAP UI de la función obtenerDatosCentro, que es la única que actualmente tengo definida.


Un saludo y gracias


En respuesta a Wimd Wimd

Re: Crear nuevo módulo para homologar moodle

de Jose Maria Blanquer -

Esta linea del Wsdl la tienes asi?

          <wsp:PolicyReference URI="#UsernameTokenPolicy" wsdl:required="false" />

En respuesta a Jose Maria Blanquer

Re: Crear nuevo módulo para homologar moodle

de Wimd Wimd -

Sí, la tengo en false.

En respuesta a jose luis garcia

Re: Crear nuevo módulo para homologar moodle

de Eduardo Vilar Lagar -

Buenos días,

hemos desarrollado los servicios web para el Seguimiento del SEPE. Hemos probado los servicios con el KIT de pruebas y en todos los puntos nos da como resultado OK.


Pero a la hora de acreditar la plataforma en la página del SEPE y poner la URL donde están ubicados los servicios nos dice siempre el mismo error: La URL especificada no es  una URL válida de seguimiento o no hay alojado ningún servicio. Sin embargo esa misma URL es la que utilizamos en el KIT de pruebas y dice que está todo OK.


Hemos creado un certificado de servidor para el protocolo https, firmado por la FNMT. El tema es que incluso poniendo un log en la aplicación para ver si se efectúa una llamada no llega ni a hacer ninguna petición.

¿Cómo es posible entonces que detecte que los servicios son erróneos si ni siquiera realiza las peticiones?

¿Alguien se ha topado con esto mismo y ha podido solucionarlo?


Hemos intentado contactar con el SEPE sobre este problema pero no coge las llamadas y no contestan a los correos.


Gracias, un saludo.

En respuesta a Eduardo Vilar Lagar

Re: Crear nuevo módulo para homologar moodle

de jose morales -

Buenas a todos y muchas gracias por vuestras aportaciones, me han servido de mucho, soy novato en esto de los servicios web y he conseguido el ok en casi todos, pero no soy capaz de seguir adelante así que comparto mi trabajo para ver si entre todos podemos crear un web service para que nuestros centros puedan homologarse.

<?php

include('lib/nusoap.php');


require_once 'config.php';

include("conexion.php");

require_once 'include/dbHandler.php';

//Se carga la librería soap

        


//Deshabilita que se guarde en caché la info del wsdl

ini_set("soap.wsdl_cache_enabled", "0");

//$server = new soap_server(URL_WSDL, array());

$server = new soap_server(URL_WSDL, array('encoding' => 'ISO-8859-1'));

$Credenciales  = $server->requestHeader;


$WS_User = $Credenciales["Security"]["UsernameToken"]["SEPE"];  // Aqui viene el User


$WS_Pass = $Credenciales["Security"]["UsernameToken"]["password"]["!"];// Aqui viene el Pass*/




 


function crearCentro($centro) {

$INSERT_CENTRO ="INSERT INTO sepe_centro (ORIGEN_CENTRO,CODIGO_CENTRO,NOMBRE_CENTRO,URL_PLATAFORMA,URL_SEGUIMIENTO,TELEFONO,EMAIL) VALUES ('".$centro["ID_CENTRO"]["ORIGEN_CENTRO"]."','".$centro["ID_CENTRO"]["CODIGO_CENTRO"]."','".$centro["NOMBRE_CENTRO"]."','".$centro["URL_PLATAFORMA"]."','".$centro["URL_SEGUIMIENTO"]."','".$centro["TELEFONO"]."','".$centro["EMAIL"]."')";

$res = array();

$resultado=mysql_query($INSERT_CENTRO);

  $res["ORIGEN_CENTRO"] = $centro["ID_CENTRO"]["ORIGEN_CENTRO"];

            $res["CODIGO_CENTRO"] = $centro["ID_CENTRO"]["CODIGO_CENTRO"];

$res["NOMBRE_CENTRO"] = $centro["NOMBRE_CENTRO"];

            $res["URL_PLATAFORMA"] = $centro["URL_PLATAFORMA"];

            $res["URL_SEGUIMIENTO"] = $centro["URL_SEGUIMIENTO"];

            $res["TELEFONO"] = $centro["TELEFONO"];

            $res["EMAIL"] = $centro["EMAIL"];

       $consulta= " SELECT * FROM accion_formativa";

 $resultado=mysql_query($consulta);

 $idcentro=mysql_fetch_array($resultado);

 $idc=$idcentro['ID_CENTRO'];

 if($idc == 1){

 return array ('RESPUESTA_DATOS_CENTRO' => array(

            'CODIGO_RETORNO' => '1',

            'ETIQUETA_ERROR' => "Centro con Acciones", 

'DATOS_IDENTIFICATIVOS' => null));

 

 } else{

    return array ('RESPUESTA_DATOS_CENTRO' => array(

            'CODIGO_RETORNO' => '0',

            'ETIQUETA_ERROR' => "Correcto", 

'DATOS_IDENTIFICATIVOS' => array(

                'ID_CENTRO' =>  array('ORIGEN_CENTRO' => $res['ORIGEN_CENTRO'], 'CODIGO_CENTRO' => $res['CODIGO_CENTRO']),

                'NOMBRE_CENTRO' => $res['NOMBRE_CENTRO'],

                'URL_PLATAFORMA' => $res['URL_PLATAFORMA'],

                'URL_SEGUIMIENTO' => $res['URL_SEGUIMIENTO'],

                'TELEFONO' => $res['TELEFONO'],

                'EMAIL' => $res['EMAIL'])));


 }

}





function obtenerDatosCentro() {

 

 $sql = " SELECT * FROM sepe_centro LIMIT 1";

    $list = array();

$results = mysql_query($sql);



while($row = mysql_fetch_assoc($results)) {

 

    $list= array('ID_CENTRO' => array('ORIGEN_CENTRO' => $row['ORIGEN_CENTRO'], 'CODIGO_CENTRO' => $row['CODIGO_CENTRO']),

'NOMBRE_CENTRO'=>$row['NOMBRE_CENTRO'],

                    'URL_PLATAFORMA'=>$row['URL_PLATAFORMA'],

                    'URL_SEGUIMIENTO'=>$row['URL_SEGUIMIENTO'],

                    'TELEFONO'=>$row['TELEFONO'],

'EMAIL'=>$row['EMAIL']);

}



             

     

return array('RESPUESTA_DATOS_CENTRO' => array(

            'CODIGO_RETORNO' => 0,

'ETIQUETA_ERROR' => "Correcto", 

'DATOS_IDENTIFICATIVOS' => $list));

 

   

    

 

  } 

 

 












function crearAccion($accion) {

$list = array();

$res = array();

$list3 = array();

///////////////////////////// //INSERTAR LOS VALORES DE LA ACCION FORMATIVA ESTE ESTA OK  /////////////////////////////////////////////////

   $consultaAccion = "SELECT * from accion_formativa WHERE CODIGO_ACCION = '".$accion["ID_ACCION"]["CODIGO_ACCION"]."'";

$resultadoComprobacion = mysql_query($consultaAccion);

$numAccion = mysql_num_rows($resultadoComprobacion);

if ($numAccion == 0) {

$INSERT ="INSERT INTO accion_formativa (ORIGEN_ACCION,CODIGO_ACCION,SITUACION,ORIGEN_ESPECIALIDAD,AREA_PROFESIONAL,CODIGO_ESPECIALIDAD,DURACION,FECHA_INICIO,FECHA_FIN,IND_ITINERARIO_COMPLETO,TIPO_FINANCIACION,NUMERO_ASISTENTES,DENOMINACION_ACCION,INFORMACION_GENERAL,HORARIOS,REQUISITOS,CONTACTO_ACCION) VALUES ('".$accion["ID_ACCION"]["ORIGEN_ACCION"]."','".$accion["ID_ACCION"]["CODIGO_ACCION"]."','".$accion["SITUACION"]."','".$accion["ID_ESPECIALIDAD_PRINCIPAL"]["ORIGEN_ESPECIALIDAD"]."','".$accion["ID_ESPECIALIDAD_PRINCIPAL"]["AREA_PROFESIONAL"]."','".$accion["ID_ESPECIALIDAD_PRINCIPAL"]["CODIGO_ESPECIALIDAD"]."','".$accion["DURACION"]."','".$accion["FECHA_INICIO"]."','".$accion["FECHA_FIN"]."','".$accion["IND_ITINERARIO_COMPLETO"]."','".$accion["TIPO_FINANCIACION"]."','".$accion["NUMERO_ASISTENTES"]."','".$accion["DESCRIPCION_ACCION"]["DENOMINACION_ACCION"]."','".$accion["DESCRIPCION_ACCION"]["INFORMACION_GENERAL"]."','".$accion["DESCRIPCION_ACCION"]["HORARIOS"]."','".$accion["DESCRIPCION_ACCION"]["REQUISITOS"]."','".$accion["DESCRIPCION_ACCION"]["CONTACTO_ACCION"]."')";

$resultado=mysql_query($INSERT);

  $res["ORIGEN_ACCION"] = $accion["ID_ACCION"]["ORIGEN_ACCION"];

            $res["CODIGO_ACCION"] = $accion["ID_ACCION"]["CODIGO_ACCION"];

            $res["SITUACION"] = $accion["SITUACION"];

$res["ORIGEN_ESPECIALIDAD"] = $accion["ID_ESPECIALIDAD_PRINCIPAL"]["ORIGEN_ESPECIALIDAD"];

$res["AREA_PROFESIONAL"] = $accion["ID_ESPECIALIDAD_PRINCIPAL"]["AREA_PROFESIONAL"];

$res["CODIGO_ESPECIALIDAD"] = $accion["ID_ESPECIALIDAD_PRINCIPAL"]["CODIGO_ESPECIALIDAD"];

            $res["DURACION"] = $accion["DURACION"];

            $res["FECHA_INICIO"] = $accion["FECHA_INICIO"];

            $res["FECHA_FIN"] = $accion["FECHA_FIN"];

$res["IND_ITINERARIO_COMPLETO"] = $accion["IND_ITINERARIO_COMPLETO"];

$res["TIPO_FINANCIACION"] = $accion["TIPO_FINANCIACION"];

$res["NUMERO_ASISTENTES"] = $accion["NUMERO_ASISTENTES"];

$res["DENOMINACION_ACCION"] = $accion["DESCRIPCION_ACCION"]["DENOMINACION_ACCION"];

$res["INFORMACION_GENERAL"] = $accion["DESCRIPCION_ACCION"]["INFORMACION_GENERAL"];

$res["HORARIOS"] = $accion["DESCRIPCION_ACCION"]["HORARIOS"];

$res["REQUISITOS"] = $accion["DESCRIPCION_ACCION"]["REQUISITOS"];

$res["CONTACTO_ACCION"] =$accion["DESCRIPCION_ACCION"]["CONTACTO_ACCION"];

////////////////////////// //INSERTAR LOS VALORES DE LAS ESPECIALIDADES YA ESTAN OK OK OK //////////////////////////////////////////////

$consultaAccion = "SELECT * from accion_formativa WHERE CODIGO_ACCION = '".$accion["ID_ACCION"]["CODIGO_ACCION"]."'";

$resultadoNuevaAccion = mysql_query($consultaAccion);

$naccion = mysql_fetch_array($resultadoNuevaAccion);

$id = $naccion["id"];

$s=$accion["ESPECIALIDADES_ACCION"]["ESPECIALIDAD"];

$count = count($s);

 

 // Aqui va a insertar un insert por cada uno de los elementos contados anteriormente

 for( $j = 0; $j < $count; $j++){



 

//traigo los elementos de la lista y se los asigno a la variable idtienda

 $idaccion = $accion["ESPECIALIDADES_ACCION"]["ESPECIALIDAD"][$j]["ID_ESPECIALIDAD"];

 $idcentro = $accion["ESPECIALIDADES_ACCION"]["ESPECIALIDAD"][$j]["CENTRO_IMPARTICION"];

 $idesp = $accion["ESPECIALIDADES_ACCION"]["ESPECIALIDAD"][$j];

 $iduracion = $accion["ESPECIALIDADES_ACCION"]["ESPECIALIDAD"][$j]["DATOS_DURACION"];

if ($iduso=$accion["ESPECIALIDADES_ACCION"]["ESPECIALIDAD"][$j]["USO"]) { 

  

} else {

$iduso= null; 



$consulta ="INSERT INTO especialidad (ORIGEN_ESPECIALIDAD,AREA_PROFESIONAL,CODIGO_ESPECIALIDAD,ORIGEN_CENTRO,CODIGO_CENTRO,FECHA_INICIO,FECHA_FIN,MODALIDAD_IMPARTICION,HORAS_PRESENCIAL,HORAS_TELEFORMACION,NUM_PARTICIPANTES_M,NUMERO_ACCESOS_M,DURACION_TOTAL_M,NUM_PARTICIPANTES_T,NUMERO_ACCESOS_T,DURACION_TOTAL_T,NUM_PARTICIPANTES_N,NUMERO_ACCESOS_N,DURACION_TOTAL_N,NUM_PARTICIPANTES_S,NUMERO_ACTIVIDADES_APRENDIZAJE_S,NUMERO_INTENTOS_S,NUMERO_ACTIVIDADES_EVALUACION_S,REF_ACCION) VALUES ('".$idaccion["ORIGEN_ESPECIALIDAD"]."','".$idaccion["AREA_PROFESIONAL"]."','".$idaccion["CODIGO_ESPECIALIDAD"]."','".$idcentro["ORIGEN_CENTRO"]."','".$idcentro["CODIGO_CENTRO"]."','".$idesp["FECHA_INICIO"]."','".$idesp["FECHA_FIN"]."','".$idesp["MODALIDAD_IMPARTICION"]."','".$iduracion["HORAS_PRESENCIAL"]."','".$iduracion["HORAS_TELEFORMACION"]."','".$iduso["HORARIO_MANANA"]["NUM_PARTICIPANTES"]."','".$iduso["HORARIO_MANANA"]["NUMERO_ACCESOS"]."','".$iduso["HORARIO_MANANA"]["DURACION_TOTAL"]."','".$iduso["HORARIO_TARDE"]["NUM_PARTICIPANTES"]."','".$iduso["HORARIO_TARDE"]["NUMERO_ACCESOS"]."','".$iduso["HORARIO_TARDE"]["DURACION_TOTAL"]."','".$iduso["HORARIO_NOCHE"]["NUM_PARTICIPANTES"]."','".$iduso["HORARIO_NOCHE"]["NUMERO_ACCESOS"]."','".$iduso["HORARIO_NOCHE"]["DURACION_TOTAL"]."','".$iduso["SEGUIMIENTO_EVALUACION"]["NUM_PARTICIPANTES"]."','".$iduso["SEGUIMIENTO_EVALUACION"]["NUMERO_ACTIVIDADES_APRENDIZAJE"]."','".$iduso["SEGUIMIENTO_EVALUACION"]["NUMERO_INTENTOS"]."','".$iduso["SEGUIMIENTO_EVALUACION"]["NUMERO_ACTIVIDADES_EVALUACION"]."','".$id."')";

$resultadoEspe=mysql_query($consulta);

        

 //////////////  //INSERTAR LOS VALORES DE LOS CENTROS PRESENCIALES ESTE ESTA OK OK OK /////////////////////////////////////////////////////////////

  

   

   $consultaEspeCentro = "SELECT * from especialidad WHERE CODIGO_ESPECIALIDAD = '".$idaccion["CODIGO_ESPECIALIDAD"]."'";

$resultadoNuevoCentro = mysql_query($consultaEspeCentro);

$ncentro = mysql_fetch_array($resultadoNuevoCentro);

$id_espeCentro = $ncentro["ID_ESPECIALIDAD"];

$c=$accion["ESPECIALIDADES_ACCION"]["ESPECIALIDAD"][$j]["CENTROS_SESIONES_PRESENCIALES"]["CENTRO_PRESENCIAL"];

$countc = count($c);

 

 // Aqui va a insertar un insert por cada uno de los elementos contados anteriormente

 for( $i = 0; $i < $countc; $i++){

 $idcentrop = $accion["ESPECIALIDADES_ACCION"]["ESPECIALIDAD"][$j]["CENTROS_SESIONES_PRESENCIALES"]["CENTRO_PRESENCIAL"][$i];

$insertarCentro ="INSERT INTO centro_presencial (ORIGEN_CENTRO,CODIGO_CENTRO,REF_ESPECIALIDAD,REF_ACCION) VALUES ('".$idcentrop["ORIGEN_CENTRO"]."','".$idcentrop["CODIGO_CENTRO"]."','".$id_espeCentro."','".$id."')";

$resultadoEspe=mysql_query($insertarCentro);

}

//INSERTAR LOS VALORES DE LOS TUTORES esta todo ok 

$consultaEspeCentro2 = "SELECT * from especialidad WHERE CODIGO_ESPECIALIDAD = '".$idaccion["CODIGO_ESPECIALIDAD"]."'";

$resultadoNuevoCentro2 = mysql_query($consultaEspeCentro2);

$ncentro2 = mysql_fetch_array($resultadoNuevoCentro2);

$id_espeCentro2 = $ncentro2["ID_ESPECIALIDAD"];

 

if (isset($accion["ESPECIALIDADES_ACCION"]["ESPECIALIDAD"][$j]["TUTORES_FORMADORES"]["TUTOR_FORMADOR"])) {

$f=$accion["ESPECIALIDADES_ACCION"]["ESPECIALIDAD"][$j]["TUTORES_FORMADORES"]["TUTOR_FORMADOR"];

$countt =count($f);

 // Aqui va a insertar un insert por cada uno de los elementos contados anteriormente

 for( $tu = 0; $tu < $countt; $tu++){

 


if ($idtutor = $accion["ESPECIALIDADES_ACCION"]["ESPECIALIDAD"][$j]["TUTORES_FORMADORES"]["TUTOR_FORMADOR"][$tu]["ID_TUTOR"]){

}else{

$idtutor = null;

}

if ($idtutorias = $accion["ESPECIALIDADES_ACCION"]["ESPECIALIDAD"][$j]["TUTORES_FORMADORES"]["TUTOR_FORMADOR"][$tu]){

}else {

$idtutorias = null;

}

 

$insertarTutor ="INSERT INTO tutor_formador (TIPO_DOCUMENTO,NUM_DOCUMENTO,LETRA_NIF,ACREDITACION_TUTOR,EXPERIENCIA_PROFESIONAL,COMPETENCIA_DOCENTE,EXPERIENCIA_MODALIDAD_TELEFORMACION,FORMACION_MODALIDAD_TELEFORMACION,REF_ESPECIALIDAD,REF_ACCION) VALUES ('".$idtutor["TIPO_DOCUMENTO"]."','".$idtutor["NUM_DOCUMENTO"]."','".$idtutor["LETRA_NIF"]."','".$idtutorias["ACREDITACION_TUTOR"]."','".$idtutorias["EXPERIENCIA_PROFESIONAL"]."','".$idtutorias["COMPETENCIA_DOCENTE"]."','".$idtutorias["EXPERIENCIA_MODALIDAD_TELEFORMACION"]."','".$idtutorias["FORMACION_MODALIDAD_TELEFORMACION"]."','".$id_espeCentro2."','".$id."')";

$resultadoTutor=mysql_query($insertarTutor);

}

}

/////////////////////////////////////////////////////////////////////////////*///////////////////////////////////////////////////////

$list1= array();

$consulta3 = "SELECT * FROM centro_presencial WHERE REF_ESPECIALIDAD = '".$id_espeCentro."' AND REF_ACCION = '".$id."'";

$resultado3=mysql_query($consulta3);

while($row1 = mysql_fetch_assoc($resultado3)) {

array_push($list1, array( 

'ORIGEN_CENTRO' => $row1['ORIGEN_CENTRO'], 

'CODIGO_CENTRO' => $row1['CODIGO_CENTRO']));

}

$list2= array();

$consultaTutor1 = "SELECT * from tutor_formador WHERE REF_ESPECIALIDAD = '".$id_espeCentro2."' AND REF_ACCION = '".$id."'";

$resultadoTutor1 = mysql_query($consultaTutor1);

while($row2 = mysql_fetch_assoc($resultadoTutor1)) {

array_push($list2, array(

'ID_TUTOR' => array(

'TIPO_DOCUMENTO' => $row2['TIPO_DOCUMENTO'], 

'NUM_DOCUMENTO' => $row2['NUM_DOCUMENTO'], 

'LETRA_NIF' => $row2['LETRA_NIF']),

'ACREDITACION_TUTOR' => $row2['ACREDITACION_TUTOR'],

'EXPERIENCIA_PROFESIONAL' => $row2['EXPERIENCIA_PROFESIONAL'],

'COMPETENCIA_DOCENTE' => $row2['COMPETENCIA_DOCENTE'],

'EXPERIENCIA_MODALIDAD_TELEFORMACION' => $row2['EXPERIENCIA_MODALIDAD_TELEFORMACION'],

'FORMACION_MODALIDAD_TELEFORMACION' => $row2['FORMACION_MODALIDAD_TELEFORMACION']));

}

$consultaEspecialidad1 = "SELECT * from especialidad WHERE CODIGO_ESPECIALIDAD = '".$idaccion["CODIGO_ESPECIALIDAD"]."' AND REF_ACCION = '".$id."'";

$resultadoEspecialidad1 = mysql_query($consultaEspecialidad1);

while($row = mysql_fetch_assoc($resultadoEspecialidad1)) {

 

    array_push($list, array(

'ID_ESPECIALIDAD' => array ( 

'ORIGEN_ESPECIALIDAD' => $row['ORIGEN_ESPECIALIDAD'], 

'AREA_PROFESIONAL' => $row['AREA_PROFESIONAL'], 

'CODIGO_ESPECIALIDAD' => $row['CODIGO_ESPECIALIDAD']),

'CENTRO_IMPARTICION' => array(

'ORIGEN_CENTRO' => $row['ORIGEN_CENTRO'], 

'CODIGO_CENTRO' => $row['CODIGO_CENTRO']),

'FECHA_INICIO' => $row['FECHA_INICIO'],

'FECHA_FIN' => $row['FECHA_FIN'],

'MODALIDAD_IMPARTICION' => $row['MODALIDAD_IMPARTICION'],

'DATOS_DURACION' => array(

'HORAS_PRESENCIAL' => $row['HORAS_PRESENCIAL'], 'HORAS_TELEFORMACION' => $row['HORAS_TELEFORMACION']),

//HAY QUE GENERAR CONSULTAS

'CENTROS_SESIONES_PRESENCIALES' => array( 

'CENTRO_PRESENCIAL' => $list1),

// HAY QUE GENERAR LAS CONSULTAS PARA LOS TUTORES

'TUTORES_FORMADORES' => array(

'TUTOR_FORMADOR' => $list2),

'USO' => array(

'HORARIO_MANANA' => array(

'NUM_PARTICIPANTES' => $row['NUM_PARTICIPANTES_M'], 

'NUMERO_ACCESOS' => $row['NUMERO_ACCESOS_M'], 

'DURACION_TOTAL' => $row['DURACION_TOTAL_M']),

'HORARIO_TARDE' => array(

'NUM_PARTICIPANTES' => $row['NUM_PARTICIPANTES_T'], 

'NUMERO_ACCESOS' => $row['NUMERO_ACCESOS_T'], 

'DURACION_TOTAL' => $row['DURACION_TOTAL_T']),

'HORARIO_NOCHE' => array(

'NUM_PARTICIPANTES' => $row['NUM_PARTICIPANTES_N'], 

'NUMERO_ACCESOS' => $row['NUMERO_ACCESOS_N'], 

'DURACION_TOTAL' => $row['DURACION_TOTAL_N']),

'SEGUIMIENTO_EVALUACION' => array(

'NUM_PARTICIPANTES' => $row['NUM_PARTICIPANTES_S'], 

'NUMERO_ACTIVIDADES_APRENDIZAJE' => $row['NUMERO_ACTIVIDADES_APRENDIZAJE_S'], 

'NUMERO_INTENTOS' => $row['NUMERO_INTENTOS_S'], 

'NUMERO_ACTIVIDADES_EVALUACION' => $row['NUMERO_ACTIVIDADES_EVALUACION_S'])),

));

}

}

////////////////////////////////////////////////////////////

////////////////////////////////// //INSERTAR LOS VALORES DE LOS PARTICIPANTES EN PRINCIPIO ESTA TODO OK///////////////////////////////////////////////////////////////

$consultaAccion = "SELECT * from accion_formativa WHERE CODIGO_ACCION = '".$accion["ID_ACCION"]["CODIGO_ACCION"]."'";

$resultadoNuevaAccion = mysql_query($consultaAccion);

$naccion = mysql_fetch_array($resultadoNuevaAccion);

$id = $naccion["id"];

if (isset($accion["PARTICIPANTES"]["PARTICIPANTE"])) {

$p=$accion["PARTICIPANTES"]["PARTICIPANTE"];

$countp = count($p);

 

 // Aqui va a insertar un insert por cada uno de los elementos contados anteriormente

 for( $pa = 0; $pa < $countp; $pa++){


if ($idcontrato=$accion["PARTICIPANTES"]["PARTICIPANTE"][$pa]["CONTRATO_FORMACION"]) { 

  

} else {

$idcontrato= null; 

  

//traigo los elementos de la lista y se los asigno a la variable idtienda

 $idparti = $accion["PARTICIPANTES"]["PARTICIPANTE"][$pa]["ID_PARTICIPANTE"];

 $idindi = $accion["PARTICIPANTES"]["PARTICIPANTE"][$pa];

 

 


   

$insertar_participante ="INSERT INTO participante (TIPO_DOCUMENTO,NUM_DOCUMENTO,LETRA_NIF,INDICADOR_COMPETENCIAS_CLAVE,ID_CONTRATO_CFA,CIF_EMPRESA,TIPO_DOCUMENTO_TE,NUM_DOCUMENTO_TE,LETRA_NIF_TE,TIPO_DOCUMENTO_TF,NUM_DOCUMENTO_TF,LETRA_NIF_TF,REF_ACCION) VALUES ('".$idparti["TIPO_DOCUMENTO"]."','".$idparti["NUM_DOCUMENTO"]."','".$idparti["LETRA_NIF"]."','".$idindi["INDICADOR_COMPETENCIAS_CLAVE"]."','".$idcontrato["ID_CONTRATO_CFA"]."','".$idcontrato["CIF_EMPRESA"]."','".$idcontrato["ID_TUTOR_EMPRESA"]["TIPO_DOCUMENTO"]."','".$idcontrato["ID_TUTOR_EMPRESA"]["NUM_DOCUMENTO"]."','".$idcontrato["ID_TUTOR_EMPRESA"]["LETRA_NIF"]."','".$idcontrato["ID_TUTOR_FORMACION"]["TIPO_DOCUMENTO"]."','".$idcontrato["ID_TUTOR_FORMACION"]["NUM_DOCUMENTO"]."','".$idcontrato["ID_TUTOR_FORMACION"]["LETRA_NIF"]."','".$id."')";

$resultadoEspe1=mysql_query($insertar_participante);

////////////////////////////INSERTAR LOS VALORES DE LAS ESPECIALIDADES PARTICIPANTE////////////////////////////////////////////////////////////////////

$consulta_esp_part = "SELECT * from participante WHERE NUM_DOCUMENTO = '".$idparti["NUM_DOCUMENTO"]."'";

$resultado_esp_part = mysql_query($consulta_esp_part);

$esp_part = mysql_fetch_array($resultado_esp_part);

$id_esp_part = $esp_part["ID_PARTICIPANTE"];

if (isset($accion["PARTICIPANTES"]["PARTICIPANTE"][$pa]["ESPECIALIDADES_PARTICIPANTE"]["ESPECIALIDAD"])) {

$sp=$accion["PARTICIPANTES"]["PARTICIPANTE"][$pa]["ESPECIALIDADES_PARTICIPANTE"]["ESPECIALIDAD"];

$countsp = count($sp);

 

 // Aqui va a insertar un insert por cada uno de los elementos contados anteriormente

 for( $spa = 0; $spa < $countsp; $spa++){


if ($idspa1=$accion["PARTICIPANTES"]["PARTICIPANTE"][$pa]["ESPECIALIDADES_PARTICIPANTE"]["ESPECIALIDAD"][$spa]["EVALUACION_FINAL"]) { 

  

} else {

$idspa1= null; 

 if ($idspa2=$accion["PARTICIPANTES"]["PARTICIPANTE"][$pa]["ESPECIALIDADES_PARTICIPANTE"]["ESPECIALIDAD"][$spa]["RESULTADOS"]){

} else {

$idspa2= null;


if(empty ($accion["PARTICIPANTES"]["PARTICIPANTE"][$pa]["ESPECIALIDADES_PARTICIPANTE"]["ESPECIALIDAD"][$spa]["RESULTADOS"]["CALIFICACION_FINAL"])){

$idspa21= null;

}else{

$idspa21=$accion["PARTICIPANTES"]["PARTICIPANTE"][$pa]["ESPECIALIDADES_PARTICIPANTE"]["ESPECIALIDAD"][$spa]["RESULTADOS"]["CALIFICACION_FINAL"];

}

if(empty ($accion["PARTICIPANTES"]["PARTICIPANTE"][$pa]["ESPECIALIDADES_PARTICIPANTE"]["ESPECIALIDAD"][$spa]["RESULTADOS"]["PUNTUACION_FINAL"])){

$idspa22= null;

}else{

$idspa22=$accion["PARTICIPANTES"]["PARTICIPANTE"][$pa]["ESPECIALIDADES_PARTICIPANTE"]["ESPECIALIDAD"][$spa]["RESULTADOS"]["PUNTUACION_FINAL"];

}


if ($idspa=$accion["PARTICIPANTES"]["PARTICIPANTE"][$pa]["ESPECIALIDADES_PARTICIPANTE"]["ESPECIALIDAD"][$spa]){

}else {

$idspa= null;

}

if (empty ($accion["PARTICIPANTES"]["PARTICIPANTE"][$pa]["ESPECIALIDADES_PARTICIPANTE"]["ESPECIALIDAD"][$spa]["TUTORIAS_PRESENCIALES"]["TUTORIA_PRESENCIAL"])){

$idspaTut= null;

}else {

$idspaTut=$accion["PARTICIPANTES"]["PARTICIPANTE"][$pa]["ESPECIALIDADES_PARTICIPANTE"]["ESPECIALIDAD"][$spa]["TUTORIAS_PRESENCIALES"]["TUTORIA_PRESENCIAL"];

}

if(empty ($accion["PARTICIPANTES"]["PARTICIPANTE"][$pa]["ESPECIALIDADES_PARTICIPANTE"]["ESPECIALIDAD"][$spa]["FECHA_ALTA"])){

$idspa31= null;

}else{

$idspa31=$accion["PARTICIPANTES"]["PARTICIPANTE"][$pa]["ESPECIALIDADES_PARTICIPANTE"]["ESPECIALIDAD"][$spa]["FECHA_ALTA"];

}

if(empty ($accion["PARTICIPANTES"]["PARTICIPANTE"][$pa]["ESPECIALIDADES_PARTICIPANTE"]["ESPECIALIDAD"][$spa]["FECHA_BAJA"])){

$idspa32= null;

}else{

$idspa32=$accion["PARTICIPANTES"]["PARTICIPANTE"][$pa]["ESPECIALIDADES_PARTICIPANTE"]["ESPECIALIDAD"][$spa]["FECHA_BAJA"];

}

$insertar_esp_part ="INSERT INTO especialidad_participante (ORIGEN_ESPECIALIDAD,AREA_PROFESIONAL,CODIGO_ESPECIALIDAD,FECHA_ALTA,FECHA_BAJA,ORIGEN_CENTRO,CODIGO_CENTRO,FECHA_INICIO_T,FECHA_FIN_T,ORIGEN_CENTRO_EX,CODIGO_CENTRO_EX,FECHA_INICIO_EX,FECHA_FIN_EX,RESULTADO_FINAL,CALIFICACION_FINAL,PUNTUACION_FINAL,REF_PARTICIPANTE,REF_ACCION) VALUES ('".$idspa["ID_ESPECIALIDAD"]["ORIGEN_ESPECIALIDAD"]."','".$idspa["ID_ESPECIALIDAD"]["AREA_PROFESIONAL"]."','".$idspa["ID_ESPECIALIDAD"]["CODIGO_ESPECIALIDAD"]."','".$idspa31."','".$idspa32."','".$idspaTut["CENTRO_PRESENCIAL_TUTORIA"]["ORIGEN_CENTRO"]."','".$idspaTut["CENTRO_PRESENCIAL_TUTORIA"]["CODIGO_CENTRO"]."','".$idspaTut["FECHA_INICIO"]."','".$idspaTut["FECHA_FIN"]."','".$idspa1["CENTRO_PRESENCIAL_EVALUACION"]["ORIGEN_CENTRO"]."','".$idspa1["CENTRO_PRESENCIAL_EVALUACION"]["CODIGO_CENTRO"]."','".$idspa1["FECHA_INICIO"]."','".$idspa1["FECHA_FIN"]."','".$idspa2["RESULTADO_FINAL"]."','".$idspa21."','".$idspa22."','".$id_esp_part."','".$id."')";

$resultadoEspePart=mysql_query($insertar_esp_part)or die(mysql_error());

////////////////////////////////////////////INSERTAR LOS VALORES DE LAS ESPECIALIDADES PARTICIPANTE TUTORIAS PRESENCIALES////////////////////////////////////////////////

/* $consulta_tutoria_presencial = "SELECT * from especialidad_participante WHERE CODIGO_ESPECIALIDAD = '".$idspa["ID_ESPECIALIDAD"]["CODIGO_ESPECIALIDAD"]."' AND REF_PARTICIPANTE = '".$id_esp_part."'";

$resultado_tutoria_presencial = mysql_query($consulta_tutoria_presencial);

$tutoria_presencial = mysql_fetch_array($resultado_tutoria_presencial);

$id_variable = $tutoria_presencial["ID_ESP_PART"];

if (isset($idspa["TUTORIAS_PRESENCIALES"]["TUTORIA_PRESENCIAL"])) {

$tp1=$idspa["TUTORIAS_PRESENCIALES"]["TUTORIA_PRESENCIAL"];

$tp21 = count($tp1);

for( $tpa1 = 0; $tpa1 < $tp21; $tpa1++){

if (!empty ($idspa["TUTORIAS_PRESENCIALES"]["TUTORIA_PRESENCIAL"][$tpa1]["CENTRO_PRESENCIAL_TUTORIA"]["ORIGEN_CENTRO"])){

$id_tut_centro1= NULL;

} else {

$id_tut_centro1=$idspa["TUTORIAS_PRESENCIALES"]["TUTORIA_PRESENCIAL"][$tpa1]["CENTRO_PRESENCIAL_TUTORIA"]["ORIGEN_CENTRO"];

}



if ($id_tut_centro2=$idspa["TUTORIAS_PRESENCIALES"]["TUTORIA_PRESENCIAL"][$tpa1]["CENTRO_PRESENCIAL_TUTORIA"]["CODIGO_CENTRO"]){

} else {

$id_tut_centro2= NULL;

}

if ($id_tut1=$idspa["TUTORIAS_PRESENCIALES"]["TUTORIA_PRESENCIAL"][$tpa1]["FECHA_INICIO"]){

} else {

$id_tut1= NULL;

}


if ($id_tut2=$idspa["TUTORIAS_PRESENCIALES"]["TUTORIA_PRESENCIAL"][$tpa1]["FECHA_FIN"]){

} else {

$id_tut2= NULL;

}

$insertar_tut_pres ="INSERT INTO tutorias_presenciales (ORIGEN_CENTRO,CODIGO_CENTRO,FECHA_INICIO,FECHA_FIN) VALUES ('".$id_tut_centro1."','".$id_tut_centro2."','".$id_tut1."','".$id_tut2."')";

$resultadotutpres=mysql_query($insertar_tut_pres);

}

}*/

  }

   }

///////////////////////////////////// LA BUSQUEDA DE LOS PARTICIPANTES Y SUS HIJOS //////////////////////

$list31 = array();

$c31= "SELECT * FROM especialidad_participante WHERE REF_PARTICIPANTE='".$id_esp_part."' AND REF_ACCION = '".$id."'";

$r31=mysql_query($c31) or die(mysql_error());

while($row31 = mysql_fetch_assoc($r31)){ 

array_push($list31, array(

'ID_ESPECIALIDAD' => array('ORIGEN_ESPECIALIDAD'  => $row31['ORIGEN_ESPECIALIDAD'], 'AREA_PROFESIONAL' => $row31['AREA_PROFESIONAL'], 'CODIGO_ESPECIALIDAD' => $row31['CODIGO_ESPECIALIDAD']),

'FECHA_ALTA'  => $row31['FECHA_ALTA'], 

'FECHA_BAJA' => $row31['FECHA_BAJA'],

'TUTORIAS_PRESENCIALES' => array(

'TUTORIA_PRESENCIAL' => array (

'CENTRO_PRESENCIAL_TUTORIA' => array('ORIGEN_CENTRO'  => $row31['ORIGEN_CENTRO'], 'CODIGO_CENTRO' => $row31['CODIGO_CENTRO']),

  'FECHA_INICIO'  => $row31['FECHA_INICIO_T'], 

   'FECHA_FIN' => $row31['FECHA_FIN_T'])),

'EVALUACION_FINAL' => array(

'CENTRO_PRESENCIAL_EVALUACION' => array('ORIGEN_CENTRO'  => $row31['ORIGEN_CENTRO_EX'], 'CODIGO_CENTRO' => $row31['CODIGO_CENTRO_EX']),

'FECHA_INICIO'  => $row31['FECHA_INICIO_EX'], 

'FECHA_FIN' => $row31['FECHA_FIN_EX']),

'RESULTADOS' => array(

'RESULTADO_FINAL' => $row31['RESULTADO_FINAL'],

'CALIFICACION_FINAL'  => $row31['CALIFICACION_FINAL'], 

'PUNTUACION_FINAL' => $row31['PUNTUACION_FINAL']))

);

}

$consultaParticipante = "SELECT * from participante WHERE NUM_DOCUMENTO = '".$idparti["NUM_DOCUMENTO"]."' AND REF_ACCION = '".$id."'";

$resultadoParticipante = mysql_query($consultaParticipante);

while($row3 = mysql_fetch_assoc($resultadoParticipante)) {

 

    array_push($list3, array(

'ID_PARTICIPANTE' => array('TIPO_DOCUMENTO'  => $row3['TIPO_DOCUMENTO'], 'NUM_DOCUMENTO' => $row3['NUM_DOCUMENTO'], 'LETRA_NIF' => $row3['LETRA_NIF']),

'INDICADOR_COMPETENCIAS_CLAVE'  => $row3['INDICADOR_COMPETENCIAS_CLAVE'],

'CONTRATO_FORMACION' => array(

'ID_CONTRATO_CFA' => $row3['ID_CONTRATO_CFA'],

'CIF_EMPRESA' => $row3['CIF_EMPRESA'],

'ID_TUTOR_EMPRESA' => array('TIPO_DOCUMENTO'  => $row3['TIPO_DOCUMENTO_TE'], 'NUM_DOCUMENTO' => $row3['NUM_DOCUMENTO_TE'], 'LETRA_NIF' => $row3['LETRA_NIF_TE']),

'ID_TUTOR_FORMACION' => array('TIPO_DOCUMENTO'  => $row3['TIPO_DOCUMENTO_TF'], 'NUM_DOCUMENTO' => $row3['NUM_DOCUMENTO_TF'], 'LETRA_NIF' => $row3['LETRA_NIF_TF'])),

'ESPECIALIDADES_PARTICIPANTE' => array('ESPECIALIDAD' => $list31)

));  

}

  }

///////////////////////////////////// LA BUSQUEDA DE LOS PARTICIPANTES Y SUS HIJOS //////////////////////

}

return array('RESPUESTA_OBT_ACCION' => array( 

            'CODIGO_RETORNO' => 0,

            'ETIQUETA_ERROR' => "Correcto", 

'ACCION_FORMATIVA' => array(

                'ID_ACCION' => array('ORIGEN_ACCION' => $res['ORIGEN_ACCION'], 'CODIGO_ACCION' => $res['CODIGO_ACCION']),

                'SITUACION' => $res['SITUACION'],

                'ID_ESPECIALIDAD_PRINCIPAL' => array('ORIGEN_ESPECIALIDAD' => $res['ORIGEN_ESPECIALIDAD'], 'AREA_PROFESIONAL' => $res['AREA_PROFESIONAL'], 'CODIGO_ESPECIALIDAD' => $res['CODIGO_ESPECIALIDAD']),

                'DURACION' => $res['DURACION'],

                'FECHA_INICIO' => $res['FECHA_INICIO'],

'FECHA_FIN' => $res['FECHA_FIN'],

'IND_ITINERARIO_COMPLETO' => $res['IND_ITINERARIO_COMPLETO'],

'TIPO_FINANCIACION' => $res['TIPO_FINANCIACION'],

'NUMERO_ASISTENTES' => $res['NUMERO_ASISTENTES'],

'DESCRIPCION_ACCION' => array('DENOMINACION_ACCION' => $res['DENOMINACION_ACCION'], 'INFORMACION_GENERAL' => $res['INFORMACION_GENERAL'], 'HORARIOS' => $res['HORARIOS'], 'REQUISITOS' => $res['REQUISITOS'], 'CONTACTO_ACCION' => $res['CONTACTO_ACCION']),

'ESPECIALIDADES_ACCION' => array('ESPECIALIDAD' => $list),

'PARTICIPANTES' => array ('PARTICIPANTE' => $list3)

)));

}else {

return array('RESPUESTA_OBT_ACCION' => array( 

            'CODIGO_RETORNO' => 1,

            'ETIQUETA_ERROR' => false 

/*'ACCION_FORMATIVA' => null*/));

}


  }


 function obtenerAccion($accion) {

$res = array();

    $consultaAccion = "SELECT * from accion_formativa WHERE ORIGEN_ACCION = '".$accion['ORIGEN_ACCION']."' AND CODIGO_ACCION = '".$accion['CODIGO_ACCION']."'";

$resultadoNuevaAccion = mysql_query($consultaAccion);

$naccion = mysql_fetch_array($resultadoNuevaAccion);

$id = $naccion['id'];

$num = mysql_num_rows($resultadoNuevaAccion);

if ($num != '1') {

return array('RESPUESTA_OBT_ACCION' => array( 

            'CODIGO_RETORNO' => 1,

            'ETIQUETA_ERROR' => false 

));

}else{

           $res["ORIGEN_ACCION"] = $naccion["ORIGEN_ACCION"];

  $res["CODIGO_ACCION"] = $naccion["CODIGO_ACCION"];

$res["SITUACION"] = $naccion["SITUACION"];

$res["ORIGEN_ESPECIALIDAD"] = $naccion["ORIGEN_ESPECIALIDAD"];

$res["AREA_PROFESIONAL"] = $naccion["AREA_PROFESIONAL"];

$res["CODIGO_ESPECIALIDAD"] = $naccion["CODIGO_ESPECIALIDAD"];

$res["DURACION"] = $naccion["DURACION"];

$res["FECHA_INICIO"] = $naccion["FECHA_INICIO"];

$res["FECHA_FIN"] = $naccion["FECHA_FIN"];

$res["IND_ITINERARIO_COMPLETO"] = $naccion["IND_ITINERARIO_COMPLETO"];

$res["TIPO_FINANCIACION"] = $naccion["TIPO_FINANCIACION"];

$res["NUMERO_ASISTENTES"] = $naccion["NUMERO_ASISTENTES"];

$res["DENOMINACION_ACCION"] = $naccion["DENOMINACION_ACCION"];

$res["INFORMACION_GENERAL"] = $naccion["INFORMACION_GENERAL"];

$res["HORARIOS"] = $naccion["HORARIOS"];

$res["REQUISITOS"] = $naccion["REQUISITOS"];

$res["CONTACTO_ACCION"] =$naccion["CONTACTO_ACCION"];

$list1= array();

       

$list= array();

$list2= array();

       ////////////////////////// //INSERTAR LOS VALORES DE LAS ESPECIALIDADES YA ESTAN OK OK OK //////////////////////////////////////////////

 

$c4 = "SELECT * from especialidad WHERE REF_ACCION = '".$id."'";

$r4 = mysql_query($c4);

 

 

$row0 = mysql_fetch_array($r4);

$c2 = "SELECT * from centro_presencial WHERE REF_ESPECIALIDAD = '".$row0['ID_ESPECIALIDAD']."' AND REF_ACCION = '".$id."'";

$r2 = mysql_query($c2);

while ($row1 = mysql_fetch_array($r2)){       

array_push ($list1, array ('ORIGEN_CENTRO' => 20, 'CODIGO_CENTRO' => $row1['CODIGO_CENTRO'])) ;

}

$consultaTutor = "SELECT * from tutor_formador WHERE REF_ESPECIALIDAD = '".$row0['ID_ESPECIALIDAD']."' AND REF_ACCION = '".$id."'";

$resultadoTutor = mysql_query($consultaTutor);

while ($row2 = mysql_fetch_assoc($resultadoTutor)){

array_push($list2, array(

'ID_TUTOR' => array(

'TIPO_DOCUMENTO' => $row2['TIPO_DOCUMENTO'], 

'NUM_DOCUMENTO' => $row2['NUM_DOCUMENTO'], 

'LETRA_NIF' => $row2['LETRA_NIF']),

'ACREDITACION_TUTOR' => $row2['ACREDITACION_TUTOR'],

'EXPERIENCIA_PROFESIONAL' => $row2['EXPERIENCIA_PROFESIONAL'],

'COMPETENCIA_DOCENTE' => $row2['COMPETENCIA_DOCENTE'],

'EXPERIENCIA_MODALIDAD_TELEFORMACION' => $row2['EXPERIENCIA_MODALIDAD_TELEFORMACION'],

'FORMACION_MODALIDAD_TELEFORMACION' => $row2['FORMACION_MODALIDAD_TELEFORMACION']));

}


   

while ($row = mysql_fetch_array($r4)){

$list[]= array(

'ID_ESPECIALIDAD' => array ( 

'ORIGEN_ESPECIALIDAD' => $row['ORIGEN_ESPECIALIDAD'], 

'AREA_PROFESIONAL' => $row['AREA_PROFESIONAL'], 

'CODIGO_ESPECIALIDAD' => $row['CODIGO_ESPECIALIDAD']),

'CENTRO_IMPARTICION' => array(

'ORIGEN_CENTRO' => $row['ORIGEN_CENTRO'], 

'CODIGO_CENTRO' => $row['CODIGO_CENTRO']),

'FECHA_INICIO' => $row['FECHA_INICIO'],

'FECHA_FIN' => $row['FECHA_FIN'],

'MODALIDAD_IMPARTICION' => $row['MODALIDAD_IMPARTICION'],

'DATOS_DURACION' => array(

'HORAS_PRESENCIAL' => $row['HORAS_PRESENCIAL'], 'HORAS_TELEFORMACION' => $row['HORAS_TELEFORMACION']),

//HAY QUE GENERAR CONSULTAS

'CENTROS_SESIONES_PRESENCIALES' => array( 

'CENTRO_PRESENCIAL'=> $list1),

// HAY QUE GENERAR LAS CONSULTAS PARA LOS TUTORES

'TUTORES_FORMADORES' => array(

'TUTOR_FORMADOR' => $list2),

'USO' => array(

'HORARIO_MANANA' => array(

'NUM_PARTICIPANTES' => $row['NUM_PARTICIPANTES_M'], 

'NUMERO_ACCESOS' => $row['NUMERO_ACCESOS_M'], 

'DURACION_TOTAL' => $row['DURACION_TOTAL_M']),

'HORARIO_TARDE' => array(

'NUM_PARTICIPANTES' => $row['NUM_PARTICIPANTES_T'], 

'NUMERO_ACCESOS' => $row['NUMERO_ACCESOS_T'], 

'DURACION_TOTAL' => $row['DURACION_TOTAL_T']),

'HORARIO_NOCHE' => array(

'NUM_PARTICIPANTES' => $row['NUM_PARTICIPANTES_N'], 

'NUMERO_ACCESOS' => $row['NUMERO_ACCESOS_N'], 

'DURACION_TOTAL' => $row['DURACION_TOTAL_N']),

'SEGUIMIENTO_EVALUACION' => array(

'NUM_PARTICIPANTES' => $row['NUM_PARTICIPANTES_S'], 

'NUMERO_ACTIVIDADES_APRENDIZAJE' => $row['NUMERO_ACTIVIDADES_APRENDIZAJE_S'], 

'NUMERO_INTENTOS' => $row['NUMERO_INTENTOS_S'], 

'NUMERO_ACTIVIDADES_EVALUACION' => $row['NUMERO_ACTIVIDADES_EVALUACION_S']))

);

 

 }

   

 


////////////////////////////////////////////////////////////////////////////////

$list31 = array();

$consultaParticipante2 = "SELECT * from participante WHERE REF_ACCION = '".$id."'";

$resultadoParticipante2 = mysql_query($consultaParticipante2);

$espe_part2=mysql_fetch_array($resultadoParticipante2);

$c31= "SELECT * FROM especialidad_participante WHERE REF_PARTICIPANTE='".$espe_part2["ID_PARTICIPANTE"]."'";

$r31=mysql_query($c31) or die(mysql_error());

while($row31 = mysql_fetch_assoc($r31)){ 

array_push($list31, array(

'ID_ESPECIALIDAD' => array('ORIGEN_ESPECIALIDAD'  => $row31['ORIGEN_ESPECIALIDAD'], 'AREA_PROFESIONAL' => $row31['AREA_PROFESIONAL'], 'CODIGO_ESPECIALIDAD' => $row31['CODIGO_ESPECIALIDAD']),

'FECHA_ALTA'  => $row31['FECHA_ALTA'], 

'FECHA_BAJA' => $row31['FECHA_BAJA'],

'TUTORIAS_PRESENCIALES' => array(

'TUTORIA_PRESENCIAL' => array (

'CENTRO_PRESENCIAL_TUTORIA' => array('ORIGEN_CENTRO'  => $row31['ORIGEN_CENTRO'], 'CODIGO_CENTRO' => $row31['CODIGO_CENTRO']),

  'FECHA_INICIO'  => $row31['FECHA_INICIO_T'], 

   'FECHA_FIN' => $row31['FECHA_FIN_T'])),

'EVALUACION_FINAL' => array(

'CENTRO_PRESENCIAL_EVALUACION' => array('ORIGEN_CENTRO'  => $row31['ORIGEN_CENTRO_EX'], 'CODIGO_CENTRO' => $row31['CODIGO_CENTRO_EX']),

'FECHA_INICIO'  => $row31['FECHA_INICIO_EX'], 

'FECHA_FIN' => $row31['FECHA_FIN_EX']),

'RESULTADOS' => array(

'RESULTADO_FINAL' => $row31['RESULTADO_FINAL'],

'CALIFICACION_FINAL'  => $row31['CALIFICACION_FINAL'], 

'PUNTUACION_FINAL' => $row31['PUNTUACION_FINAL'])

));

}

 

$list3 = array();

$consultaParticipante = "SELECT * from participante WHERE REF_ACCION = '".$id."'";

$resultadoParticipante = mysql_query($consultaParticipante);

while($row3 = mysql_fetch_assoc($resultadoParticipante)) {

 

    array_push($list3, array(

'ID_PARTICIPANTE' => array('TIPO_DOCUMENTO'  => $row3['TIPO_DOCUMENTO'], 'NUM_DOCUMENTO' => $row3['NUM_DOCUMENTO'], 'LETRA_NIF' => $row3['LETRA_NIF']),

'INDICADOR_COMPETENCIAS_CLAVE'  => $row3['INDICADOR_COMPETENCIAS_CLAVE'],

'CONTRATO_FORMACION' => array(

'ID_CONTRATO_CFA' => $row3['ID_CONTRATO_CFA'],

'CIF_EMPRESA' => $row3['CIF_EMPRESA'],

'ID_TUTOR_EMPRESA' => array('TIPO_DOCUMENTO'  => $row3['TIPO_DOCUMENTO_TE'], 'NUM_DOCUMENTO' => $row3['NUM_DOCUMENTO_TE'], 'LETRA_NIF' => $row3['LETRA_NIF_TE']),

'ID_TUTOR_FORMACION' => array('TIPO_DOCUMENTO'  => $row3['TIPO_DOCUMENTO_TF'], 'NUM_DOCUMENTO' => $row3['NUM_DOCUMENTO_TF'], 'LETRA_NIF' => $row3['LETRA_NIF_TF'])),

'ESPECIALIDADES_PARTICIPANTE' => array('ESPECIALIDAD' => $list31)

));  

}


         return array('RESPUESTA_OBT_ACCION' => array( 

            'CODIGO_RETORNO' => 0,

            'ETIQUETA_ERROR' => "Correcto", 

'ACCION_FORMATIVA' => array(

               'ID_ACCION' => array('ORIGEN_ACCION' => $res['ORIGEN_ACCION'], 'CODIGO_ACCION' => $res['CODIGO_ACCION']),

                'SITUACION' => $res['SITUACION'],

                'ID_ESPECIALIDAD_PRINCIPAL' => array('ORIGEN_ESPECIALIDAD' => $res['ORIGEN_ESPECIALIDAD'], 'AREA_PROFESIONAL' => $res['AREA_PROFESIONAL'], 'CODIGO_ESPECIALIDAD' => $res['CODIGO_ESPECIALIDAD']),

                'DURACION' => $res['DURACION'],

                'FECHA_INICIO' => $res['FECHA_INICIO'],

'FECHA_FIN' => $res['FECHA_FIN'],

'IND_ITINERARIO_COMPLETO' => $res['IND_ITINERARIO_COMPLETO'],

'TIPO_FINANCIACION' => $res['TIPO_FINANCIACION'],

'NUMERO_ASISTENTES' => $res['NUMERO_ASISTENTES'],

'DESCRIPCION_ACCION' => array('DENOMINACION_ACCION' => $res['DENOMINACION_ACCION'], 'INFORMACION_GENERAL' => $res['INFORMACION_GENERAL'], 'HORARIOS' => $res['HORARIOS'], 'REQUISITOS' => $res['REQUISITOS'], 'CONTACTO_ACCION' => $res['CONTACTO_ACCION']),

'ESPECIALIDADES_ACCION' => array('ESPECIALIDAD' => $list),

'PARTICIPANTES' => array ('PARTICIPANTE' => $list3)

)));

}

 }


function obtenerListaAcciones() {


    $sql = " SELECT * FROM accion_formativa WHERE id>0";

    $list = array();

$results = mysql_query($sql);




while($row = mysql_fetch_assoc($results)) {

 

    array_push($list, array('ORIGEN_ACCION' => $row['ORIGEN_ACCION'], 'CODIGO_ACCION' => $row['CODIGO_ACCION']));


}



             

     

return array('RESPUESTA_OBT_LISTA_ACCIONES' => array(

'CODIGO_RETORNO' => 0,

           'ETIQUETA_ERROR' => "Correcto",

'ID_ACCION' => $list));

        

      

          



       

 

 

 

 }

 

function eliminarAccion($accion) {

    $consultaAccion = "SELECT * from accion_formativa WHERE ORIGEN_ACCION = '".$accion["ORIGEN_ACCION"]."' AND CODIGO_ACCION = '".$accion["CODIGO_ACCION"]."'";

$resultadoNuevaAccion = mysql_query($consultaAccion);

$naccion = mysql_fetch_array($resultadoNuevaAccion);

$id = $naccion["id"];

$consultaBorrado="DELETE FROM accion_formativa WHERE accion_formativa.id = '".$id."'";         

  $borradoAccion=mysql_query($consultaBorrado);   

$consultaBorrado1="DELETE FROM especialidad WHERE REF_ACCION = '".$id."'";         

  $borradoAccion1=mysql_query($consultaBorrado1); 

$consultaBorrado12="DELETE FROM centro_presencial WHERE REF_ACCION = '".$id."'";         

  $borradoAccion12=mysql_query($consultaBorrado12); 

$consultaBorrado121="DELETE FROM esp_centro_presencial WHERE REF_ACCION = '".$id."'";         

  $borradoAccion121=mysql_query($consultaBorrado121); 

  

$consultaBorrado13="DELETE FROM tutor_formador WHERE REF_ACCION = '".$id."'";         

  $borradoAccion13=mysql_query($consultaBorrado13);    

 

$consultaBorrado2="DELETE FROM participante WHERE REF_ACCION = '".$id."'";         

  $borradoAccion2=mysql_query($consultaBorrado2);  

  

$consultaBorrado2="DELETE FROM especialidad_participante WHERE REF_ACCION = '".$id."'";         

  $borradoAccion2=mysql_query($consultaBorrado2);  

  

 

return array('RESPUESTA_ELIMINAR_ACCION' => array(

'CODIGO_RETORNO' => '0',

          //  'ETIQUETA_ERROR' => "Correcto",

));

          



       

 

 

 

 }

 





$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';


$server->service($HTTP_RAW_POST_DATA);






?>  


La base de datos 


--

-- Base de datos: `sepe`

--


-- --------------------------------------------------------


--

-- Estructura de tabla para la tabla `accion_formativa`

--


CREATE TABLE `accion_formativa` (

  `id` int(11) NOT NULL,

  `ORIGEN_ACCION` char(2) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

  `CODIGO_ACCION` char(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

  `SITUACION` char(2) CHARACTER SET latin1 DEFAULT NULL,

  `ORIGEN_ESPECIALIDAD` char(2) CHARACTER SET latin1 DEFAULT NULL,

  `AREA_PROFESIONAL` varchar(4) CHARACTER SET latin1 DEFAULT NULL,

  `CODIGO_ESPECIALIDAD` varchar(8) CHARACTER SET latin1 DEFAULT NULL,

  `DURACION` int(11) DEFAULT NULL,

  `FECHA_INICIO` varchar(10) DEFAULT NULL,

  `FECHA_FIN` varchar(10) DEFAULT NULL,

  `IND_ITINERARIO_COMPLETO` varchar(2) CHARACTER SET latin1 DEFAULT NULL,

  `TIPO_FINANCIACION` varchar(2) CHARACTER SET latin1 DEFAULT NULL,

  `NUMERO_ASISTENTES` tinyint(1) DEFAULT NULL,

  `DENOMINACION_ACCION` varchar(255) CHARACTER SET latin1 DEFAULT NULL,

  `INFORMACION_GENERAL` longtext CHARACTER SET latin1,

  `HORARIOS` varchar(255) CHARACTER SET latin1 DEFAULT NULL,

  `REQUISITOS` longtext CHARACTER SET latin1,

  `CONTACTO_ACCION` varchar(255) CHARACTER SET latin1 DEFAULT NULL,

  `ID_CENTRO` int(11) NOT NULL DEFAULT '1'

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


-- --------------------------------------------------------


--

-- Estructura de tabla para la tabla `centro_presencial`

--


CREATE TABLE `centro_presencial` (

  `ID_CENTRO` int(11) NOT NULL,

  `ORIGEN_CENTRO` varchar(2) NOT NULL,

  `CODIGO_CENTRO` char(10) NOT NULL,

  `REF_ESPECIALIDAD` int(11) NOT NULL,

  `REF_ACCION` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;


-- --------------------------------------------------------


--

-- Estructura de tabla para la tabla `especialidad`

--


CREATE TABLE `especialidad` (

  `ID_ESPECIALIDAD` int(11) NOT NULL,

  `ORIGEN_ESPECIALIDAD` char(2) NOT NULL,

  `AREA_PROFESIONAL` varchar(4) NOT NULL,

  `CODIGO_ESPECIALIDAD` varchar(8) NOT NULL,

  `ORIGEN_CENTRO` char(2) NOT NULL,

  `CODIGO_CENTRO` char(10) NOT NULL,

  `FECHA_INICIO` varchar(10) NOT NULL,

  `FECHA_FIN` varchar(10) NOT NULL,

  `MODALIDAD_IMPARTICION` varchar(2) NOT NULL,

  `HORAS_PRESENCIAL` varchar(5) NOT NULL,

  `HORAS_TELEFORMACION` varchar(5) NOT NULL,

  `NUM_PARTICIPANTES_M` varchar(5) NOT NULL,

  `NUMERO_ACCESOS_M` varchar(5) NOT NULL,

  `DURACION_TOTAL_M` varchar(5) NOT NULL,

  `NUM_PARTICIPANTES_T` varchar(5) NOT NULL,

  `NUMERO_ACCESOS_T` varchar(5) NOT NULL,

  `DURACION_TOTAL_T` varchar(5) NOT NULL,

  `NUM_PARTICIPANTES_N` varchar(5) NOT NULL,

  `NUMERO_ACCESOS_N` varchar(5) NOT NULL,

  `DURACION_TOTAL_N` varchar(5) NOT NULL,

  `NUM_PARTICIPANTES_S` varchar(5) NOT NULL,

  `NUMERO_ACTIVIDADES_APRENDIZAJE_S` varchar(5) NOT NULL,

  `NUMERO_INTENTOS_S` varchar(5) NOT NULL,

  `NUMERO_ACTIVIDADES_EVALUACION_S` varchar(5) NOT NULL,

  `REF_ACCION` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;


-- --------------------------------------------------------


--

-- Estructura de tabla para la tabla `especialidad_participante`

--


CREATE TABLE `especialidad_participante` (

  `ID_ESP_PART` int(11) NOT NULL,

  `ORIGEN_ESPECIALIDAD` char(2) NOT NULL,

  `AREA_PROFESIONAL` varchar(4) NOT NULL,

  `CODIGO_ESPECIALIDAD` varchar(8) NOT NULL,

  `FECHA_ALTA` varchar(10) NOT NULL,

  `FECHA_BAJA` varchar(10) NOT NULL,

  `ORIGEN_CENTRO_EX` varchar(2) NOT NULL,

  `CODIGO_CENTRO_EX` varchar(10) NOT NULL,

  `FECHA_INICIO_EX` varchar(10) NOT NULL,

  `FECHA_FIN_EX` varchar(10) NOT NULL,

  `RESULTADO_FINAL` varchar(1) NOT NULL,

  `CALIFICACION_FINAL` varchar(4) NOT NULL,

  `PUNTUACION_FINAL` varchar(4) NOT NULL,

  `ORIGEN_CENTRO` varchar(2) NOT NULL,

  `CODIGO_CENTRO` varchar(10) NOT NULL,

  `FECHA_INICIO_T` varchar(10) NOT NULL,

  `FECHA_FIN_T` varchar(10) NOT NULL,

  `REF_PARTICIPANTE` int(11) NOT NULL,

  `REF_ACCION` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;


-- --------------------------------------------------------


--

-- Estructura de tabla para la tabla `participante`

--


CREATE TABLE `participante` (

  `ID_PARTICIPANTE` int(11) NOT NULL,

  `TIPO_DOCUMENTO` varchar(1) NOT NULL,

  `NUM_DOCUMENTO` varchar(10) NOT NULL,

  `LETRA_NIF` varchar(1) NOT NULL,

  `INDICADOR_COMPETENCIAS_CLAVE` varchar(2) NOT NULL,

  `ID_CONTRATO_CFA` varchar(14) NOT NULL,

  `CIF_EMPRESA` varchar(9) NOT NULL,

  `TIPO_DOCUMENTO_TE` varchar(1) NOT NULL,

  `NUM_DOCUMENTO_TE` varchar(10) NOT NULL,

  `LETRA_NIF_TE` varchar(1) NOT NULL,

  `TIPO_DOCUMENTO_TF` varchar(1) NOT NULL,

  `NUM_DOCUMENTO_TF` varchar(10) NOT NULL,

  `LETRA_NIF_TF` varchar(1) NOT NULL,

  `REF_ACCION` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;


-- --------------------------------------------------------


--

-- Estructura de tabla para la tabla `sepe_centro`

--


CREATE TABLE `sepe_centro` (

  `ID_CENTRO` int(11) NOT NULL,

  `ORIGEN_CENTRO` varchar(2) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

  `CODIGO_CENTRO` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

  `NOMBRE_CENTRO` varchar(40) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

  `URL_PLATAFORMA` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

  `URL_SEGUIMIENTO` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

  `TELEFONO` varchar(15) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

  `EMAIL` varchar(250) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


-- --------------------------------------------------------


--

-- Estructura de tabla para la tabla `tutorias_presenciales`

--


CREATE TABLE `tutorias_presenciales` (

  `ID_TUTORIA` int(11) NOT NULL,

  `ORIGEN_CENTRO` varchar(2) NOT NULL,

  `CODIGO_CENTRO` varchar(10) NOT NULL,

  `FECHA_INICIO` varchar(10) NOT NULL,

  `FECHA_FIN` varchar(10) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;


-- --------------------------------------------------------


--

-- Estructura de tabla para la tabla `tutor_formador`

--


CREATE TABLE `tutor_formador` (

  `ID_TUTOR` int(11) NOT NULL,

  `TIPO_DOCUMENTO` varchar(1) NOT NULL,

  `NUM_DOCUMENTO` varchar(10) NOT NULL,

  `LETRA_NIF` varchar(1) NOT NULL,

  `ACREDITACION_TUTOR` longtext NOT NULL,

  `EXPERIENCIA_PROFESIONAL` double NOT NULL,

  `COMPETENCIA_DOCENTE` varchar(2) NOT NULL,

  `EXPERIENCIA_MODALIDAD_TELEFORMACION` int(5) NOT NULL,

  `FORMACION_MODALIDAD_TELEFORMACION` varchar(2) NOT NULL,

  `REF_ESPECIALIDAD` int(11) DEFAULT NULL,

  `REF_ACCION` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;


--

-- Índices para tablas volcadas

--


--

-- Indices de la tabla `accion_formativa`

--

ALTER TABLE `accion_formativa`

  ADD PRIMARY KEY (`id`);


--

-- Indices de la tabla `centro_presencial`

--

ALTER TABLE `centro_presencial`

  ADD PRIMARY KEY (`ID_CENTRO`);


--

-- Indices de la tabla `especialidad`

--

ALTER TABLE `especialidad`

  ADD PRIMARY KEY (`ID_ESPECIALIDAD`),

  ADD KEY `REF_ACCION` (`REF_ACCION`);


--

-- Indices de la tabla `especialidad_participante`

--

ALTER TABLE `especialidad_participante`

  ADD PRIMARY KEY (`ID_ESP_PART`);


--

-- Indices de la tabla `participante`

--

ALTER TABLE `participante`

  ADD PRIMARY KEY (`ID_PARTICIPANTE`);


--

-- Indices de la tabla `sepe_centro`

--

ALTER TABLE `sepe_centro`

  ADD PRIMARY KEY (`ID_CENTRO`);


--

-- Indices de la tabla `tutorias_presenciales`

--

ALTER TABLE `tutorias_presenciales`

  ADD PRIMARY KEY (`ID_TUTORIA`);


--

-- Indices de la tabla `tutor_formador`

--

ALTER TABLE `tutor_formador`

  ADD PRIMARY KEY (`ID_TUTOR`);


--

-- AUTO_INCREMENT de las tablas volcadas

--


--

-- AUTO_INCREMENT de la tabla `accion_formativa`

--

ALTER TABLE `accion_formativa`

  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--

-- AUTO_INCREMENT de la tabla `centro_presencial`

--

ALTER TABLE `centro_presencial`

  MODIFY `ID_CENTRO` int(11) NOT NULL AUTO_INCREMENT;

--

-- AUTO_INCREMENT de la tabla `especialidad`

--

ALTER TABLE `especialidad`

  MODIFY `ID_ESPECIALIDAD` int(11) NOT NULL AUTO_INCREMENT;

--

-- AUTO_INCREMENT de la tabla `especialidad_participante`

--

ALTER TABLE `especialidad_participante`

  MODIFY `ID_ESP_PART` int(11) NOT NULL AUTO_INCREMENT;

--

-- AUTO_INCREMENT de la tabla `participante`

--

ALTER TABLE `participante`

  MODIFY `ID_PARTICIPANTE` int(11) NOT NULL AUTO_INCREMENT;

--

-- AUTO_INCREMENT de la tabla `sepe_centro`

--

ALTER TABLE `sepe_centro`

  MODIFY `ID_CENTRO` int(11) NOT NULL AUTO_INCREMENT;

--

-- AUTO_INCREMENT de la tabla `tutorias_presenciales`

--

ALTER TABLE `tutorias_presenciales`

  MODIFY `ID_TUTORIA` int(11) NOT NULL AUTO_INCREMENT;

--

-- AUTO_INCREMENT de la tabla `tutor_formador`

--

ALTER TABLE `tutor_formador`

  MODIFY `ID_TUTOR` int(11) NOT NULL AUTO_INCREMENT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


Espero vuestras aportaciones modificaciones y correcciones

En respuesta a jose morales

Re: Crear nuevo módulo para homologar moodle

de Fernando Navarro Páez -

Hola Jose.

Como sugerencia usaría el acceso de Moodle a la base de datos y crearía un proyecto en Github.

Salu2

Fernando

En respuesta a Fernando Navarro Páez

Re: Crear nuevo módulo para homologar moodle

de jose morales -

Buenas Tardes Fernando:


Muchas gracias por tu respuesta, mi idea era trabajar en local para superar el test y luego realizar la implantación en moodle. De todas maneras donde estoy atascado en en ObtenerAccion, cuando tengo que mostrar los datos de los centros presenciales y tutores formadores me muestra para los 5 módulos formativos los mismos.

$list1= array();

$list= array();

$list2= array();

     

$c4 = "SELECT * from especialidad WHERE REF_ACCION = '".$id."'";

$r4 = mysql_query($c4);

 

 

$row0 = mysql_fetch_array($r4);

$c2 = "SELECT * from centro_presencial WHERE REF_ESPECIALIDAD = '".$row0['ID_ESPECIALIDAD']."' AND REF_ACCION = '".$id."'";

$r2 = mysql_query($c2);

while ($row1 = mysql_fetch_array($r2)){       

array_push ($list1, array ('ORIGEN_CENTRO' => 20, 'CODIGO_CENTRO' => $row1['CODIGO_CENTRO'])) ;

}

$consultaTutor = "SELECT * from tutor_formador WHERE REF_ESPECIALIDAD = '".$row0['ID_ESPECIALIDAD']."' AND REF_ACCION = '".$id."'";

$resultadoTutor = mysql_query($consultaTutor);

while ($row2 = mysql_fetch_assoc($resultadoTutor)){

array_push($list2, array(

'ID_TUTOR' => array(

'TIPO_DOCUMENTO' => $row2['TIPO_DOCUMENTO'], 

'NUM_DOCUMENTO' => $row2['NUM_DOCUMENTO'], 

'LETRA_NIF' => $row2['LETRA_NIF']),

'ACREDITACION_TUTOR' => $row2['ACREDITACION_TUTOR'],

'EXPERIENCIA_PROFESIONAL' => $row2['EXPERIENCIA_PROFESIONAL'],

'COMPETENCIA_DOCENTE' => $row2['COMPETENCIA_DOCENTE'],

'EXPERIENCIA_MODALIDAD_TELEFORMACION' => $row2['EXPERIENCIA_MODALIDAD_TELEFORMACION'],

'FORMACION_MODALIDAD_TELEFORMACION' => $row2['FORMACION_MODALIDAD_TELEFORMACION']));

}

   

while ($row = mysql_fetch_array($r4)){

$list[]= array(

'ID_ESPECIALIDAD' => array ( 

'ORIGEN_ESPECIALIDAD' => $row['ORIGEN_ESPECIALIDAD'], 

'AREA_PROFESIONAL' => $row['AREA_PROFESIONAL'], 

'CODIGO_ESPECIALIDAD' => $row['CODIGO_ESPECIALIDAD']),

'CENTRO_IMPARTICION' => array(

'ORIGEN_CENTRO' => $row['ORIGEN_CENTRO'], 

'CODIGO_CENTRO' => $row['CODIGO_CENTRO']),

'FECHA_INICIO' => $row['FECHA_INICIO'],

'FECHA_FIN' => $row['FECHA_FIN'],

'MODALIDAD_IMPARTICION' => $row['MODALIDAD_IMPARTICION'],

'DATOS_DURACION' => array(

'HORAS_PRESENCIAL' => $row['HORAS_PRESENCIAL'], 'HORAS_TELEFORMACION' => $row['HORAS_TELEFORMACION']),

//HAY QUE GENERAR CONSULTAS

'CENTROS_SESIONES_PRESENCIALES' => array( 

'CENTRO_PRESENCIAL'=> $list1),

// HAY QUE GENERAR LAS CONSULTAS PARA LOS TUTORES

'TUTORES_FORMADORES' => array(

'TUTOR_FORMADOR' => $list2),

'USO' => array(

'HORARIO_MANANA' => array(

'NUM_PARTICIPANTES' => $row['NUM_PARTICIPANTES_M'], 

'NUMERO_ACCESOS' => $row['NUMERO_ACCESOS_M'], 

'DURACION_TOTAL' => $row['DURACION_TOTAL_M']),

'HORARIO_TARDE' => array(

'NUM_PARTICIPANTES' => $row['NUM_PARTICIPANTES_T'], 

'NUMERO_ACCESOS' => $row['NUMERO_ACCESOS_T'], 

'DURACION_TOTAL' => $row['DURACION_TOTAL_T']),

'HORARIO_NOCHE' => array(

'NUM_PARTICIPANTES' => $row['NUM_PARTICIPANTES_N'], 

'NUMERO_ACCESOS' => $row['NUMERO_ACCESOS_N'], 

'DURACION_TOTAL' => $row['DURACION_TOTAL_N']),

'SEGUIMIENTO_EVALUACION' => array(

'NUM_PARTICIPANTES' => $row['NUM_PARTICIPANTES_S'], 

'NUMERO_ACTIVIDADES_APRENDIZAJE' => $row['NUMERO_ACTIVIDADES_APRENDIZAJE_S'], 

'NUMERO_INTENTOS' => $row['NUMERO_INTENTOS_S'], 

'NUMERO_ACTIVIDADES_EVALUACION' => $row['NUMERO_ACTIVIDADES_EVALUACION_S']))

);

 }

En las pruebas realizadas en SoapUI, me muestra esto:

 <ESPECIALIDADES_ACCION xmlns="">

                  <ESPECIALIDAD>

                     <ID_ESPECIALIDAD>

                        <ORIGEN_ESPECIALIDAD>20</ORIGEN_ESPECIALIDAD>

                        <AREA_PROFESIONAL>ADGD</AREA_PROFESIONAL>

                        <CODIGO_ESPECIALIDAD>MF0237_3</CODIGO_ESPECIALIDAD>

                     </ID_ESPECIALIDAD>

                     <CENTRO_IMPARTICION>

                        <ORIGEN_CENTRO>20</ORIGEN_CENTRO>

                        <CODIGO_CENTRO>8099999999</CODIGO_CENTRO>

                     </CENTRO_IMPARTICION>

                     <FECHA_INICIO>01/04/2014</FECHA_INICIO>

                     <FECHA_FIN>14/12/2014</FECHA_FIN>

                     <MODALIDAD_IMPARTICION>TF</MODALIDAD_IMPARTICION>

                     <DATOS_DURACION>

                        <HORAS_PRESENCIAL>4</HORAS_PRESENCIAL>

                        <HORAS_TELEFORMACION>206</HORAS_TELEFORMACION>

                     </DATOS_DURACION>

                     <CENTROS_SESIONES_PRESENCIALES>

                        <CENTRO_PRESENCIAL>

                           <ORIGEN_CENTRO>20</ORIGEN_CENTRO>

                           <CODIGO_CENTRO>0300000826</CODIGO_CENTRO>

                        </CENTRO_PRESENCIAL>

                        <CENTRO_PRESENCIAL>

                           <ORIGEN_CENTRO>20</ORIGEN_CENTRO>

                           <CODIGO_CENTRO>0300000521</CODIGO_CENTRO>

                        </CENTRO_PRESENCIAL>

                        <CENTRO_PRESENCIAL>

                           <ORIGEN_CENTRO>20</ORIGEN_CENTRO>

                           <CODIGO_CENTRO>0300000286</CODIGO_CENTRO>

                        </CENTRO_PRESENCIAL>

                        <CENTRO_PRESENCIAL>

                           <ORIGEN_CENTRO>20</ORIGEN_CENTRO>

                           <CODIGO_CENTRO>2800026431</CODIGO_CENTRO>

                        </CENTRO_PRESENCIAL>

                     </CENTROS_SESIONES_PRESENCIALES>

                     <TUTORES_FORMADORES/>

                     <USO>

                        <HORARIO_MANANA>

                           <NUM_PARTICIPANTES/>

                           <NUMERO_ACCESOS/>

                           <DURACION_TOTAL/>

                        </HORARIO_MANANA>

                        <HORARIO_TARDE>

                           <NUM_PARTICIPANTES/>

                           <NUMERO_ACCESOS/>

                           <DURACION_TOTAL/>

                        </HORARIO_TARDE>

                        <HORARIO_NOCHE>

                           <NUM_PARTICIPANTES/>

                           <NUMERO_ACCESOS/>

                           <DURACION_TOTAL/>

                        </HORARIO_NOCHE>

                        <SEGUIMIENTO_EVALUACION>

                           <NUM_PARTICIPANTES/>

                           <NUMERO_ACTIVIDADES_APRENDIZAJE/>

                           <NUMERO_INTENTOS/>

                           <NUMERO_ACTIVIDADES_EVALUACION/>

                        </SEGUIMIENTO_EVALUACION>

                     </USO>

                  </ESPECIALIDAD>

                  <ESPECIALIDAD>

                     <ID_ESPECIALIDAD>

                        <ORIGEN_ESPECIALIDAD>20</ORIGEN_ESPECIALIDAD>

                        <AREA_PROFESIONAL>ADGD</AREA_PROFESIONAL>

                        <CODIGO_ESPECIALIDAD>MF0238_3</CODIGO_ESPECIALIDAD>

                     </ID_ESPECIALIDAD>

                     <CENTRO_IMPARTICION>

                        <ORIGEN_CENTRO>20</ORIGEN_CENTRO>

                        <CODIGO_CENTRO>8099999999</CODIGO_CENTRO>

                     </CENTRO_IMPARTICION>

                     <FECHA_INICIO>01/04/2014</FECHA_INICIO>

                     <FECHA_FIN>14/12/2014</FECHA_FIN>

                     <MODALIDAD_IMPARTICION>TF</MODALIDAD_IMPARTICION>

                     <DATOS_DURACION>

                        <HORAS_PRESENCIAL>2</HORAS_PRESENCIAL>

                        <HORAS_TELEFORMACION>148</HORAS_TELEFORMACION>

                     </DATOS_DURACION>

                     <CENTROS_SESIONES_PRESENCIALES>

                        <CENTRO_PRESENCIAL>

                           <ORIGEN_CENTRO>20</ORIGEN_CENTRO>

                           <CODIGO_CENTRO>0300000826</CODIGO_CENTRO>

                        </CENTRO_PRESENCIAL>

                        <CENTRO_PRESENCIAL>

                           <ORIGEN_CENTRO>20</ORIGEN_CENTRO>

                           <CODIGO_CENTRO>0300000521</CODIGO_CENTRO>

                        </CENTRO_PRESENCIAL>

                        <CENTRO_PRESENCIAL>

                           <ORIGEN_CENTRO>20</ORIGEN_CENTRO>

                           <CODIGO_CENTRO>0300000286</CODIGO_CENTRO>

                        </CENTRO_PRESENCIAL>

                        <CENTRO_PRESENCIAL>

                           <ORIGEN_CENTRO>20</ORIGEN_CENTRO>

                           <CODIGO_CENTRO>2800026431</CODIGO_CENTRO>

                        </CENTRO_PRESENCIAL>

                     </CENTROS_SESIONES_PRESENCIALES>

                     <TUTORES_FORMADORES/>

                     <USO>

                        <HORARIO_MANANA>

                           <NUM_PARTICIPANTES/>

                           <NUMERO_ACCESOS/>

                           <DURACION_TOTAL/>

                        </HORARIO_MANANA>

                        <HORARIO_TARDE>

                           <NUM_PARTICIPANTES/>

                           <NUMERO_ACCESOS/>

                           <DURACION_TOTAL/>

                        </HORARIO_TARDE>

                        <HORARIO_NOCHE>

                           <NUM_PARTICIPANTES/>

                           <NUMERO_ACCESOS/>

                           <DURACION_TOTAL/>

                        </HORARIO_NOCHE>

                        <SEGUIMIENTO_EVALUACION>

                           <NUM_PARTICIPANTES/>

                           <NUMERO_ACTIVIDADES_APRENDIZAJE/>

                           <NUMERO_INTENTOS/>

                           <NUMERO_ACTIVIDADES_EVALUACION/>

                        </SEGUIMIENTO_EVALUACION>

                     </USO>

                  </ESPECIALIDAD>

Por terminar he creado el proyecto en gitHub y el enlace es https://github.com/jose-nagra/sepe_ws 


En respuesta a Eduardo Vilar Lagar

Re: Crear nuevo módulo para homologar moodle

de Carlos Carlos -

Buenas Tardes Eduardo.

Me encuentro en la misma situación que tu ahora mismo. Todo el test local lo paso adecuadamente, pero en el test online me aparece este error:

WSWS3713E: No se ha podido conectar con el host remoto xa000f.inem.es:8080. Se ha recibido el error siguiente: javax.net.ssl.SSLHandshakeException: General SSLEngine problem


En la aplicación no se registra ninguna petición y todo el problema parece ser del SSL, pero es oficial y está firmado, ya que sino, no funcionaría en el test con el kit de pruebas.

El SEPE aunque me ha respondido con un listado de checkpoints standar no me da respuesta al problema específico.

¿Pudiste resolver tu el problema? ¿Te han facilitado alguna información en este tiempo?

Saludos.

En respuesta a Carlos Carlos

Re: Crear nuevo módulo para homologar moodle

de Santi Boullosa -

Hola, soy Santi de Pontevedra (Teléfono 653944431). Me han encargado homologar el aula virtual de moodle de nuestra academia con el SEPE. Pero no tengo ni idea de esto de la homologación, la URL de seguimiento, etc. Cómo lo han solucionado otras academias de Moodle? Me puedes ayudar?

Gracias.