AnsweredAssumed Answered

Service Desk Propagacion de campos metodo y codigo de Resolucion de padre a Hijos.

Question asked by FSereno on Oct 24, 2018
Latest reply on Dec 14, 2018 by TMACUL

Hola, Es la primera vez que hago una consulta....

 

Vi que hay gente con problemas sobre este mismo tema.

Nosotros tenemos dos problemas diferentes.

En la versión 14.1, tenemos customizada la función.

en lugar de que se propage el estado y campos cuando se cierra, tenemos que se propague cuando se pone en resuelto. la verdad no se como se hizo, ni como se hace, ya que esta asi desde mucho antes que estemos nosotros.

pero no funciona bien.

El estado Resuelto y el campo Codigo de resolución se propaga OK, Si el incidente padre se reabre, se reabren también los Hijos. Lo que no funcióna es que no se propaga el campo Metodo de Resolución:

Tenemos el siguiente archivo .spl:

 

=================

alg::zstat_to_child(...)
{
string c_desc, c_num, c_origstatsym, c_type, p_num, p_stat, p_statsym, p_type, wc;
object c_dob, c_list, group_leader;
int c_count, i, cod_res;
uuid login_userid;
uuid group_uuid;

p_num = call_req_id.ref_num;
p_stat = call_req_id.status;
p_statsym = call_req_id.status.sym;
p_type = call_req_id.type.sym;
group_uuid = call_req_id.group;
cod_res = call_req_id.resolution_code;

wc = format("parent = '%s' AND status != '%s'", call_req_id, p_stat);


send_wait(0, top_object(), "call_attr", "cr", "current_user_id");
login_userid = msg[0];
send_wait(0, top_object(), "call_attr", "cr", "sync_fetch", "MLIST_STATIC", wc, -1,0);
c_count = msg[1];
c_list = msg[0];
if (c_count > 0) {
for(i=0;i< c_count;i++) {
send_wait(0, c_list, "dob_by_index", "DEFAULT", i, i);
c_dob = msg[0];
send_wait(0, c_dob, "get_attr_vals",3,"ref_num","type.sym","status.sym");
c_num = msg[3];
c_type = msg[6];
c_origstatsym = msg[9];
if (description == action_desc) {
c_desc = "Status changed from \'" + c_origstatsym + "\' to \'" + p_statsym + "\'" ;
} else {
c_desc = description;
}
c_desc = c_desc + " (Propagado desde el Padre " + p_type + " " + p_num + ")" ;
send_wait(0, top_object(), "get_co_group");
group_leader = msg[0];
send_wait(0, c_dob, "change_status", group_leader, login_userid, c_desc, p_stat, NULL);


send_wait(0, top_object(), "call_attr", "api", "update_object", login_userid, c_dob.persistent_id, NULL, group_leader, 0, "group",  call_req_id.group, "resolution_code", call_req_id.resolution_code);
   
send_wait(0, group_leader, 'checkin');

if (msg_error()) {
logf(ERROR, "error cambiando estado '%s' en hijo %s %s desde el padre %s %s - %s", p_statsym, c_type, c_num, p_type, p_num, msg[0]);
} else {
logf(SIGNIFICANT, "se cambio existosamente el estado '%s' a hijo %s %s desde el padre %s %s", p_statsym, c_type, c_num, p_type, p_num); }

 

=================

 

A fin de hacer pruebas, agregamos estas líneas;

met_res = call_req_id.resolution_method;

En esta linea int c_count, i, cod_res;  agregamos met_res

y esta línea:

send_wait(0, top_object(), "call_attr", "api", "update_object", login_userid, c_dob.persistent_id, NULL, group_leader, 0, "group",  call_req_id.group, "resolution_code", call_req_id.resolution_code);

 

La cambiamos por esta otra:

send_wait(0, top_object(), "call_attr", "api", "update_object", login_userid, c_dob.persistent_id, NULL, group_leader, 0, "group",  call_req_id.group, "resolution_code", call_req_id.resolution_code, "resolution_method", call_req_id.resolution_method);

 

No funcicino, pero no genero ningún error.

 

Por otro lado, también tenemos modificado el formulario de Detaill_in, donde sacamos los campos Metodo y Resolucion y el formulario Request_status_change, en el que agregamos ambos campos.

Entiendo que hay algún otro lado donde se esta configurando esto.

 

Entiendo que hay algo mas  que interviene en esta customizacion pero no se que es.

Lo que necesito es que el campo Metodo de Resolución también se propague.

 

Ustedes me pueden ayudar?

 

Muchisimas Gracias

 

Fabiana

Outcomes