maia_modificado/.svn/pristine/eb/eba8dad51b2a975ea7a3f6bc997...

635 lines
23 KiB
Plaintext
Executable File

package com.fp.frontend.controller.armas.solicitud;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.primefaces.context.RequestContext;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;
import com.fp.dto.Request;
import com.fp.dto.Response;
import com.fp.dto.query.DtoQuery;
import com.fp.dto.query.Filter;
import com.fp.dto.query.SubQuery;
import com.fp.dto.save.DtoSave;
import com.fp.frontend.controller.AbstractController;
import com.fp.frontend.controller.alfresco.AlfrescoController;
import com.fp.frontend.controller.armas.parametros.CentroControlArmasController;
import com.fp.frontend.controller.armas.parametros.IngresoDatosTipoTramite;
import com.fp.frontend.controller.pcustomer.PersonAddressController;
import com.fp.frontend.controller.pgeneral.date.TgeneNotAccountingDayController;
import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController;
import com.fp.frontend.controller.pgeneral.gene.ParametersController;
import com.fp.frontend.helper.MessageHelper;
import com.fp.frontend.utility.MsgControlArmas;
import com.fp.frontend.utility.MsgGeneral;
import com.fp.persistence.parmas.param.TarmCentroControl;
import com.fp.persistence.parmas.param.TarmTramite;
import com.fp.persistence.parmas.soli.TarmSolicitud;
import com.fp.persistence.parmas.soli.TarmSolicitudTramite;
import com.fp.persistence.pcustomer.gene.TcustPersonAddress;
import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail;
import com.fp.persistence.pgeneral.safe.TsafeUserDetail;
/**
* Clase controladora para el ingreso de comprobante de deposito
*
* @author CHRISTIAN PAZMINO
* @version 2.1
*/
@SuppressWarnings("serial")
@ManagedBean
@ViewScoped
public class CargarDepositoController extends AbstractController<TarmSolicitudTramite> {
/**
* Variable que contiene el numero de tramite con el que inicia el flujo
*/
private String numTramite;
/**
* Variable que contiene el codigo de solicitud pasado en el flujo
*/
private String csolicitud;
/**
* Variable del tipo TgeneCatalogDetail(catalogo del tramite)
*/
private TgeneCatalogDetail nombreTramite;
/**
* Variable del tipo TgeneCatalogDetail(catalogo de la categoria)
*/
private TgeneCatalogDetail nombreCategoria;
/**
* Variable del tipo TgeneCatalogDetail(catalogo del uso actividad del tramite)
*/
private TgeneCatalogDetail nombreUsoActividad;
/**
* Bandera de tipo booleano para indicar si se habilita el boton de completar tarea
*/
private Boolean isEnableCompletarTarea= Boolean.FALSE;
/**
* Propiedad que premite controlar operaciones de cargar archivos al Alfresco
*/
@ManagedProperty(value = "#{alfrescoController}")
private AlfrescoController alfrescoController;
/**
* Variable que contiene los datos de la solicitud actual
*/
private TarmSolicitud solicitud;
/**
* Variable que nos permite cargar el comprobante de deposito al Alfresco
*/
private UploadedFile uploadedFile;
/**
* Variable que indica si el usuario esta negado para continuear el tramite, su tramite pasa a estado anulado
*/
private Boolean isDenied;
/**
* Variable auxiliar usada para diferenciar cuando se presenta o no el mensaje de validacion de fecha expiracion solicitud
*/
private Boolean isOnlyMsj;
/**
* Variable que indica si el numero de comprobante ingresado es correcto
*/
private Boolean isTrueNComprobante;
/**
* Dias laborables permitidos para completar el tramite
*/
private Integer diasLaborablesPermitidos;
/**
* Bandera de tipo booleano para indicar si se ha grabado el reporte generado
* */
private Boolean isEnableGrabar;
/**
* codigo de la provincia del usuario logeado
*/
private String cprovincia;
private Boolean requiereNoSolAucpBln;
/**
*Referencia al Centro de control;
*/
private TarmCentroControl centroControl = new TarmCentroControl();
/**
*Nombre de la Institucion
*/
private String nombreInstitucion;
public CargarDepositoController() throws Exception {
super(TarmSolicitudTramite.class);
}
@PostConstruct
private void postconstruct() {
// super.startQuery();
// csolicitud = this.getMfilters().get("csolicitud");
// this.getMfilters().clear();
init();
requiereNoSolAucpBln=Boolean.FALSE;
}
public void consultarSolicitud() throws Exception{
if(numTramite!=null){
this.record = SolicitudTramiteController.findByNumeroTramiteCarga(numTramite);
if(record != null && record.getPk().getCsolicitud()!=null){
csolicitud = record.getPk().getCsolicitud();
// csolicitud=csolicitud.replace("TRA","SOL");
try {
if(record!=null){
solicitud = SolicitudArmasController.findByCSolicitud(csolicitud);
if(solicitud!=null && solicitud.getCtramite()!=null){
TarmTramite tramite = IngresoDatosTipoTramite.find(solicitud.getCtramite().toString());
if(tramite!=null){
//Tramite
nombreTramite= CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo());
nombreCategoria= CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo());
nombreUsoActividad= CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo());
if(tramite.getCategoria().equals("14")){
requiereNoSolAucpBln=Boolean.TRUE;
obtenerCentroControl(solicitud);
}else{
requiereNoSolAucpBln=Boolean.FALSE;
}
}
else{
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_tramiteSinDatosAsociados"));
}
Date fechaLimiteDate = TgeneNotAccountingDayController.diasLaborablesPreviosAUnaFecha(new Date(), diasLaborablesPermitidos);
Calendar fechaLimite = Calendar.getInstance();
fechaLimite.setTime(fechaLimiteDate);
fechaLimite.set(Calendar.HOUR_OF_DAY, 0);
fechaLimite.set(Calendar.MINUTE, 0);
fechaLimite.set(Calendar.SECOND, 0);
Calendar fechaSolicitud = Calendar.getInstance();
fechaSolicitud.setTime(solicitud.getFverificarequisitos());
fechaSolicitud.set(Calendar.SECOND, 1);
if(fechaSolicitud.compareTo(fechaLimite)<0){
isOnlyMsj = true;
record.setEstadotramite("ANU");
record.setEstadotramitecodigo("ESTADOSOLICITUD");
super.update();
this.save();
RequestContext.getCurrentInstance().update("messages");
}
else{
isDenied = false;
}
}
else{
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_tramiteSinDatosAsociados"));
}
}
else{
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_tramiteSinDatosAsociados"));
}
} catch (Exception e) {
MessageHelper.setMessageError(e);
}
}
}
}
/**
* Obtiene el centro de control segun usurio logeado.
* @param solicitud
* @throws Exception
*
*/
private void obtenerCentroControl(TarmSolicitud solicitud) throws Exception {
this.centroControl= CentroControlArmasController.findPorCodigo(solicitud.getCcentrocontrol());
this.setNombreInstitucion(CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription());
}
/**
* Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador.
*/
private void init() {
try {
this.recperpage = 500;
this.beanalias = "CARGARDEPOSITO";
isDenied = true;
diasLaborablesPermitidos = Integer.parseInt(ParametersController.find("DIASDEPOSITO", "1").getNumbervalue().toString());
isTrueNComprobante = Boolean.TRUE;
isOnlyMsj = false;
isEnableGrabar = Boolean.TRUE;
isEnableCompletarTarea = Boolean.FALSE;
obtenerCentroControlSolicitante();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* Metodo que devuelve el centro de control al que pertenece el cliente dueno de la solicitud
* @throws Exception
*/
private void obtenerCentroControlSolicitante() throws Exception {
TsafeUserDetail tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL");
PersonAddressController personAddressController = new PersonAddressController();
TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString());
if(tcustPersonAddres!=null && tcustPersonAddres.getProvincecode()!=null){
}else{
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_notienedireccionprincipal"));
return;
}
}
/**
* Accion que reinicia todas las variables de la pagina
*/
public void cancelar(){
init();
}
/**
* Metodo que permite grabar el formulario junto al comprobante de deposito en el Alfresco
* */
@Override
public void save() {
try {
String xPathLocation= getRutaDocumentoSolBase() + "/cm:" + solicitud.getNumerosolicitud() + "/cm:" + "Deposito";
if(record.getValorverificacion().doubleValue()>0){
if(isTrueNComprobante){
if(!record.getFechacomprobante().after(new Date())){
if(uploadedFile!=null && uploadedFile.getFileName()!=null){
String extencionArchivo=getExtension(uploadedFile.getFileName());
String nombreArchivo = "CMPRBNT-"+solicitud.getNumerosolicitud()+"."+extencionArchivo;
if(alfrescoController.uploadFile(uploadedFile.getInputstream(),nombreArchivo, xPathLocation)){
record.setXpathcomprobante(xPathLocation + "/cm:" + nombreArchivo);
super.update();
DtoSave dtosave = super.getDtoSave();
HashMap<String, DtoSave> msave = new HashMap<String, DtoSave>();
Request request = this.callerhelper.getRequest();
msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla.
request.setSaveTables(msave);
Response resp = this.callerhelper.executeSave(request);
if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) {
this.postCommit(resp);
MessageHelper.setMessageInfo(resp);
isDenied = true;
isEnableCompletarTarea = Boolean.TRUE;
isEnableGrabar = Boolean.FALSE;
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("RECUERDE", MsgControlArmas.getProperty("msg_recuerdeClickContinuarTramite")));
} else {
MessageHelper.setMessageError(resp);
}
}
else{
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_tramiteSinDatosAsociados"));
}
}
else{
// MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_archivo"));
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ingreseComprobanteDeposito"));
}
}
else{
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_fechaDepositoMayorFechaActual"));
}
}
else{
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_comprobanteDepositoUsado"));
}
}
else{
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_valorDepositoNegativoCero"));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* Metodo que retorna la extencion del comprobante de deposito que se desea subir al alfresco
*/
public String getExtension(String filename) {
int index = filename.lastIndexOf('.');
if (index == -1) {
return "";
} else {
return filename.substring(index + 1);
}
}
/**
* Metodo de consulta no utilizado pero sobrescrito por requisito de herencia
*/
@Override
protected void querydatabase() {
try {
} catch (Exception e) {
MessageHelper.setMessageError(e);
}
}
@SuppressWarnings("unchecked")
public void consultaTramites(){
try {
Request request = this.callerhelper.getRequest();
DtoQuery dto = super.getDtoQuery(true);
SubQuery subqueryTipo= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog= (select o.estado from TarmSolicitud o where o.pk=t.pk.csolicitud) and "
+ " i.pk.catalogcode=(select o.estadocodigo from TarmSolicitud o where o.pk=t.pk.csolicitud)");
SubQuery subqueryEstadoTramite= new SubQuery("TgeneCatalogDetail","description","estadotramite","i.pk.catalog= t.estadotramite and"
+ " i.pk.catalogcode=t.estadotramitecodigo");
dto.addSubQuery(subqueryEstadoTramite);
SubQuery subquerysolicitud= new SubQuery("TarmSolicitud","numerosolicitud","solicitud","i.pk=t.pk.csolicitud");
dto.addSubQuery(subquerysolicitud);
dto.setOrderby("t.pk");
TsafeUserDetail tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL");
Filter filtro= new Filter();
filtro.setSql("numerocomprobante is null and estadotramite='REG' and valorapagar>0 and "
+ " csolicitud in(select o.pk from TarmSolicitud o where o.personcode ='"+tsafeUserDetailUsuario.getPk().getPersoncode()+"' and o.estado ='APB')");
dto.addFiltro(filtro);
HashMap<String, DtoQuery> mtables = new HashMap<String, DtoQuery>();
mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla.
request.setQueryTables(mtables);
Response resp = this.callerhelper.executeQuery(request);
if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) {
this.lrecord = new ArrayList<TarmSolicitudTramite>();
MessageHelper.setMessageError(resp);
} else {
this.lrecord = (List<TarmSolicitudTramite>) resp.get(this.beanalias);
super.postQuery(this.lrecord);
}
} catch (Throwable e) {
MessageHelper.setMessageError(e);
}
}
public void solicitudSeleccionada(TarmSolicitudTramite tarmSolicitudTramite){
try {
numTramite=tarmSolicitudTramite.getNumerotramite();
consultarSolicitud();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* Retorna la ruta base donde se almacenara dicho archivo
*
* @return
*/
public String getRutaDocumentoSolBase() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(solicitud.getFregistro());
StringBuilder ruta = new StringBuilder("cm:Solicitudes");
ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR));
ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1));
return ruta.toString();
}
/**
* Metodo para validar el comprobante de deposito/
*/
public void validarComprobanteDeposito(){
List<TarmSolicitudTramite> usandoComprobanteList = SolicitudTramiteController.findByNumeroComprobante(this.record.getNumerocomprobante());
if(usandoComprobanteList!=null && usandoComprobanteList.size()>0){
isTrueNComprobante = Boolean.FALSE;
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_comprobanteDepositoUsado"));
}
else{
isTrueNComprobante = Boolean.TRUE;
}
}
/**
* Carga el archivo a grabar en la memoria para su posterior persistencia en el Alfresco
*/
public void handleUpload(FileUploadEvent event){
uploadedFile = event.getFile();
}
/**
* Recorta el nombre del archivo a cargarse
* @param nombre
* @return nombre recortado
*/
public String recorteNombre(String nombre){
String fielname=nombre;
if(fielname.length()>30){
fielname=fielname.substring(0,30)+extencionArchivo(nombre);
}
return fielname;
}
/**
* Obtiene la extencion del archivo a cargar
* @param nombre
* @return
*/
private String extencionArchivo(String nombre){
int pos=nombre.lastIndexOf('.');
nombre=nombre.substring(pos);
return nombre;
}
/**
* Metodo para finalizar la tarea del flujo
*/
public void iniciarFlujo() {
try {
TarmSolicitud tarmSolicitud=SolicitudController.findSolicitudxcodsolicitud(record.getPk().getCsolicitud());
if(tarmSolicitud==null || tarmSolicitud.getModifiedData()==null || tarmSolicitud.getModifiedData().get("provincecode")==null){
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sinprovincia"));
return;
}
cprovincia=tarmSolicitud.getModifiedData().get("provincecode").toString();
Request request = callerhelper.getRequest();
// limpiar request para finalizar la tarea.
super.cleanRequest(request);
request.modifiedData().put("isnew", "Y");
request.modifiedData().put("csolicitud", record.getPk().getCsolicitud());
request.modifiedData().put("numerotransaccion", record.getPk().getCtramite());
request.modifiedData().put("numerosolicitud", solicitud.getNumerosolicitud());
request.modifiedData().put("cprovincia", cprovincia);
request.setLogsolicitude(solicitud.getNumerosolicitud());
Response resp = callerhelper.executeSave(request);
if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) {
MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") + " No SOLICITUD: " +solicitud.getNumerosolicitud());
isEnableCompletarTarea = Boolean.FALSE;
} else {
MessageHelper.setMessageError(resp);
}
} catch (Throwable e) {
MessageHelper.setMessageError(e);
}
}
/**
* Metodo para validar que el valor del comprobante de deposito sea mayor a cero
*/
public void valorMayorACero(){
if(record.getValorverificacion().doubleValue()<=0){
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_valorDepositoNegativoCero"));
}
}
public AlfrescoController getAlfrescoController() {
return alfrescoController;
}
public void setAlfrescoController(AlfrescoController alfrescoController) {
this.alfrescoController = alfrescoController;
}
public String getCsolicitud() {
return csolicitud;
}
public void setCsolicitud(String csolicitud) {
this.csolicitud = csolicitud;
}
public TgeneCatalogDetail getNombreTramite() {
return nombreTramite;
}
public void setNombreTramite(TgeneCatalogDetail nombreTramite) {
this.nombreTramite = nombreTramite;
}
public TgeneCatalogDetail getNombreCategoria() {
return nombreCategoria;
}
public void setNombreCategoria(TgeneCatalogDetail nombreCategoria) {
this.nombreCategoria = nombreCategoria;
}
public TgeneCatalogDetail getNombreUsoActividad() {
return nombreUsoActividad;
}
public void setNombreUsoActividad(TgeneCatalogDetail nombreUsoActividad) {
this.nombreUsoActividad = nombreUsoActividad;
}
public TarmSolicitud getSolicitud() {
return solicitud;
}
public void setSolicitud(TarmSolicitud solicitud) {
this.solicitud = solicitud;
}
public UploadedFile getUploadedFile() {
return uploadedFile;
}
public void setUploadedFile(UploadedFile uploadedFile) {
this.uploadedFile = uploadedFile;
}
public Boolean getIsDenied() {
return isDenied;
}
public void setIsDenied(Boolean isDenied) {
this.isDenied = isDenied;
}
public Boolean getIsOnlyMsj() {
return isOnlyMsj;
}
public void setIsOnlyMsj(Boolean isOnlyMsj) {
this.isOnlyMsj = isOnlyMsj;
}
public Boolean getIsTrueNComprobante() {
return isTrueNComprobante;
}
public void setIsTrueNComprobante(Boolean isTrueNComprobante) {
this.isTrueNComprobante = isTrueNComprobante;
}
public Boolean getIsEnableCompletarTarea() {
return isEnableCompletarTarea;
}
public void setIsEnableCompletarTarea(Boolean isEnableCompletarTarea) {
this.isEnableCompletarTarea = isEnableCompletarTarea;
}
public String getNumTramite() {
return numTramite;
}
public void setNumTramite(String numTramite) {
this.numTramite = numTramite;
}
public Boolean getIsEnableGrabar() {
return isEnableGrabar;
}
public void setIsEnableGrabar(Boolean isEnableGrabar) {
this.isEnableGrabar = isEnableGrabar;
}
public Boolean getRequiereNoSolAucpBln() {
return requiereNoSolAucpBln;
}
public void setRequiereNoSolAucpBln(Boolean requiereNoSolAucpBln) {
this.requiereNoSolAucpBln = requiereNoSolAucpBln;
}
public String getNombreInstitucion() {
return nombreInstitucion;
}
public String setNombreInstitucion(String nombreInstitucion) {
if(nombreInstitucion!=null && !nombreInstitucion.isEmpty()){
this.nombreInstitucion = nombreInstitucion;
}else{
this.nombreInstitucion = "";
}
return nombreInstitucion;
}
}