Está en la página 1de 19

public bool Aprobar(SeguimientoAccionCorrectivaDTO accion, string usuario, string

proveedorId, string descripcion, string proveedorResponsable)


{
bool resultado = false;
List<AccesoDTO> accesos = null;
HistorialDTO objLog = new HistorialDTO();
HistorialBLL logbll = new HistorialBLL();
Mensaje = "";
List<UsuarioDTO> listaAprobadoresValidos = null;
bool esNivelAprobacion = false;
bool accionCorrectivaCompleta = false;

try
{
accesos = AccesoBLL.ListarAccesos(usuario, APP_ID, CIA_ID);
var acceso = accesos.Where(a => a.MovimientoId.Trim() ==
TIP_MOV_SEGUIMIENTO_ACP_IPR).FirstOrDefault();
if (acceso != null && acceso.Nivel >= ACC_NIV)
{
listaAprobadoresValidos = UsuarioBLL.ListarAprobadores(APP_ID,
TIP_MOV_SEGUIMIENTO_ACP_IPR, NIVEL_AREASEGURIDAD);

foreach (var item in listaAprobadoresValidos)


{
if (usuario == item.Login.Trim().ToUpper())
{
esNivelAprobacion = true;
break;
}
}
listaAprobadoresValidos = UsuarioBLL.ListarAprobadores(APP_ID,
TIP_MOV_SEGUIMIENTO_ACP_IPR, NIVEL_JEFATURADEAREA);

foreach (var item in listaAprobadoresValidos)


{
if (usuario == item.Login.Trim().ToUpper())
{
esNivelAprobacion = true;
break;
}
}

if (esNivelAprobacion)
{
if
(proveedorId.Equals(Enumerables.EnumCompa�ia.RUC.ObtenerString()) ||
(string.IsNullOrWhiteSpace(proveedorId) && !Regex.IsMatch(accion.DocumentoId, @"^[\
p{L}]+$")))
{
if (accion.TipoDocumento == INSPECCION_PLANIFICADA)
{
var accionIP =
IPAccCorrectivaPreventivaBLL.ObtenerAccionCorrecPreven(accion.DocumentoId,
accion.AnioMes, accion.ActoCondicionId, accion.Id, proveedorId,
accion.TrabajadorId);
if (accionIP.EstadoId != ESTADO_CONCLUIDO)
{
if
(proveedorResponsable.Equals(Enumerables.EnumCompa�ia.RUC.ObtenerString()))
{
resultado =
IPAccCorrectivaPreventivaDAL.Aprobar(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}
else
{
resultado =
IPAccCorrectivaPreventivaDAL.Aprobar(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}

if (resultado)
{
var listaAcciones =
IPAccCorrectivaPreventivaDAL.ListarAccionesCorrecPreven(accion.DocumentoId,
accion.AnioMes, EMPTY);
Mensaje += "Se aprob� correctamente";
NotificarAprobacion(accion,
accionIP.Responsable, accionIP.Proveedor, accionIP.Observaciones, accionIP.Email,
usuario);
foreach (IPAccCorrectivaPreventivaDTO item
in listaAcciones)
{
if (item.EstadoId == ESTADO_CONCLUIDO)
accionCorrectivaCompleta = true;
else
{
accionCorrectivaCompleta = false;
break;
}
}
if (accionCorrectivaCompleta)
{
resultado =
InspeccionPlanificadaDAL.CerrarRegistro(accion.DocumentoId, accion.AnioMes,
ESTADO_CERRADO, usuario);
if (resultado)
{
objLog.DocId = accion.DocumentoId;
objLog.Annomes = accion.AnioMes;
objLog.TipoDocumento =
INSPECCION_PLANIFICADA;
objLog.Accion = CERRAR;
objLog.EstadoId = ESTADO_CERRADO;
logbll.GrabarLogAprobacion(objLog,
usuario);
}
}
}
}
else
{
Mensaje = "Solo se puede aprobar una acci�n
correctiva en estado pendiente o atrasado";
return false;
}
}
else if (accion.TipoDocumento == REPORTE_PELIGROSO)
{
var accionRP =
RPAccCorrectivaPreventivaBLL.Obtener(accion.DocumentoId, accion.AnioMes, accion.Id,
proveedorId, accion.TrabajadorId);
if (accionRP.EstadoId != ESTADO_CONCLUIDO)
{
if
(proveedorResponsable.Equals(Enumerables.EnumCompa�ia.RUC.ObtenerString()))
{
resultado =
RPAccCorrectivaPreventivaDAL.Aprobar(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}
else
{
resultado =
RPAccCorrectivaPreventivaDAL.Aprobar(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}

if (resultado)
{
var listaAcciones =
RPAccCorrectivaPreventivaDAL.Listar(accion.DocumentoId, accion.AnioMes);
Mensaje += "Se aprob� correctamente";
NotificarAprobacion(accion,
accionRP.Responsable, accionRP.Proveedor, accionRP.Observaciones, accionRP.Email,
usuario);
foreach (RPAccCorrectivaPreventivaDTO item
in listaAcciones)
{
if (item.EstadoId == ESTADO_CONCLUIDO)
accionCorrectivaCompleta = true;
else
{
accionCorrectivaCompleta = false;
break;
}
}
if (accionCorrectivaCompleta)
{
resultado =
ReportePeligrosoDAL.CerrarRegistro(accion.DocumentoId, accion.AnioMes,
ESTADO_CERRADO, usuario);
if (resultado)
{
objLog.DocId = accion.DocumentoId;
objLog.Annomes = accion.AnioMes;
objLog.TipoDocumento =
REPORTE_PELIGROSO;
objLog.Accion = CERRAR;
objLog.EstadoId = ESTADO_CERRADO;
logbll.GrabarLogAprobacion(objLog,
usuario);
}
}
}
}
else
{
Mensaje = "Solo se puede aprobar una acci�n
correctiva en estado pendiente o atrasado";
return false;
}
}
else if (accion.TipoDocumento == OBSERVACION_TAREA)
{
var accionOT =
OTAccCorrectivaPreventivaBLL.Obtener(accion.DocumentoId, accion.AnioMes, accion.Id,
proveedorId, accion.TrabajadorId);
if (accionOT.EstadoId != ESTADO_CONCLUIDO)
{
if
(proveedorResponsable.Equals(Enumerables.EnumCompa�ia.RUC.ObtenerString()))
{
resultado =
OTAccCorrectivaPreventivaDAL.Aprobar(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}
else
{
resultado =
OTAccCorrectivaPreventivaDAL.Aprobar(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}

if (resultado)
{
var listaAcciones =
OTAccCorrectivaPreventivaDAL.Listar(accion.DocumentoId, accion.AnioMes);
Mensaje += "Se aprob� correctamente";
NotificarAprobacion(accion,
accionOT.Responsable, accionOT.Proveedor, accionOT.Observaciones, accionOT.Email,
usuario);
foreach (OTAccCorrectivaPreventivaDTO item
in listaAcciones)
{
if (item.EstadoId == ESTADO_CONCLUIDO)
accionCorrectivaCompleta = true;
else
{
accionCorrectivaCompleta = false;
break;
}
}
if (accionCorrectivaCompleta)
{
resultado =
ObservacionTareaDAL.CerrarRegistro(accion.DocumentoId, accion.AnioMes,
ESTADO_CERRADO, usuario);
if (resultado)
{
objLog.DocId = accion.DocumentoId;
objLog.Annomes = accion.AnioMes;
objLog.TipoDocumento =
OBSERVACION_TAREA;
objLog.Accion = CERRAR;
objLog.EstadoId = ESTADO_CERRADO;
logbll.GrabarLogAprobacion(objLog,
usuario);
}
}
}
}
else
{
Mensaje = "Solo se puede aprobar una acci�n
correctiva en estado pendiente o atrasado";
return false;
}
}
else if (accion.TipoDocumento == CONTACTO_PERSONAL)
{
var accionCP =
CPAccCorrectivaPreventivaBLL.Obtener(accion.DocumentoId, accion.AnioMes, accion.Id,
proveedorId, accion.TrabajadorId);
if (accionCP.EstadoId != ESTADO_CONCLUIDO)
{
if
(proveedorResponsable.Equals(Enumerables.EnumCompa�ia.RUC.ObtenerString()))
{
resultado =
CPAccCorrectivaPreventivaDAL.Aprobar(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}
else
{
resultado =
CPAccCorrectivaPreventivaDAL.Aprobar(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}

if (resultado)
{
var listaAcciones =
CPAccCorrectivaPreventivaDAL.Listar(accion.DocumentoId, accion.AnioMes);
Mensaje += "Se aprob� correctamente";
NotificarAprobacion(accion,
accionCP.Responsable, accionCP.Proveedor, accionCP.Observaciones, accionCP.Email,
usuario);
foreach (CPAccCorrectivaPreventivaDTO item
in listaAcciones)
{
if (item.EstadoId == ESTADO_CONCLUIDO)
accionCorrectivaCompleta = true;
else
{
accionCorrectivaCompleta = false;
break;
}
}
if (accionCorrectivaCompleta)
{
resultado =
ContactoPersonalDAL.CerrarRegistro(accion.DocumentoId, accion.AnioMes,
ESTADO_CERRADO, usuario);
if (resultado)
{
objLog.DocId = accion.DocumentoId;
objLog.Annomes = accion.AnioMes;
objLog.TipoDocumento =
CONTACTO_PERSONAL;
objLog.Accion = CERRAR;
objLog.EstadoId = ESTADO_CERRADO;
logbll.GrabarLogAprobacion(objLog,
usuario);
}
}
}
}
else
{
Mensaje = "Solo se puede aprobar una acci�n
correctiva en estado pendiente o atrasado";
return false;
}
}

}
else
{
if (accion.TipoDocumento == INSPECCION_PLANIFICADA)
{
var accionIP =
IPAccCorrectivaPreventivaBLL.ObtenerAccionCorrecPreven(accion.DocumentoId,
accion.AnioMes, accion.ActoCondicionId, accion.Id, proveedorId,
accion.TrabajadorId);
if (accionIP.EstadoId != ESTADO_CONCLUIDO)
{
if
(proveedorResponsable.Equals(Enumerables.EnumCompa�ia.RUC.ObtenerString()))
{
resultado =
IPAccCorrectivaPreventivaDAL.Aprobar(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}
else
{
resultado =
IPAccCorrectivaPreventivaDAL.AprobarExtranet(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}

if (resultado)
{
var listaAcciones =
IPAccCorrectivaPreventivaDAL.ListarAccionesCorrecPreven(accion.DocumentoId,
accion.AnioMes, EMPTY);
Mensaje += "Se aprob� correctamente";
NotificarAprobacion(accion,
accionIP.Responsable, accionIP.Proveedor, accionIP.Observaciones, accionIP.Email,
usuario);
foreach (IPAccCorrectivaPreventivaDTO item
in listaAcciones)
{
if (item.EstadoId == ESTADO_CONCLUIDO)
accionCorrectivaCompleta = true;
else
{
accionCorrectivaCompleta = false;
break;
}
}
if (accionCorrectivaCompleta)
{
resultado =
InspeccionPlanificadaDAL.CerrarRegistro(accion.DocumentoId, accion.AnioMes,
ESTADO_CERRADO, usuario);
if (resultado)
{
objLog.DocId = accion.DocumentoId;
objLog.Annomes = accion.AnioMes;
objLog.TipoDocumento =
INSPECCION_PLANIFICADA;
objLog.Accion = CERRAR;
objLog.EstadoId = ESTADO_CERRADO;
logbll.GrabarLogAprobacion(objLog,
usuario);
}
}
}
}
else
{
Mensaje = "Solo se puede aprobar una acci�n
correctiva en estado pendiente o atrasado";
return false;
}
}
else if (accion.TipoDocumento == REPORTE_PELIGROSO)
{
var accionRP =
RPAccCorrectivaPreventivaBLL.Obtener(accion.DocumentoId, accion.AnioMes, accion.Id,
proveedorId, accion.TrabajadorId);
if (accionRP.EstadoId != ESTADO_CONCLUIDO)
{
if
(proveedorResponsable.Equals(Enumerables.EnumCompa�ia.RUC.ObtenerString()))
{
resultado =
RPAccCorrectivaPreventivaDAL.Aprobar(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}
else
{
resultado =
RPAccCorrectivaPreventivaDAL.AprobarExtranet(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}

if (resultado)
{
var listaAcciones =
RPAccCorrectivaPreventivaDAL.Listar(accion.DocumentoId, accion.AnioMes);
Mensaje += "Se aprob� correctamente";
NotificarAprobacion(accion,
accionRP.Responsable, accionRP.Proveedor, accionRP.Observaciones, accionRP.Email,
usuario);
foreach (RPAccCorrectivaPreventivaDTO item
in listaAcciones)
{
if (item.EstadoId == ESTADO_CONCLUIDO)
accionCorrectivaCompleta = true;
else
{
accionCorrectivaCompleta = false;
break;
}
}
if (accionCorrectivaCompleta)
{
resultado =
ReportePeligrosoDAL.CerrarRegistro(accion.DocumentoId, accion.AnioMes,
ESTADO_CERRADO, usuario);
if (resultado)
{
objLog.DocId = accion.DocumentoId;
objLog.Annomes = accion.AnioMes;
objLog.TipoDocumento =
REPORTE_PELIGROSO;
objLog.Accion = CERRAR;
objLog.EstadoId = ESTADO_CERRADO;
logbll.GrabarLogAprobacion(objLog,
usuario);
}
}
}
}
else
{
Mensaje = "Solo se puede aprobar una acci�n
correctiva en estado pendiente o atrasado";
return false;
}
}
else if (accion.TipoDocumento == OBSERVACION_TAREA)
{
var accionOT =
OTAccCorrectivaPreventivaBLL.Obtener(accion.DocumentoId, accion.AnioMes, accion.Id,
proveedorId, accion.TrabajadorId);
if (accionOT.EstadoId != ESTADO_CONCLUIDO)
{
if
(proveedorResponsable.Equals(Enumerables.EnumCompa�ia.RUC.ObtenerString()))
{
resultado =
OTAccCorrectivaPreventivaDAL.Aprobar(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}
else
{
resultado =
OTAccCorrectivaPreventivaDAL.AprobarExtranet(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}

if (resultado)
{
var listaAcciones =
OTAccCorrectivaPreventivaDAL.Listar(accion.DocumentoId, accion.AnioMes);
Mensaje += "Se aprob� correctamente";
NotificarAprobacion(accion,
accionOT.Responsable, accionOT.Proveedor, accionOT.Observaciones, accionOT.Email,
usuario);
foreach (OTAccCorrectivaPreventivaDTO item
in listaAcciones)
{
if (item.EstadoId == ESTADO_CONCLUIDO)
accionCorrectivaCompleta = true;
else
{
accionCorrectivaCompleta = false;
break;
}
}
if (accionCorrectivaCompleta)
{
resultado =
ObservacionTareaDAL.CerrarRegistro(accion.DocumentoId, accion.AnioMes,
ESTADO_CERRADO, usuario);
if (resultado)
{
objLog.DocId = accion.DocumentoId;
objLog.Annomes = accion.AnioMes;
objLog.TipoDocumento =
OBSERVACION_TAREA;
objLog.Accion = CERRAR;
objLog.EstadoId = ESTADO_CERRADO;
logbll.GrabarLogAprobacion(objLog,
usuario);
}
}
}
}
else
{
Mensaje = "Solo se puede aprobar una acci�n
correctiva en estado pendiente o atrasado";
return false;
}
}
else if (accion.TipoDocumento == CONTACTO_PERSONAL)
{
var accionCP =
CPAccCorrectivaPreventivaBLL.Obtener(accion.DocumentoId, accion.AnioMes, accion.Id,
proveedorId, accion.TrabajadorId);
if (accionCP.EstadoId != ESTADO_CONCLUIDO)
{
if
(proveedorResponsable.Equals(Enumerables.EnumCompa�ia.RUC.ObtenerString()))
{
resultado =
CPAccCorrectivaPreventivaDAL.Aprobar(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}
else
{
resultado =
CPAccCorrectivaPreventivaDAL.AprobarExtranet(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}

if (resultado)
{
var listaAcciones =
CPAccCorrectivaPreventivaDAL.Listar(accion.DocumentoId, accion.AnioMes);
Mensaje += "Se aprob� correctamente";
NotificarAprobacion(accion,
accionCP.Responsable, accionCP.Proveedor, accionCP.Observaciones, accionCP.Email,
usuario);
foreach (CPAccCorrectivaPreventivaDTO item
in listaAcciones)
{
if (item.EstadoId == ESTADO_CONCLUIDO)
accionCorrectivaCompleta = true;
else
{
accionCorrectivaCompleta = false;
break;
}
}
if (accionCorrectivaCompleta)
{
resultado =
ContactoPersonalDAL.CerrarRegistro(accion.DocumentoId, accion.AnioMes,
ESTADO_CERRADO, usuario);
if (resultado)
{
objLog.DocId = accion.DocumentoId;
objLog.Annomes = accion.AnioMes;
objLog.TipoDocumento =
CONTACTO_PERSONAL;
objLog.Accion = CERRAR;
objLog.EstadoId = ESTADO_CERRADO;
logbll.GrabarLogAprobacion(objLog,
usuario);
}
}
}
}
else
{
Mensaje = "Solo se puede aprobar una acci�n
correctiva en estado pendiente o atrasado";
return false;
}
}
}
}
{
if
(proveedorId.Equals(Enumerables.EnumCompa�ia.RUC.ObtenerString()) ||
(string.IsNullOrWhiteSpace(proveedorId) && !Regex.IsMatch(accion.DocumentoId, @"^[\
p{L}]+$")))
{
if (accion.TipoDocumento == INSPECCION_PLANIFICADA)
{
var accionIP =
IPAccCorrectivaPreventivaBLL.ObtenerAccionCorrecPreven(accion.DocumentoId,
accion.AnioMes, accion.ActoCondicionId, accion.Id, proveedorId,
accion.TrabajadorId);
if (accionIP.EstadoId != ESTADO_CONCLUIDO)
{
if
(proveedorResponsable.Equals(Enumerables.EnumCompa�ia.RUC.ObtenerString()))
{
resultado =
IPAccCorrectivaPreventivaDAL.Aprobar(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}
else
{
resultado =
IPAccCorrectivaPreventivaDAL.AprobarExtranet(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}

if (resultado)
{
var listaAcciones =
IPAccCorrectivaPreventivaDAL.ListarAccionesCorrecPreven(accion.DocumentoId,
accion.AnioMes, EMPTY);
Mensaje += "Se aprob� correctamente";
NotificarAprobacion(accion,
accionIP.Responsable, accionIP.Proveedor, accionIP.Observaciones, accionIP.Email,
usuario);
foreach (IPAccCorrectivaPreventivaDTO item
in listaAcciones)
{
if (item.EstadoId == ESTADO_CONCLUIDO)
accionCorrectivaCompleta = true;
else
{
accionCorrectivaCompleta = false;
break;
}
}
if (accionCorrectivaCompleta)
{
resultado =
InspeccionPlanificadaDAL.CerrarRegistro(accion.DocumentoId, accion.AnioMes,
ESTADO_CERRADO, usuario);
if (resultado)
{
objLog.DocId = accion.DocumentoId;
objLog.Annomes = accion.AnioMes;
objLog.TipoDocumento =
INSPECCION_PLANIFICADA;
objLog.Accion = CERRAR;
objLog.EstadoId = ESTADO_CERRADO;
logbll.GrabarLogAprobacion(objLog,
usuario);
}
}
}
}
else
{
Mensaje = "Solo se puede aprobar una acci�n
correctiva en estado pendiente o atrasado";
return false;
}
}
else if (accion.TipoDocumento == REPORTE_PELIGROSO)
{
var accionRP =
RPAccCorrectivaPreventivaBLL.Obtener(accion.DocumentoId, accion.AnioMes, accion.Id,
proveedorId, accion.TrabajadorId);
if (accionRP.EstadoId != ESTADO_CONCLUIDO)
{
if
(proveedorResponsable.Equals(Enumerables.EnumCompa�ia.RUC.ObtenerString()))
{
resultado =
RPAccCorrectivaPreventivaDAL.Aprobar(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}
else
{
resultado =
RPAccCorrectivaPreventivaDAL.AprobarExtranet(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}

if (resultado)
{
var listaAcciones =
RPAccCorrectivaPreventivaDAL.Listar(accion.DocumentoId, accion.AnioMes);
Mensaje += "Se aprob� correctamente";
NotificarAprobacion(accion,
accionRP.Responsable, accionRP.Proveedor, accionRP.Observaciones, accionRP.Email,
usuario);
foreach (RPAccCorrectivaPreventivaDTO item
in listaAcciones)
{
if (item.EstadoId == ESTADO_CONCLUIDO)
accionCorrectivaCompleta = true;
else
{
accionCorrectivaCompleta = false;
break;
}
}
if (accionCorrectivaCompleta)
{
resultado =
ReportePeligrosoDAL.CerrarRegistro(accion.DocumentoId, accion.AnioMes,
ESTADO_CERRADO, usuario);
if (resultado)
{
objLog.DocId = accion.DocumentoId;
objLog.Annomes = accion.AnioMes;
objLog.TipoDocumento =
REPORTE_PELIGROSO;
objLog.Accion = CERRAR;
objLog.EstadoId = ESTADO_CERRADO;
logbll.GrabarLogAprobacion(objLog,
usuario);
}
}
}
}
else
{
Mensaje = "Solo se puede aprobar una acci�n
correctiva en estado pendiente o atrasado";
return false;
}
}
else if (accion.TipoDocumento == OBSERVACION_TAREA)
{
var accionOT =
OTAccCorrectivaPreventivaBLL.Obtener(accion.DocumentoId, accion.AnioMes, accion.Id,
proveedorId, accion.TrabajadorId);
if (accionOT.EstadoId != ESTADO_CONCLUIDO)
{
if
(proveedorResponsable.Equals(Enumerables.EnumCompa�ia.RUC.ObtenerString()))
{
resultado =
OTAccCorrectivaPreventivaDAL.Aprobar(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}
else
{
resultado =
OTAccCorrectivaPreventivaDAL.AprobarExtranet(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}

if (resultado)
{
var listaAcciones =
OTAccCorrectivaPreventivaDAL.Listar(accion.DocumentoId, accion.AnioMes);
Mensaje += "Se aprob� correctamente";
NotificarAprobacion(accion,
accionOT.Responsable, accionOT.Proveedor, accionOT.Observaciones, accionOT.Email,
usuario);
foreach (OTAccCorrectivaPreventivaDTO item
in listaAcciones)
{
if (item.EstadoId == ESTADO_CONCLUIDO)
accionCorrectivaCompleta = true;
else
{
accionCorrectivaCompleta = false;
break;
}
}
if (accionCorrectivaCompleta)
{
resultado =
ObservacionTareaDAL.CerrarRegistro(accion.DocumentoId, accion.AnioMes,
ESTADO_CERRADO, usuario);
if (resultado)
{
objLog.DocId = accion.DocumentoId;
objLog.Annomes = accion.AnioMes;
objLog.TipoDocumento =
OBSERVACION_TAREA;
objLog.Accion = CERRAR;
objLog.EstadoId = ESTADO_CERRADO;
logbll.GrabarLogAprobacion(objLog,
usuario);
}
}
}
}
else
{
Mensaje = "Solo se puede aprobar una acci�n
correctiva en estado pendiente o atrasado";
return false;
}
}
else if (accion.TipoDocumento == CONTACTO_PERSONAL)
{
var accionCP =
CPAccCorrectivaPreventivaBLL.Obtener(accion.DocumentoId, accion.AnioMes, accion.Id,
proveedorId, accion.TrabajadorId);
if (accionCP.EstadoId != ESTADO_CONCLUIDO)
{
if
(proveedorResponsable.Equals(Enumerables.EnumCompa�ia.RUC.ObtenerString()))
{
resultado =
CPAccCorrectivaPreventivaDAL.Aprobar(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}
else
{
resultado =
CPAccCorrectivaPreventivaDAL.AprobarExtranet(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);
}

if (resultado)
{
var listaAcciones =
CPAccCorrectivaPreventivaDAL.Listar(accion.DocumentoId, accion.AnioMes);
Mensaje += "Se aprob� correctamente";
NotificarAprobacion(accion,
accionCP.Responsable, accionCP.Proveedor, accionCP.Observaciones, accionCP.Email,
usuario);
foreach (CPAccCorrectivaPreventivaDTO item
in listaAcciones)
{
if (item.EstadoId == ESTADO_CONCLUIDO)
accionCorrectivaCompleta = true;
else
{
accionCorrectivaCompleta = false;
break;
}
}
if (accionCorrectivaCompleta)
{
resultado =
ContactoPersonalDAL.CerrarRegistro(accion.DocumentoId, accion.AnioMes,
ESTADO_CERRADO, usuario);
if (resultado)
{
objLog.DocId = accion.DocumentoId;
objLog.Annomes = accion.AnioMes;
objLog.TipoDocumento =
CONTACTO_PERSONAL;
objLog.Accion = CERRAR;
objLog.EstadoId = ESTADO_CERRADO;
logbll.GrabarLogAprobacion(objLog,
usuario);
}
}
}
}
else
{
Mensaje = "Solo se puede aprobar una acci�n
correctiva en estado pendiente o atrasado";
return false;
}
}

}
else
{
if (accion.TipoDocumento == INSPECCION_PLANIFICADA)
{
var accionIP =
IPAccCorrectivaPreventivaBLL.ObtenerAccionCorrecPreven(accion.DocumentoId,
accion.AnioMes, accion.ActoCondicionId, accion.Id, proveedorId,
accion.TrabajadorId);
if (accionIP.EstadoId != ESTADO_CONCLUIDO)
{
resultado =
IPAccCorrectivaPreventivaDAL.AprobarExtranet(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);

if (resultado)
{
var listaAcciones =
IPAccCorrectivaPreventivaDAL.ListarAccionesCorrecPrevenExtranet(accion.DocumentoId,
accion.AnioMes, EMPTY);
Mensaje += "Se aprob� correctamente";
NotificarAprobacion(accion,
accionIP.Responsable, accionIP.Proveedor, accionIP.Observaciones, accionIP.Email,
usuario);
foreach (IPAccCorrectivaPreventivaDTO item
in listaAcciones)
{
if (item.EstadoId == ESTADO_CONCLUIDO)
accionCorrectivaCompleta = true;
else
{
accionCorrectivaCompleta = false;
break;
}
}
if (accionCorrectivaCompleta)
{
resultado =
InspeccionPlanificadaDAL.CerrarRegistroExtranet(accion.DocumentoId, accion.AnioMes,
ESTADO_CERRADO, usuario);
if (resultado)
{
objLog.DocId = accion.DocumentoId;
objLog.Annomes = accion.AnioMes;
objLog.TipoDocumento =
INSPECCION_PLANIFICADA;
objLog.Accion = CERRAR;
objLog.EstadoId = ESTADO_CERRADO;
logbll.GrabarLogAprobacion(objLog,
usuario);
}
}
}
}
else
{
Mensaje = "Solo se puede aprobar una acci�n
correctiva en estado pendiente o atrasado";
return false;
}
}
else if (accion.TipoDocumento == REPORTE_PELIGROSO)
{
var accionRP =
RPAccCorrectivaPreventivaBLL.Obtener(accion.DocumentoId, accion.AnioMes, accion.Id,
proveedorId, accion.TrabajadorId);
if (accionRP.EstadoId != ESTADO_CONCLUIDO)
{
resultado =
RPAccCorrectivaPreventivaDAL.AprobarExtranet(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);

if (resultado)
{
var listaAcciones =
RPAccCorrectivaPreventivaDAL.Listar(accion.DocumentoId, accion.AnioMes);
Mensaje += "Se aprob� correctamente";
NotificarAprobacion(accion,
accionRP.Responsable, accionRP.Proveedor, accionRP.Observaciones, accionRP.Email,
usuario);
foreach (RPAccCorrectivaPreventivaDTO item
in listaAcciones)
{
if (item.EstadoId == ESTADO_CONCLUIDO)
accionCorrectivaCompleta = true;
else
{
accionCorrectivaCompleta = false;
break;
}
}
if (accionCorrectivaCompleta)
{
resultado =
ReportePeligrosoDAL.CerrarRegistroExtranet(accion.DocumentoId, accion.AnioMes,
ESTADO_CERRADO, usuario);
if (resultado)
{
objLog.DocId = accion.DocumentoId;
objLog.Annomes = accion.AnioMes;
objLog.TipoDocumento =
REPORTE_PELIGROSO;
objLog.Accion = CERRAR;
objLog.EstadoId = ESTADO_CERRADO;
logbll.GrabarLogAprobacion(objLog,
usuario);
}
}
}
}
else
{
Mensaje = "Solo se puede aprobar una acci�n
correctiva en estado pendiente o atrasado";
return false;
}
}
else if (accion.TipoDocumento == OBSERVACION_TAREA)
{
var accionOT =
OTAccCorrectivaPreventivaBLL.Obtener(accion.DocumentoId, accion.AnioMes, accion.Id,
proveedorId, accion.TrabajadorId);
if (accionOT.EstadoId != ESTADO_CONCLUIDO)
{
resultado =
OTAccCorrectivaPreventivaDAL.AprobarExtranet(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);

if (resultado)
{
var listaAcciones =
OTAccCorrectivaPreventivaDAL.Listar(accion.DocumentoId, accion.AnioMes);
Mensaje += "Se aprob� correctamente";
NotificarAprobacion(accion,
accionOT.Responsable, accionOT.Proveedor, accionOT.Observaciones, accionOT.Email,
usuario);
foreach (OTAccCorrectivaPreventivaDTO item
in listaAcciones)
{
if (item.EstadoId == ESTADO_CONCLUIDO)
accionCorrectivaCompleta = true;
else
{
accionCorrectivaCompleta = false;
break;
}
}
if (accionCorrectivaCompleta)
{
resultado =
ObservacionTareaDAL.CerrarRegistro(accion.DocumentoId, accion.AnioMes,
ESTADO_CERRADO, usuario);
if (resultado)
{
objLog.DocId = accion.DocumentoId;
objLog.Annomes = accion.AnioMes;
objLog.TipoDocumento =
OBSERVACION_TAREA;
objLog.Accion = CERRAR;
objLog.EstadoId = ESTADO_CERRADO;
logbll.GrabarLogAprobacion(objLog,
usuario);
}
}
}
}
else
{
Mensaje = "Solo se puede aprobar una acci�n
correctiva en estado pendiente o atrasado";
return false;
}
}
else if (accion.TipoDocumento == CONTACTO_PERSONAL)
{
var accionCP =
CPAccCorrectivaPreventivaBLL.Obtener(accion.DocumentoId, accion.AnioMes, accion.Id,
proveedorId, accion.TrabajadorId);
if (accionCP.EstadoId != ESTADO_CONCLUIDO)
{
resultado =
CPAccCorrectivaPreventivaDAL.AprobarExtranet(accion, usuario, ESTADO_ACP_CONCLUIDO,
descripcion);

if (resultado)
{
var listaAcciones =
CPAccCorrectivaPreventivaDAL.ListarExtranet(accion.DocumentoId, accion.AnioMes);
Mensaje += "Se aprob� correctamente";
NotificarAprobacion(accion,
accionCP.Responsable, accionCP.Proveedor, accionCP.Observaciones, accionCP.Email,
usuario);
foreach (CPAccCorrectivaPreventivaDTO item
in listaAcciones)
{
if (item.EstadoId == ESTADO_CONCLUIDO)
accionCorrectivaCompleta = true;
else
{
accionCorrectivaCompleta = false;
break;
}
}
if (accionCorrectivaCompleta)
{
resultado =
ContactoPersonalDAL.CerrarRegistroExtranet(accion.DocumentoId, accion.AnioMes,
ESTADO_CERRADO, usuario);
if (resultado)
{
objLog.DocId = accion.DocumentoId;
objLog.Annomes = accion.AnioMes;
objLog.TipoDocumento =
CONTACTO_PERSONAL;
objLog.Accion = CERRAR;
objLog.EstadoId = ESTADO_CERRADO;
logbll.GrabarLogAprobacion(objLog,
usuario);
}
}
}
}
else
{
Mensaje = "Solo se puede aprobar una acci�n
correctiva en estado pendiente o atrasado";
return false;
}
}
}
}
else
{
Mensaje += "El usuario no tiene el nivel de aprobaci�n
apropiado para aprobar una acci�n correctiva. \n\r";
resultado = false;
}
}
else
{
Mensaje = "El usuario no tiene permisos suficientes para
aprobar.";
return false;
}
}
catch (Exception ex)
{
Mensaje = string.Format("{0}\r{1}", MensajeOperacion.ERROR_SAVE,
ex.Message);
resultado = false;
}

return resultado;
}

También podría gustarte