/// <summary> /// Registra el nuevo contrato en la base de datos /// </summary> /// <param name="contrato">Contrato a Registrar</param> /// <returns>Retorna el Identificador del Nuevo Contrato</returns> private int? GuardarContrato(ContratoFSLBO contrato) { try { //SC_0008 SeguridadBO seguridadBO = new SeguridadBO(Guid.Empty, new UsuarioBO { Id = this.vista.UsuarioID }, new AdscripcionBO { Departamento = new DepartamentoBO(), Sucursal = new SucursalBO(), UnidadOperativa = new UnidadOperativaBO { Id = this.vista.UnidadAdscripcionID } }); //END SC_0008 var contratoBR = new ContratoFSLBR(); contratoBR.InsertarCompleto(dataContext, contrato, seguridadBO); DataSet ds = contratoBR.ConsultarSet(dataContext, contrato); if (ds.Tables[0].Rows.Count > 0) { return ds.Tables[0].Rows[0].Field<int>("ContratoID"); } return null; } catch (Exception ex) { throw new Exception(nombreClase + ".GuardarContrato:" + ex.Message); } }
/// <summary> /// Impresion del Manual de Operaciones /// </summary> public void ImprimirManualOperaciones() { try { if (vista.ContratoID != null) { if (vista.UnidadOperativaContratoID != null) { var contratoBR = new ContratoFSLBR(); var DatosReporte = contratoBR.ConsultarManualOperaciones(dataContext, vista.ContratoID.Value, vista.UnidadOperativaContratoID.Value); vista.EstablecerPaqueteNavegacionImprimir("CU017", DatosReporte); vista.IrAImprimir(); } else { vista.MostrarMensaje("No se cuenta con la Unidad Operativa del Contrato", ETipoMensajeIU.ADVERTENCIA); } } else { vista.MostrarMensaje("No se cuenta con el Identificador del Contrato", ETipoMensajeIU.ADVERTENCIA); } } catch (Exception ex) { vista.MostrarMensaje("Inconsistencias al Intentar desplegar el Manual de Operaciones", ETipoMensajeIU.ERROR, nombreClase + ".ImprimirManualOperaciones: " + ex.Message); } }
/// <summary> /// Obtiene el Contrato del Paquete de Navegacion /// </summary> /// <returns></returns> private ContratoFSLBO ObtenerContrato() { try { var contrato = vista.Contrato; var contratoBR = new ContratoFSLBR(); List <ContratoFSLBO> resultados = contratoBR.ConsultarDetalle(dataContext, contrato, false); contrato = resultados.Find(cont => cont.ContratoID == contrato.ContratoID); if (contrato != null && contrato.DocumentosAdjuntos != null && contrato.DocumentosAdjuntos.Count > 0) { contrato.DocumentosAdjuntos = contrato.DocumentosAdjuntos.Where(archivo => archivo.Activo == true).ToList(); } return(contrato); } catch (Exception ex) { throw new Exception(nombreClase + ".ObtenerContrato: " + ex.Message); } }
/// <summary> /// Regresar a la pantalla de Detalles /// </summary> public void RegresarADetalles() { try { ContratoFSLBO contrato = new ContratoFSLBO { ContratoID = vista.ContratoID }; ContratoFSLBR ContratoBR = new ContratoFSLBR(); contrato = ContratoBR.ConsultarCompleto(dataContext, contrato)[0]; vista.EstablecerPaqueteNavegacion(vista.Codigo, contrato); vista.LimpiarSesion(); vista.IrADetalleContrato(); } catch (Exception ex) { throw new Exception(nombreClase + ".RegresarADetalles: " + ex.Message); } }
/// <summary> /// Imprimir la plantilla del contrato maestro /// </summary> /// <param name="tipo">//True si quieres que sea fisica false si squieres que sea moral. bool</param> public void ImprimirPlantillaContratoMaestro(bool tipo) { try { var contratoBR = new ContratoFSLBR(); //True si quieres que sea fisica false si squieres que sea moral var datos = contratoBR.ObtenerPlantillaContratoMaestro(tipo); vista.EstablecerPaqueteNavegacionImprimir("CU018A", datos); vista.IrAImprimir(); } catch (Exception ex) { vista.MostrarMensaje("Inconsistencias al Intentar desplegar el Contrato Maestro", ETipoMensajeIU.ERROR, nombreClase + ".ImprimirPlantillaContratoMaestro: " + ex.Message); } }
/// <summary> /// Impresion de la Constancia de Entrega de Bienes /// </summary> public void ImprimirConstanciaBienes() { try { if (vista.ContratoID != null) { var contratoBR = new ContratoFSLBR(); var DatosReporte = contratoBR.ConsultarConstanciaEntregaBienes(dataContext, vista.ContratoID.Value); vista.EstablecerPaqueteNavegacionImprimir("CU016", DatosReporte); vista.IrAImprimir(); return; } vista.MostrarMensaje("No se cuenta con el Identificador del Contrato", ETipoMensajeIU.ADVERTENCIA); } catch (Exception ex) { vista.MostrarMensaje("Inconsistencias al Intentar desplegar la Constancia de Bienes", ETipoMensajeIU.ERROR, nombreClase + ".ImprimirConstanciaBienes: " + ex.Message); } }
public void ImprimirPagare() { try { if (this.vista.ContratoID == null) { throw new Exception("No se puede imprimir el pagaré sin el identificador del contrato"); } ContratoFSLBR controlador = new ContratoFSLBR(); Dictionary <string, Object> datosPagare = controlador.ObtenerDatosPagare(FacadeBR.ObtenerConexion(), new ContratoFSLBO() { ContratoID = this.vista.ContratoID }); vista.EstablecerPaqueteNavegacionImprimir("CU093", datosPagare); vista.IrAImprimir(); } catch (Exception ex) { throw new Exception("DetalleContratoFSLPRE.ImprimirPagare: " + ex.Message); } }
/// <summary> /// Impresion del Contrato Maestro /// </summary> public void ImprimirContratoMaestro() { try { if (vista.Contrato != null) { var contratoBR = new ContratoFSLBR(); var DatosReporte = contratoBR.ObtenerDatosContratoMaestro(dataContext, vista.Contrato); vista.EstablecerPaqueteNavegacionImprimir("CU018", DatosReporte); vista.IrAImprimir(); } else { vista.MostrarMensaje("No se cuenta con la información necesaria del para imprimir el Contrato Maestro", ETipoMensajeIU.ADVERTENCIA); } } catch (Exception ex) { vista.MostrarMensaje("Inconsistencias al Intentar desplegar el Contrato Maestro", ETipoMensajeIU.ERROR, nombreClase + ".ImprimirContratoMaestro: " + ex.Message); } }
/// <summary> /// Impresion del Anexo A /// </summary> public void ImprimirAnexoA() { try { if (vista.ContratoID != null) { var contratoBR = new ContratoFSLBR(); var DatosReporte = contratoBR.ObtenerDatosAnexoA(dataContext, vista.ContratoID.Value); vista.EstablecerPaqueteNavegacionImprimir("CU019", DatosReporte); vista.IrAImprimir(); } else { vista.MostrarMensaje("No se cuenta con el Identificador del Contrato", ETipoMensajeIU.ADVERTENCIA); } } catch (Exception ex) { vista.MostrarMensaje("Inconsistencias al Intentar desplegar el Anexo A", ETipoMensajeIU.ERROR, nombreClase + ".ImprimirAnexoA: " + ex.Message); } }
/// <summary> /// Elimina la linea de contrato desplegada en la Interfaz de Usuario (Con estatus Borrador) /// </summary> public void EliminarContrato() { try { ContratoFSLBO contratoEliminar = InterfazUsuarioADatos(); if (contratoEliminar.Estatus != EEstatusContrato.Borrador) { vista.MostrarMensaje("El contrato debe tener estatus Borrador para ser eliminado.", ETipoMensajeIU.INFORMACION); return; } contratoEliminar.FUA = vista.FUA; contratoEliminar.UUA = vista.UUA; var contratoBR = new ContratoFSLBR(); //SC_0008 SeguridadBO seguridadBO = new SeguridadBO(Guid.Empty, new UsuarioBO { Id = this.vista.UsuarioID }, new AdscripcionBO { Departamento = new DepartamentoBO(), Sucursal = new SucursalBO(), UnidadOperativa = new UnidadOperativaBO { Id = this.vista.UnidadAdscripcionID } }); //END SC_0008 contratoBR.BorrarCompleto(dataContext, contratoEliminar, seguridadBO); vista.MostrarMensaje("El contrato ha sido eliminado exitosamente.", ETipoMensajeIU.EXITO); vista.RegresarAConsultar(); } catch (Exception ex) { vista.MostrarMensaje("Inconsistencias al intentar eliminar el contrato", ETipoMensajeIU.ERROR, nombreClase + ".EliminarContrato: " + ex.Message); } }
/// <summary> /// Constructor del presentador /// </summary> /// <param name="vistaActual">Vista Actual</param> public ConsultarContratosFSLPRE(IConsultarContratosFSLVIS vistaActual, ucHerramientasFSLPRE herramientas) { try { if (vistaActual != null) { vista = vistaActual; } else { throw new Exception("La vista proprocionada no puede ser null."); } HerramientasPRE = herramientas; dataContext = Facade.SDNI.BR.FacadeBR.ObtenerConexion(); Controlador = new ContratoFSLBR(); } catch (Exception ex) { vista.MostrarMensaje("Inconsistencias en la construcción del presentador", ETipoMensajeIU.ERROR, nombreClase + ".ConsultarContratosFSLPRE: " + ex.Message); } }
/// <summary> /// Impresion de los Anexos del Contrato /// </summary> public void ImprimirAnexosContrato() { try { if (vista.ContratoID != null) { if (vista.Contrato != null) { var contratoBR = new ContratoFSLBR(); var DatosReporte = new Dictionary <string, object> { { "CU018", contratoBR.ObtenerDatosContratoMaestro(dataContext, vista.Contrato) }, { "CU019", contratoBR.ObtenerDatosAnexoA(dataContext, vista.ContratoID.Value) }, { "CU021", contratoBR.ObtenerDatosAnexoC(dataContext, vista.Contrato) } }; vista.EstablecerPaqueteNavegacionImprimir("CU022", DatosReporte); vista.IrAImprimir(); } else { vista.MostrarMensaje("No se cuenta con información necesaria para imprimir los anexos del contrato", ETipoMensajeIU.ADVERTENCIA); } } else { vista.MostrarMensaje("No se cuenta con el Identificador del Contrato", ETipoMensajeIU.ADVERTENCIA); } } catch (Exception ex) { vista.MostrarMensaje("Inconsistencias al Intentar desplegar los Anexos del Contrato", ETipoMensajeIU.ERROR, nombreClase + ".ImprimirAnexosContrato: " + ex.Message); } }
/// <summary> /// Determina si es posible generar el pago adicional del contrato /// </summary> /// <returns>Devuelve la inconsitencia encontrada para genera el pago adicional</returns> private string ValidarPagoAdicional() { if (this.vista.TipoContrato == null) { return("No se ha seleccionado del Departamento del Contrato"); } if (this.vista.SucursalID == null) { return("No se ha seleccionado la Sucursal del Contrato"); } if (String.IsNullOrEmpty(this.vista.FolioContrato)) { return("No se ha introducido el Folio del Contrato"); } ContratoBO contratoBo = null; List <ContratoBO> contratos = new List <ContratoBO>(); switch (vista.TipoContrato) { case ETipoContrato.RD: contratoBo = new ContratoRDBO { NumeroContrato = vista.FolioContrato, Sucursal = new SucursalBO { Id = vista.SucursalID }, Estatus = EEstatusContrato.EnCurso }; var contratosRD = new ContratoRDBR().Consultar(this.dctx, (ContratoRDBO)contratoBo); contratos.AddRange(contratosRD); break; case ETipoContrato.FSL: contratoBo = new ContratoFSLBO { NumeroContrato = vista.FolioContrato, Sucursal = new SucursalBO { Id = vista.SucursalID }, Estatus = EEstatusContrato.EnCurso }; var contratosFsl = new ContratoFSLBR().Consultar(this.dctx, (ContratoFSLBO)contratoBo); contratos.AddRange(contratosFsl); break; case ETipoContrato.CM: case ETipoContrato.SD: contratoBo = new ContratoManttoBO { NumeroContrato = vista.FolioContrato, Tipo = vista.TipoContrato, Sucursal = new SucursalBO { Id = vista.SucursalID }, Estatus = EEstatusContrato.EnCurso }; var contratosMantto = new ContratoManttoBR().Consultar(this.dctx, (ContratoManttoBO)contratoBo); contratos.AddRange(contratosMantto); break; } if (!contratos.Any()) { return("No se encontró el Contrato solicitado"); } switch (vista.TipoContrato) { case ETipoContrato.RD: var contratoRD = contratos.FirstOrDefault() as ContratoRDBO; if (!String.IsNullOrEmpty(TiempoMaximoRecepcionRD)) { if (DateTime.Now < contratoRD.FechaPromesaDevolucion.Value.AddHours(int.Parse(TiempoMaximoRecepcionRD))) { return("Deben pasar al menos " + TiempoMaximoRecepcionRD + " hrs para poder generar un pago adicional después de la Fecha de Promesa de Devolución."); } } break; } this.vista.ContratoID = contratos.FirstOrDefault().ContratoID; PagoUnidadContratoBO pagoBo = new PagoUnidadContratoBOF { ReferenciaContrato = new ReferenciaContratoBO() { ReferenciaContratoID = this.vista.ContratoID } }; PagoUnidadContratoBR pagoBr = new PagoUnidadContratoBR(); var pagos = pagoBr.Consultar(this.dctx, (PagoUnidadContratoBO)pagoBo); if (!pagos.Any()) { return("No se han generado Pagos para el Contrato"); } var ultimoPago = pagos.Last(x => x.Activo.Value); if (ultimoPago.EnviadoFacturacion != null && !ultimoPago.EnviadoFacturacion.Value) { return("No se ha Facturado el Último Pago Activo del Contrato"); } this.ultimoPagoContrato = ultimoPago; return(null); }
/// <summary> /// Metodo que genera el pago adicional /// </summary> public void GenerarPagoAdicional() { try { string validacion = this.ValidarPagoAdicional(); if (!String.IsNullOrEmpty(validacion)) { this.vista.MostrarMensaje("No se puede generar el pago Adicional: " + validacion, ETipoMensajeIU.INFORMACION); return; } ContratoBO contratoBo = null; IGeneradorPagosBR generadorPagos = null; SeguridadBO seguridadBo = this.CrearObjetoSeguridad(); List <ContratoBO> contratos = new List <ContratoBO>(); switch (vista.TipoContrato) { case ETipoContrato.RD: contratoBo = new ContratoRDBO { ContratoID = this.vista.ContratoID }; var contratosRd = new ContratoRDBR().ConsultarCompleto(this.dctx, (ContratoRDBO)contratoBo, false); contratos.AddRange(contratosRd); generadorPagos = new GeneradorPagoRDBR(); break; case ETipoContrato.FSL: contratoBo = new ContratoFSLBO { ContratoID = this.vista.ContratoID }; var contratosFsl = new ContratoFSLBR().ConsultarCompleto(this.dctx, (ContratoFSLBO)contratoBo); contratos.AddRange(contratosFsl); generadorPagos = new GeneradorPagosFSLBR(); break; case ETipoContrato.CM: case ETipoContrato.SD: contratoBo = new ContratoManttoBO { ContratoID = this.vista.ContratoID }; var contratosMantto = new ContratoManttoBR().ConsultarCompleto(this.dctx, (ContratoManttoBO)contratoBo, true, false); contratos.AddRange(contratosMantto); generadorPagos = new GeneradorPagosManttoBR(); break; } if (generadorPagos == null) { throw new Exception("No se pudo determinar el Tipo del Pago a Generar."); } generadorPagos.GenerarPagoAdicional(this.dctx, contratos.First(), (ultimoPagoContrato.NumeroPago.Value + 1), seguridadBo, false, true); PagoUnidadContratoBO pagoBo = new PagoUnidadContratoBOF { ReferenciaContrato = new ReferenciaContratoBO() { ReferenciaContratoID = this.vista.ContratoID } }; PagoUnidadContratoBR pagoBr = new PagoUnidadContratoBR(); var pagos = pagoBr.Consultar(this.dctx, (PagoUnidadContratoBO)pagoBo); this.Inicializar(); this.vista.MostrarMensaje("El pago " + pagos.Last().NumeroPago.ToString() + " con Fecha " + pagos.Last().FechaVencimiento.Value.ToShortDateString() + " se ha Creado con Éxito.", ETipoMensajeIU.EXITO); } catch (Exception ex) { this.vista.MostrarMensaje("Error al generar el pago Adicional", ETipoMensajeIU.ERROR, NombreClase + ".GenerarPagoAdicional: " + ex.GetBaseException().Message); } }
/// <summary> /// Obtiene el Contrato que sera Editado /// </summary> private void ConsultarCompleto() { ContratoBO contrato = new ContratoProxyBO() { ContratoID = this.vista.ContratoId }; ContratoBO contratoCompleto = null; switch (this.vista.TipoContrato) { case ETipoContrato.RD: ContratoRDBR controladorRD = new ContratoRDBR(); var contratoRd = new ContratoRDBO((ContratoBO)contrato); var contratosRd = controladorRD.ConsultarCompleto(this.dataContext, contratoRd); contratoCompleto = contratosRd.FirstOrDefault(); this.controlador = new ContratoRDBR(); this.vista.ObjetoAnterior = contratoCompleto != null?controladorRD.ConsultarCompleto(this.dataContext, contratoRd).FirstOrDefault() : null; break; case ETipoContrato.FSL: ContratoFSLBR controladorFsl = new ContratoFSLBR(); var contratoFsl = new ContratoFSLBO() { ContratoID = this.vista.ContratoId }; var contratosFsl = controladorFsl.ConsultarCompleto(this.dataContext, contratoFsl); contratoCompleto = contratosFsl.FirstOrDefault(); this.controlador = new ContratoFSLBR(); this.vista.ObjetoAnterior = contratoCompleto != null?controladorFsl.ConsultarCompleto(this.dataContext, contratoFsl).FirstOrDefault() : null; break; case ETipoContrato.CM: case ETipoContrato.SD: ContratoManttoBR controladorMantto = new ContratoManttoBR(); var contratoMantto = new ContratoManttoBO((ContratoBO)contrato); var contratosMantto = controladorMantto.ConsultarCompleto(this.dataContext, contratoMantto, false); contratoCompleto = contratosMantto.FirstOrDefault(); this.controlador = new ContratoManttoBR(); this.vista.ObjetoAnterior = contratoCompleto != null?controladorMantto.ConsultarCompleto(this.dataContext, contratoMantto, false).FirstOrDefault() : null; break; default: contratoCompleto = null; break; } if (contratoCompleto != null) { this.vista.ContratoId = contratoCompleto.ContratoID; this.vista.NumeroContrato = contratoCompleto.NumeroContrato; this.vista.SucursalIdAntigua = contratoCompleto.Sucursal.Id; this.vista.SucursalNombreAntigua = contratoCompleto.Sucursal.Nombre; this.vista.TipoContrato = contratoCompleto.Tipo; this.vista.ContratoConsultado = contratoCompleto; } else { throw new Exception(nombreClase + ".ConsultarCompleto: No se encontro el Contrato solicitado"); } }
/// <summary> /// Actualiza el cierre de un contrato Full Service Leasing /// </summary> public void CerrarContrato() { Guid firma = Guid.NewGuid(); try { string resultado = finalizacionPRE.ValidarDatosCierre(); if (!string.IsNullOrEmpty(resultado)) { vista.MostrarMensaje(resultado, ETipoMensajeIU.INFORMACION); return; } } catch (Exception ex) { throw new Exception(nombreClase + ".CerrarContrato:" + ex.Message); } try { #region Transaccion dataContext.SetCurrentProvider("Outsourcing"); dataContext.OpenConnection(firma); dataContext.BeginTransaction(firma); #endregion ContratoFSLBO anterior = vista.UltimoObjeto; ContratoFSLBO actual = InterfazUsuarioADatos(); actual.FC = anterior.FC; actual.UC = anterior.UC; actual.Estatus = EEstatusContrato.EnCurso; var contratoBR = new ContratoFSLBR(); var seguridadBO = new SeguridadBO(Guid.Empty, new UsuarioBO { Id = vista.UsuarioID }, new AdscripcionBO { Departamento = new DepartamentoBO(), Sucursal = new SucursalBO(), UnidadOperativa = new UnidadOperativaBO { Id = vista.UnidadAdscripcionID } }); // Determinar si es Cierre anticipado bool cierreAnticipado = actual.CierreAnticipado(); // Terminar el Contrato contratoBR.Terminar(dataContext, actual, anterior, seguridadBO, cierreAnticipado); if (cierreAnticipado) { // Cancelar los pagos restantes var pagosFaltantes = ObtenerPagos(anterior, (DateTime)actual.CierreContrato.Fecha); var pagoBR = new PagoUnidadContratoBR(); foreach (var faltante in pagosFaltantes) { //SC0026, Generación de clase concreta segun el tipo de contrato var cancelado = new PagoUnidadContratoFSLBO(faltante) { Activo = false }; cancelado.Auditoria.FUA = vista.FUA; cancelado.Auditoria.UUA = vista.UUA; pagoBR.Actualizar(dataContext, cancelado, faltante, seguridadBO); } } var generadorPagoBR = new GeneradorPagosFSLBR(); // Calcular Ultimo Pago var pago = UltimoPago(anterior.ContratoID); var nuevoPago = ++pago; // Generar los pagos adicionales generadorPagoBR.GenerarPagoAdicional(dataContext, actual, nuevoPago, seguridadBO, true, true); dataContext.CommitTransaction(firma); RegresarADetalles(); } catch (Exception ex) { dataContext.RollbackTransaction(firma); throw new Exception(nombreClase + ".CerrarContrato:" + ex.Message); } finally { if (dataContext.ConnectionState == ConnectionState.Open) { dataContext.CloseConnection(firma); } } }