/// <summary> /// Constructor por defecto de la Consulta /// </summary> /// <param name="vista">Vista de la Consulta</param> public ConsultarPagosNoFacturadosPRE(IConsultarPagosNoFacturadosVIS vista) { if (vista == null) { throw new ArgumentNullException("vista"); } Vista = vista; dataContext = FacadeBR.ObtenerConexion(); Controlador = new PagoUnidadContratoBR(); ControladorPSL = new PagoContratoPSLBR(); }
public PagosMasterPRE(IPagosMasterVIS vista) { if (vista == null) { throw new ArgumentNullException("vista"); } Vista = vista; dataContext = FacadeBR.ObtenerConexion(); Controlador = new PagoUnidadContratoBR(); ControladorPSL = new PagoContratoPSLBR(); }
/// <summary> /// Constructor por default /// </summary> /// <param name="view">Vista a la que se asociada el presentador</param> public ucInformacionCabeceraPRE(IucInformacionCabeceraVIS view) { try { this.vista = view; this.dctx = FacadeBR.ObtenerConexion(); this.pagoUnidadContratoBR = new PagoUnidadContratoBR(); this.formaPagoFacturacionBR = new FormaPagoFacturacionBR(); } catch (Exception ex) { this.vista.MostrarMensaje("Inconsistencia en los parámetros de configuración", ETipoMensajeIU.ERROR, this.nombreClase + ".ucContratoManttoPRE:" + ex.Message); } }
/// <summary> /// Constructor por default /// </summary> /// <param name="view">Vista a la que se asociada el presentador</param> public ucCostosAdicionalesFacturaContratoPRE(IucCostosAdicionalesFacturaContratoVIS view) { try { this.vista = view; this.dctx = FacadeBR.ObtenerConexion(); this.pagoUnidadContratoBR = new PagoUnidadContratoBR(); this.tipoRenglonFacturacionBR = new TipoRenglonFacturacionBR(); } catch (Exception ex) { this.vista.MostrarMensaje("Inconsistencia en los parámetros de configuración", ETipoMensajeIU.ERROR, this.nombreClase + ".ucContratoManttoPRE:" + ex.Message); } }
//PagoContratoPSLBR pagosBr; #endregion #region Constructores /// <summary> /// Constructor que recibe la vista sobre la que actuará el presentador /// </summary> /// <param name="vistaActual">vista sobre la que actuará el presentador</param> /// <param name="herramientas">Presentador de la barra de herramientas</param> /// /// <param name="infoContrato">Presentador de la Información General</param> /// <param name="vistadg">Vista de los datos generales de la unidad</param> /// <param name="vistaea">Vista de los datos de los equipos aliados</param> public CerrarContratoPSLPRE(ICerrarContratoPSLVIS vistaActual, IucHerramientasPSLVIS vistaHerramientas, IucResumenContratoPSLVIS vistaInfoContrato, IucCargosAdicionalesCierrePSLVIS viewCA) { try { this.vista = vistaActual; this.presentadorResumen = new ucResumenContratoPSLPRE(vistaInfoContrato); this.presentadorHerramientas = new ucHerramientasPSLPRE(vistaHerramientas); this.presentadorCargosA = new ucCargosAdicionalesCierrePSLPRE(viewCA); this.controlador = new ContratoPSLBR(); this.pagosBr = new PagoUnidadContratoBR(); this.dctx = FacadeBR.ObtenerConexion(); } catch (Exception ex) { this.vista.MostrarMensaje("Inconsistencia en los parámetros de configuración", ETipoMensajeIU.ERROR, this.nombreClase + ".CerrarContratoRDPRE:" + ex.Message); } }
private short UltimoPago(int?contratoId) { var pagoBR = new PagoUnidadContratoBR(); //SC0026, Utilización de clase concreta segun el tipo de contrato var pago = new PagoUnidadContratoBOF { ReferenciaContrato = new ReferenciaContratoBO { ReferenciaContratoID = contratoId } }; var pagos = pagoBR.Consultar(dataContext, pago); var max = pagos.Max(p => p.NumeroPago); return(max ?? 0); }
/// <summary> /// Valida los campos necesarios para poder realizar el cambio de sucursal /// </summary> /// <returns>Cadena que contiene los elementos que faltan por completar</returns> private string ValidarCampos() { String s = String.Empty; if (this.vista.SucursalIdNueva == null) { s = String.IsNullOrEmpty(s) ? "SucursalId" : ", SucursalId"; } if (this.vista.SucursalNombreNueva == null) { s = String.IsNullOrEmpty(s) ? "Nombre Sucursal" : ", Nombre Sucursal"; } if (!String.IsNullOrEmpty(s)) { return("Los siguientes campos no pueden estar vacios: " + s); } if (this.vista.SucursalIdAntigua == this.vista.SucursalIdNueva) { return("El contrato ya pertenece a la Sucursal de " + this.vista.SucursalNombreAntigua + ", seleccione otra Sucursal"); } PagoUnidadContratoBR pagoBr = new PagoUnidadContratoBR(); PagoUnidadContratoBOF pago = new PagoUnidadContratoBOF() { ReferenciaContrato = new ReferenciaContratoBO() { ReferenciaContratoID = this.vista.ContratoId }, EnviadoFacturacion = false, Activo = true }; DateTime fechaHoy = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 23, 59, 59); var listaPagosPendientes = pagoBr.Consultar(this.dataContext, pago); if (listaPagosPendientes.Any()) { if (listaPagosPendientes.Any(x => x.FechaVencimiento < fechaHoy)) { return("Aún existen pagos pendientes por enviar a Facturar del Día de Hoy. Envie los pagos a facturar para poder cambiar el Contrato de Sucursal"); } } return(String.Empty); }
public CerrarContratoManttoPRE(ICerrarContratoManttoVIS vistaActual, IucHerramientasManttoVIS vistaHerramientas, IucContratoManttoVIS vistaContrato, IucLineaContratoManttoVIS vistaLinea) { try { this.vista = vistaActual; this.presentadorContrato = new ucContratoManttoPRE(vistaContrato, vistaLinea); this.presentadorHerramientas = new ucHerramientasManttoPRE(vistaHerramientas); this.controlador = new ContratoManttoBR(); this.pagoCtrl = new PagoUnidadContratoBR(); this.generadorPagos = new GeneradorPagosManttoBR(); this.dctx = FacadeBR.ObtenerConexion(); } catch (Exception ex) { this.vista.MostrarMensaje("Inconsistencia en los parámetros de configuración", ETipoMensajeIU.ERROR, this.nombreClase + ".CerrarContratoManttoPRE:" + ex.Message); } }
/// <summary> /// Constructor que recibe la vista sobre la que actuará el presentador /// </summary> /// <param name="vistaActual">vista sobre la que actuará el presentador</param> /// <param name="herramientas">Presentador de la barra de herramientas</param> /// /// <param name="infoContrato">Presentador de la Informacion General</param> /// <param name="vistadg">Vista de los datos generales de la unidad</param> /// <param name="vistaea">Vista de los datos de los equipos aliados</param> public CerrarContratoRDPRE(ICerrarContratoRDVIS vistaActual, IucHerramientasRDVIS vistaHerramientas, IucResumenContratoRDVIS vistaInfoContrato, IucDatosGeneralesElementoVIS vistadg, IucEquiposAliadosUnidadVIS vistaea) { try { this.vista = vistaActual; this.presentadorResumen = new ucResumenContratoRDPRE(vistaInfoContrato); this.presentadorDG = new ucDatosGeneralesElementoPRE(vistadg); this.presentadorEA = new ucEquiposAliadosUnidadPRE(vistaea); this.presentadorHerramientas = new ucHerramientasRDPRE(vistaHerramientas); this.controlador = new ContratoRDBR(); this.pagosBr = new PagoUnidadContratoBR(); this.dctx = FacadeBR.ObtenerConexion(); } catch (Exception ex) { this.vista.MostrarMensaje("Inconsistencia en los parámetros de configuración", ETipoMensajeIU.ERROR, this.nombreClase + ".CerrarContratoRDPRE:" + ex.Message); } }
private List <PagoUnidadContratoFSLBO> ObtenerPagos(ContratoFSLBO contrato, DateTime FechaCierre) { var pagoBR = new PagoUnidadContratoBR(); var pago = new PagoUnidadContratoBOF { ReferenciaContrato = new ReferenciaContratoBO { ReferenciaContratoID = contrato.ContratoID, UnidadOperativa = new UnidadOperativaBO { Id = vista.UnidadOperativaContratoID } }, Facturado = false, FechaVencimientoInicial = FechaCierre, Sucursales = new List <SucursalBO> { contrato.Sucursal }, }; var pagos = pagoBR.ConsultarFiltroSinCuentas(dataContext, pago, true); return(pagos.Cast <PagoUnidadContratoFSLBO>().ToList()); }
/// <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> /// Realiza la impresión del Historico de Pagos para una referencia de Contrato Seleccionada /// </summary> public void ImprimirPagos() { try { var numeroContrato = Vista.NumeroContrato; // Validar la Informacion de la Referencia de Contrato Seleccionada var msg = ValidarDatos(numeroContrato); if (!string.IsNullOrEmpty(msg)) { Vista.MostrarMensaje(msg, ETipoMensajeIU.ADVERTENCIA); return; } // Validar la existencia de folio del contrato var contratoBR = new ContratoBR(); var contratos = contratoBR.Consultar(dataContext, new ContratoProxyBO { NumeroContrato = numeroContrato.ToUpper() }); if (!contratos.Any()) { Vista.MostrarMensaje("No existe un Contrato con el Folio proporcionado.", ETipoMensajeIU.ADVERTENCIA); return; } var referencia = contratos.First(); var usuario = new UsuarioBO { Id = Vista.UsuarioId }; var unidadOperativa = new UnidadOperativaBO { Id = Vista.UnidadOperativaId }; var sucursales = ConsultarSucursales(usuario, unidadOperativa); // Validar que el contrato pertenezca a una sucursal del usuario if (sucursales.All(x => x.Id != referencia.Sucursal.Id)) { Vista.MostrarMensaje("El Folio del Contrato proporcionado pertence a una sucursal no asignada al usuario.", ETipoMensajeIU.ADVERTENCIA); return; } // Validar la existencia de Pagos del Contrato int conteo = 0; ReferenciaContratoBO referenciaContrato = new ReferenciaContratoBO { ReferenciaContratoID = referencia.ContratoID, UnidadOperativa = unidadOperativa }; switch (referencia.Tipo) { case ETipoContrato.RO: case ETipoContrato.RE: case ETipoContrato.ROC: PagoContratoPSLBOF pagoPsl = new PagoContratoPSLBOF() { ReferenciaContrato = referenciaContrato, Sucursales = sucursales }; PagoContratoPSLBR pagosPslBR = new PagoContratoPSLBR(); conteo = pagosPslBR.ContarPagos(dataContext, pagoPsl); break; default: PagoUnidadContratoBOF pago = new PagoUnidadContratoBOF { ReferenciaContrato = referenciaContrato, Sucursales = sucursales }; PagoUnidadContratoBR pagosBR = new PagoUnidadContratoBR(); conteo = pagosBR.ContarPagos(dataContext, pago); break; } if (conteo == 0) { Vista.MostrarMensaje("El contrato no cuenta con pagos generados.", ETipoMensajeIU.ADVERTENCIA); return; } //Obtener Datos de Reporte var adscripcion = new AdscripcionBO { UnidadOperativa = unidadOperativa }; var seguridad = new SeguridadBO(Guid.Empty, usuario, adscripcion); var imprmirPagosBR = new ImprimirPagosBR(); var datosReporte = imprmirPagosBR.ObtenerDatosHistoricoPagos(dataContext, referenciaContrato, unidadOperativa, seguridad, this.Vista.URLLogoEmpresa); Vista.EstablecerPaqueteNavegacionImprimir(codigoImprimirHistorico, datosReporte); Vista.IrAImprimirHistorico(); } catch (Exception ex) { var strMetodo = new StackFrame().GetMethod().Name; var strMsg = string.Format("{0}.{1}: {2}", nombreClase, strMetodo, ex.Message); Vista.MostrarMensaje("Inconsistencias al Desplegar los Pagos del Contrato", ETipoMensajeIU.ERROR, strMsg); } }
/// <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); } } }
/// <summary> /// Decide que controlador usar para consultar pagos /// </summary> private List <PagoUnidadContratoBO> ConsultarPagos(Int32?pagoId, Int32?referenciaContratoId, Int32?unidadId, ETipoContrato?tipoContrato, Boolean esCompleto) { var listaPagos = new List <PagoUnidadContratoBO>(); PagoUnidadContratoBR pagoBr = null; PagoUnidadContratoBO pago = new PagoUnidadContratoBOF(); switch (tipoContrato) { case ETipoContrato.FSL: pagoBr = new PagoUnidadContratoFSLBR(); pago = new PagoUnidadContratoFSLBO() { Tarifa = new TarifaPagoEquipoBO() }; break; case ETipoContrato.RD: pagoBr = new PagoUnidadContratoRDBR(); pago = new PagoUnidadContratoRDBO() { Tarifa = new TarifaPagoEquipoBO() }; break; case ETipoContrato.CM: case ETipoContrato.SD: pagoBr = new PagoUnidadContratoBR(); pago = new PagoUnidadContratoManttoBO(tipoContrato.Value) { Tarifa = new TarifaPagoEquipoBO() }; break; } if (pagoId != null) { pago.PagoID = pagoId; } if (referenciaContratoId != null) { pago.ReferenciaContrato = new ReferenciaContratoBO() { ReferenciaContratoID = referenciaContratoId } } ; if (unidadId != null) { pago.Unidad = new UnidadBO() { UnidadID = unidadId } } ; switch (tipoContrato) { case ETipoContrato.FSL: listaPagos.AddRange(esCompleto ? ((PagoUnidadContratoFSLBR)pagoBr).ConsultarCompleto(this.dataContext, (PagoUnidadContratoFSLBO)pago, true) : ((PagoUnidadContratoFSLBR)pagoBr).Consultar(this.dataContext, (PagoUnidadContratoFSLBO)pago)); break; case ETipoContrato.RD: listaPagos.AddRange(esCompleto ? ((PagoUnidadContratoRDBR)pagoBr).ConsultarCompleto(this.dataContext, (PagoUnidadContratoRDBO)pago) : ((PagoUnidadContratoRDBR)pagoBr).Consultar(this.dataContext, (PagoUnidadContratoRDBO)pago)); break; case ETipoContrato.CM: case ETipoContrato.SD: listaPagos.AddRange(esCompleto ? pagoBr.ConsultarCompleto(this.dataContext, pago) : pagoBr.Consultar(this.dataContext, pago)); break; } return(listaPagos); }