73 lines
2.9 KiB
Plaintext
Executable File
73 lines
2.9 KiB
Plaintext
Executable File
package com.fp.viaticos.task;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
import javax.persistence.NoResultException;
|
|
import javax.persistence.Query;
|
|
|
|
import com.fp.persistence.commondb.PersistenceHelper;
|
|
import com.fp.persistence.pviaticos.hra.Empleado;
|
|
import com.fp.persistence.pviaticos.hra.EmpleadoJpql;
|
|
import com.fp.persistence.pviaticos.param.ViaCiudadUsuario;
|
|
import com.fp.persistence.pviaticos.solicitud.ViaSolicitud;
|
|
import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey;
|
|
import com.fp.simple.action.TaskAction;
|
|
import com.fp.viaticos.rules.exception.ViaticosException;
|
|
|
|
/**
|
|
* Clase que se encarga de obtener y fijar el usuario responsable de ejecutar la tarea de tesoreria..
|
|
*
|
|
* @version 2.1
|
|
*/
|
|
public class AsignarTesoreria extends TaskAction {
|
|
|
|
/*
|
|
* (non-Javadoc)
|
|
*
|
|
* @see com.fp.simple.action.TaskAction#assignOwner(com.fp.simple.flow.DataMap)
|
|
*/
|
|
@SuppressWarnings("unchecked")
|
|
@Override
|
|
public void assignOwner(Object pParam) throws Exception {
|
|
HashMap<String, Object> m = (HashMap<String, Object>) pParam;
|
|
Map<String, Object> mrequest = (Map<String, Object>) m.get("request");
|
|
if (mrequest.get("csolicitud") == null) {
|
|
return;
|
|
}
|
|
String solicitud = (String) mrequest.get("csolicitud");
|
|
ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, "S"));
|
|
|
|
EmpleadoJpql ejpql = new EmpleadoJpql();
|
|
Empleado e = ejpql.find(vsol.getCod_empleado());
|
|
if (e.getCodigoLocalidad() == null) {
|
|
throw new ViaticosException("VIA-0001", "CODIGO DE LOCALIDAD NO ASOCIADO AL EMPLEADO: {0} {1}", e.getCodigo(), e.getNombre());
|
|
}
|
|
// El userID va en mayusculas asi esta definido en las tablas de jbpm y maia.
|
|
m.put("userId", this.getUsuario(e.getCodigoLocalidad(), "TESORERIA"));
|
|
m.put("action", "A");
|
|
}
|
|
|
|
/**
|
|
* Busca en la tabla ViaCiudadUsuario, el codigo de usuario asociado a una localidad a la que pertence un
|
|
* funcionario de la SBS.
|
|
*
|
|
* @param ciudad Codigo de ciudad a obtener el usuario.
|
|
* @return String
|
|
* @throws Exception
|
|
*/
|
|
private String getUsuario(String ciudad, String actividad) throws Exception {
|
|
Query qry = PersistenceHelper.getEntityManager().createQuery(
|
|
"from ViaCiudadUsuario t where t.pk.cod_actividad_catalog = :actividad and t.pk.cod_ciudad_catalog = :ciudad ");
|
|
qry.setParameter("ciudad", ciudad);
|
|
qry.setParameter("actividad", actividad);
|
|
ViaCiudadUsuario obj = null;
|
|
try {
|
|
obj = (ViaCiudadUsuario) qry.getSingleResult();
|
|
} catch (NoResultException e) {
|
|
throw new ViaticosException("VIA-0002", "USUARIO NO DEFINIDO EN VIA_CIUDAD_USUARIO CIUDAD: {0} ACTIVIDAD: {1} ", ciudad, actividad);
|
|
}
|
|
return obj.getCod_usuario();
|
|
}
|
|
}
|